Здравствуйте, vaa, Вы писали:
vaa>Немного не то, тут получается отдельная структура, а как в структуру положить функцию(как поле)?
Не знаю F#, поэтому не уверен, что правильно понял фрагмент кода, но положить "интерфейс" в структуру в расте можно. Или как дженерик или как трейт-объект:
trait Save {
fn save(&self);
}
struct Db1<T: Save> {
save: T,
}
struct Db2 {
save: Box<dyn Save>,
}
struct SomeSaveImpl {}
impl Save for SomeSaveImpl {
fn save(&self) {
println!("save");
}
}
fn main() {
let db1 = Db1 {
save: SomeSaveImpl {},
};
db1.save.save();
let db2 = Db2 {
save: Box::new(SomeSaveImpl {}),
};
db2.save.save();
}
Можно и не объявлять трейт, а тоже использовать функцию.