Я немного новичок в Rust ie, поэтому, пожалуйста, go полегче!
Я пытаюсь написать простое приложение, которое генерирует поддельные табличные данные на основе простого списка типов столбцов.
Например, есть функции, которые создают поддельные имена и возраст:
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
должна иметь тип stati c, но я не уверен, как я могу продолжить?
Следует ли инкапсулировать String
и i64
в общую структуру c? Или можно как-нибудь Box
? Еще раз извиняюсь за расплывчатый вопрос - указатель (без каламбура) в правильном направлении будет оценен!