Метод sum
Метод sum проходит по всем элементам итератора,
складывает их между собой и возвращает итоговую сумму.
Он не принимает параметров, а тип возвращаемого значения
определяется контекстом: метод можно собрать в число,
строку или любую другую структуру, реализующую трейт
Sum. Чаще всего метод применяют для чисел и строк.
Синтаксис
iter.sum::<T>()
Пример
Давайте сложим все числа вектора
vec![1, 2, 3, 4, 5]:
fn main()
{
let res: i32 = vec![1, 2, 3, 4, 5].iter().sum();
println!("{}", res);
}
Результат выполнения кода:
15
Пример
Давайте сложим все числа, полученные после умножения элементов вектора на два:
fn main()
{
let res: i32 = vec![1, 2, 3, 4, 5].iter().map(|x| x * 2).sum();
println!("{}", res);
}
Результат выполнения кода:
30
Пример
Метод sum умеет складывать и строки. Давайте
соберём одну строку из набора строковых срезов:
fn main()
{
let res: String = vec!["a", "b", "c", "d", "e"].iter().sum();
println!("{}", res);
}
Результат выполнения кода:
"abcde"
Пример
Если итератор пуст, метод sum вернёт
нулевое значение для выбранного типа:
fn main()
{
let res: i32 = Vec::<i32>::new().iter().sum();
println!("{}", res);
}
Результат выполнения кода:
0