Обновить

в Rust есть метод transpose, иногда бывает полезен, особенно хорошо работает с anyhow:

use std::str::FromStr;
use anyhow::Context;

fn add(a: Option<&str>, b: Option<&str>) -> anyhow::Result<f32> {
    let a = a.map(f32::from_str).transpose()?.context("not a value")?;
    let b = b.map(f32::from_str).transpose()?.context("not a value")?;
    Ok(a + b)
}

fn main() {
    println!("{:?}", add(Some("12"), Some("1.2")));
    println!("{:?}", add(Some("a"), Some("1.2")));
    println!("{:?}", add(None, Some("1.2")));
}

вывод:

Ok(13.2)
Err(invalid float literal)
Err(not a value)
Всего голосов 2: ↑2 и ↓0+2
Комментарии0

Представлен открытый минималистичный браузер Northstar, написанный полностью с нуля на языке C

Представлен открытый минималистичный браузер Northstar, написанный полностью с нуля на языке C. Одно окно, одна страница, один процесс — около 170 000 строк оригинального кода на C. В проекте не используется сторонний движок: ни Gecko, ни WebKit, ни Blink. Это свободное программное обеспечение, распространяемое на условиях лицензии GNU General Public License v3.0.

Представлен открытый минималистичный браузер Northstar, написанный полностью с нуля на языке C

Публикации