История изменений
Исправление tailgunner, (текущая версия) :
Ты запиши сначала показанный код
Показанный код делает что-то сложное - мне тупо влом выяснять, что именно, и писать аналог. Цепочка вычислений будет выглядеть примерно так, как я показал, и ничем принципиальным от Си++ не отличается.
Еще лучше, что-нибудь арифметическое
fn main() {
let s = String::from("123");
let i = s.parse::<u32>()
.and_then(|v| Ok(v+1))
.and_then(|v| Ok(v*2))
.and_then(|v| Ok(v*v))
.unwrap();
println!("{}", i);
}
А то в реально замороченном коде все эти ваши and_then превращаются в такие же простыни, как и if err в Go.
В такие же - не превращаются. Превращаются в одну длинную макаронину, но я полагаю, с этим можно бороться путем перегрузки операторов.
Исправление tailgunner, :
Ты запиши сначала показанный код
Показанный код делает что-то сложное - мне тупо влом выяснять, что именно, и писать аналог. Цепочка вычислений будет выглядеть примерно так, как я показал, и ничем принципиальным от Си++ не отличается.
Еще лучше, что-нибудь арифметическое
fn main() {
let s = String::from("123");
let i = s.parse::<u32>()
.and_then(|v| Ok(v+1))
.and_then(|v| Ok(v*2))
.and_then(|v| Ok(v*v))
.unwrap();
println!("{}", i);
}
Исходная версия tailgunner, :
Ты запиши сначала показанный код
Показанный код делает что-то сложное - мне тупо влом выяснять, что именно, и писать аналог. Цепочка вычислений будет выглядеть примерно так, как я показал и ничем принципиальным от Си++ не отличается.
Еще лучше, что-нибудь арифметическое
fn main() {
let s = String::from("123");
let i = s.parse::<u32>()
.and_then(|v| Ok(v+1))
.and_then(|v| Ok(v*2))
.and_then(|v| Ok(v*v))
.unwrap();
println!("{}", i);
}