Сообщение Re[3]: Интерфейс и несколько реализаций от 14.11.2022 10:34
Изменено 14.11.2022 10:34 DarkEld3r
Re[3]: Интерфейс и несколько реализаций
Здравствуйте, vaa, Вы писали:
vaa>Немного не то, тут получается отдельная структура, а как в структуру положить функцию(как поле)?
Не знаю F#, поэтому не уверен, что правильно понял фрагмент кода, но положить "интерфейс" в структуру в расте можно. Или как дженерик или как трейт-объект:
Можно и не объявлять трейт, а тоже использовать функцию:
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();
}Можно и не объявлять трейт, а тоже использовать функцию:
Re[3]: Интерфейс и несколько реализаций
Здравствуйте, vaa, Вы писали:
vaa>Немного не то, тут получается отдельная структура, а как в структуру положить функцию(как поле)?
Не знаю F#, поэтому не уверен, что правильно понял фрагмент кода, но положить "интерфейс" в структуру в расте можно. Или как дженерик или как трейт-объект:
Можно и не объявлять трейт, а тоже использовать функцию.
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();
}Можно и не объявлять трейт, а тоже использовать функцию.