use dynarg::Args;
fn draw(args: &mut Args) {
if let Ok(greeting) = args.poke_string("greeting") {
println!("{} world", greeting);
}
if let Ok(arg) = args.poke::<Fruit>("fruit_to_draw") {
println!("I will draw {}!", arg.0);
if let Ok(size) = args.poke::<f32>("size") {
println!("with a size of {}", size);
}
} else {
panic!("Nothing to draw D:");
}
}
struct Fruit<'a>(&'a str);
fn main() {
let mut args = Args::with_capacity(100);
let apple = Fruit("apple");
args.insert("fruit_to_draw", Box::new(apple));
args.insert("size", Box::new(5.2f32));
let greeting = String::from("henlo");
args.insert_string("greeting", greeting);
draw(&mut args);
if !args.all_used() {
println!("Warning! I didn't use all my arguments D:");
}
args.reset_used_status();
}