LINUX.ORG.RU

История изменений

Исправление 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,
    }
}
https://is.gd/Ku5wAQ

Правда не получится использовать (логичный) 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,
    }
}
https://is.gd/Ku5wAQ

Исходная версия 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,
    }
}
https://is.gd/Ku5wAQ

Правда не получится использовать (логичный) Default трейт.