LINUX.ORG.RU

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

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

Лол. Нахуа в языке системного программирования говно вроде этого for_each, а также всяких map, filter и иже с ними?

Ты забыл объяснить, почему все эти комбинаторы — говно.
Нужны они (и остальные замечательные и полезные комбинаторы) чтобы работать с итераторами. Итератор выдаёт итемы типа Option<T>: или Some(T), или None. Чтобы не пердолиться в цикле (псевдокод):

let mut v = Vec::new();
for i in <Iterator> {
    match i {
        Some(T) => v.push(func(i)),
        None => break
    }
}

используем элегантный map, который выполняет матчинг за нас:

let v: Vec<T> = <Iterator>.map(|i| func(i)).collect(); // здесь вдобавок вектор `v` можно создать неизменяемым, в отличие от ручного пердолинга в первом варианте

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

Лол. Нахуа в языке системного программирования говно вроде этого for_each, а также всяких map, filter и иже с ними?

Ты забыл объяснить, почему все эти комбинаторы — говно.
Нужны они (и остальные замечательные и полезные комбинаторы) чтобы работать с итераторами. Итератор выдаёт итемы типа Option<T>: или Some(T), или None. Чтобы не пердолиться в цикле (псевдокод):

let mut v = Vec::new();
for i in <Iterator> {
    match i {
        Some(T) => v.push(func(i)),
        None => break
    }
}

используем элегантный map, который выполняет матчинг за нас:

let mut v: Vec<T> = <Iterator>.map(|i| func(i)).collect();

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

Лол. Нахуа в языке системного программирования говно вроде этого for_each, а также всяких map, filter и иже с ними?

Ты забыл объяснить, почему все эти комбинаторы — говно.
Нужны они (и остальные замечательные и полезные комбинаторы) чтобы работать с итераторами. Итератор выдаёт итемы типа Option<T>: или Some(T), или None. Чтобы не пердолиться в цикле (псевдокод):

let mut v = Vec::new();
for i in <Iterator> {
    match i {
        Some(T) => v.push(func(T)),
        None => break
    }
}

используем элегантный map, который выполняет матчинг за нас:

let mut v: Vec<T> = <Iterator>.map(|i| func(i)).collect();