我是Rust的新手,所以请对我好一点!
我正在尝试编写一个简单的应用程序,该应用程序根据简单的列类型列表生成伪造的表格数据。
例如,具有创建假名称和年龄的功能:
fn name() -> String {
FirstName(EN).fake()
}
fn age() -> i64 {
rand::thread_rng().gen_range(0, 100)
}
但是,当尝试使用这些函数根据最终将动态提供的类型列表生成数据时,我在类型系统上苦苦挣扎:
pub fn generate() {
let generators = vec!["age", "name"];
// generate each row
for _ in 1..10 {
// generate a value of the given type
for gen_type in generators.iter() {
// error[E0308]: match arms have incompatible types
let generator = match gen_type.as_ref() {
"age" => age,
"name" => name,
_ => println!("Error"),
};
let out = generator();
// eventually I'll want to add some further logic here
println!("{}", out);
}
}
}
我了解问题,generator
变量需要具有静态类型,但是不确定如何继续?
我应该将String
和i64
封装在通用结构中吗?还是可以以某种方式使用Box
?再次,对这个模糊的问题表示歉意-朝正确方向的指针(无双关语)将不胜感激!
总之,您想要多态性。