У меня есть фрагмент строки ASCII, и мне нужно вычислить сумму всех символов, когда они рассматриваются как байты.
let word = "Hello, World";
let sum = word.as_bytes().iter().sum::<u8>();
Мне нужно указать тип для суммы, иначе Rust не скомпилируется. Проблема в том, что u8
слишком маленький тип, и если сумма переполняется, программа запаникует.
Я бы хотел этого избежать, но не могу найти способ указать больший тип, например u16
или u32
, например, при использовании sum()
.
Я могу попытаться использовать fold()
, но мне было интересно, есть ли способ использовать sum()
, указав другой тип.
let sum = word.as_bytes().iter().fold(0u32, |acc, x| acc + *x as u32);