LINUX.ORG.RU

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

Исправление vertexua, (текущая версия) :

Вторая версия. Я заметил что там инициализация еще нужна. Но у тебя кривоватая какая-то.

https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&am...

fn make_sequencer<F, T>(init: T, next: F) -> impl FnMut() -> T
where
    F: Fn(T) -> T,
    T: Clone,
{
    let mut value = init;
    move || {
        value = next(value.clone());
        value.clone()
    }
}

fn main() {
    let mut seq = make_sequencer(0, |x| x + 1);
    for _ in 0..5 {
        println!("{:?}", seq());
    }
}

Вот из этого кода столько ассемблера

https://pastebin.com/ms7iafxk

;)

Исправление vertexua, :

Вторая версия. Я заметил что там инициализация еще нужна. Но у тебя кривоватая какая-то.

https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&am...

fn make_sequencer<F, T>(init: T, next: F) -> impl FnMut() -> T
where
    F: Fn(T) -> T,
    T: Clone,
{
    let mut value = init;
    move || {
        value = next(value.clone());
        value.clone()
    }
}

fn main() {
    let mut seq = make_sequencer(0, |x| x + 1);
    for _ in 0..5 {
        println!("{:?}", seq());
    }
}

Исходная версия vertexua, :

Вторая версия

https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&am...

fn make_sequencer<F, T>(init: T, next: F) -> impl FnMut() -> T
where
    F: Fn(T) -> T,
    T: Clone,
{
    let mut value = init;
    move || {
        value = next(value.clone());
        value.clone()
    }
}

fn main() {
    let mut seq = make_sequencer(0, |x| x + 1);
    for _ in 0..5 {
        println!("{:?}", seq());
    }
}

Я заметил что там инициализация еще нужна. Но у тебя кривоватая какая-то.