T1
Size: a a a
T1
H
YS
KR
YS
KR
AZ

trait MyAdd {
fn zero() -> Self;
fn add(self, rhs: Self) -> Self;
}
impl MyAdd for i32 {
fn zero() -> Self { 0 }
fn add(self, rhs: Self) -> Self { self + rhs }
}
fn generic_sum<T: MyAdd>(items: &[T]) {
items.iter().fold(MyAdd::zero(), |x, y| x.add(y));
}
generic_sum(&[1,2,3,4,5]);AZ
AZ
H
Stream<Update>, где Update — это тип-сумма, всё то, что может придти с Телеграма. Это довольно глубоковложенный тип.match update.from {
Some(from) => match from { match from.edit_date { ... } }
_ => ...
}
Ещё есть вариант с реактивным ФП. Т.к. у нас уже есть Stream<Update>, мы его можем просто комбинаторами дербанить. Но вот проблема в том, что сопоставления с образом на стримах нет, вернее есть, но использовать это крайне неудобно из-за сырости Rust.H
KR
T1
Stream<Update>, где Update — это тип-сумма, всё то, что может придти с Телеграма. Это довольно глубоковложенный тип.match update.from {
Some(from) => match from { match from.edit_date { ... } }
_ => ...
}
Ещё есть вариант с реактивным ФП. Т.к. у нас уже есть Stream<Update>, мы его можем просто комбинаторами дербанить. Но вот проблема в том, что сопоставления с образом на стримах нет, вернее есть, но использовать это крайне неудобно из-за сырости Rust.KR
Stream<Update>, где Update — это тип-сумма, всё то, что может придти с Телеграма. Это довольно глубоковложенный тип.match update.from {
Some(from) => match from { match from.edit_date { ... } }
_ => ...
}
Ещё есть вариант с реактивным ФП. Т.к. у нас уже есть Stream<Update>, мы его можем просто комбинаторами дербанить. Но вот проблема в том, что сопоставления с образом на стримах нет, вернее есть, но использовать это крайне неудобно из-за сырости Rust.H
H
KR
H
H
KR