Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use std::collections::HashMap;
- use std::char;
- enum PerlType {
- Int(i64),
- String(String),
- Nil,
- }
- struct Wrap<T> {
- value: T,
- funs: HashMap<&'static str, fn(&mut T, &[PerlType]) -> PerlType>
- }
- fn wrap_string(value: String) -> Wrap<String> {
- let mut t = Wrap {
- value,
- funs: HashMap::new(),
- };
- t.funs.insert("len", |s, _args| {
- PerlType::Int(s.len() as i64)
- });
- t.funs.insert("push", |s, args| {
- let ch = match args.get(0) {
- Some(PerlType::Int(n)) => n,
- _ => return PerlType::Nil,
- };
- let ch = match char::from_u32(*ch as u32) {
- Some(ch) => ch,
- None => return PerlType::Nil,
- };
- s.push(ch);
- PerlType::Nil
- });
- t
- }
- fn main() {
- }
Add Comment
Please, Sign In to add comment