История изменений
Исправление DarkEld3r, (текущая версия) :
Так ведь у типов разное поведение
Ну это от контекста зависит. Я-то как раз хотел сделать дженерик-реализацию, но дать возможность её заменять.
Если стоит такое условие, то только по значению.
Мне тут интересную штуку подсказали:
fn validate<Data>(_: &Data) -> bool {
false
}
struct Container<Data, Validate: Fn(&Data) -> bool> {
data: Vec<Data>,
validate: Validate,
}
fn default_container<Data>() -> Container<Data, impl Fn(&Data) -> bool> {
Container {
data: Vec::new(),
validate: validate,
}
}
Правда не получится использовать (логичный) Default
трейт.
Исправление DarkEld3r, :
Так ведь у типов разное поведение
Ну это от контекста зависит. Я-то как раз хотел сделать дженерик-реализацию, но дать возможность её заменять.
Если стоит такое условие, то только по значению.
Мне тут интересную штуку подсказали:
fn validate<Data>(_: &Data) -> bool {
false
}
struct Container<Data, Validate: Fn(&Data) -> bool> {
data: Vec<Data>,
validate: Validate,
}
fn default_container<Data>() -> Container<Data, impl Fn(&Data) -> bool> {
Container {
data: Vec::new(),
validate: validate,
}
}
Исходная версия DarkEld3r, :
Так ведь у типов разное поведение
Ну это от контекста зависит. Я-то как раз хотел сделать дженерик-реализацию, но дать возможность её заменять.
Если стоит такое условие, то только по значению.
Мне тут интересную штуку подсказали:
fn validate<Data>(_: &Data) -> bool {
false
}
struct Container<Data, Validate: Fn(&Data) -> bool> {
data: Vec<Data>,
validate: Validate,
}
fn default_container<Data>() -> Container<Data, impl Fn(&Data) -> bool> {
Container {
data: Vec::new(),
validate: validate,
}
}
Правда не получится использовать (логичный) Default
трейт.