Rust. Как использовать математику в типе String

Рейтинг: 0Ответов: 2Опубликовано: 12.02.2023

Подскажите, пожалуйста. Я делаю проект в котором присутствует ввод данных с клавиатуры, а также else if. Проблема в том что с клавиатуры выводится тип String, но этот тип не подходит для математических операциях. Подскажите как решить данную проблему.

Ответы

▲ 2Принят

Можно так:

let some_string = String::from("12");  // например, такая строка

let number = some_string.parse::<i32>();

match number {
    Ok(result) => println!("Получилось, число: {:?}", result),
    Err(_) =>     eprintln!("Строка - не число"),
}

Строкой

let number = some_string.parse::<i32>();

мы парсим строку и переделываем её в i32 (можете поставить здесь любой челочисленный тип, который вам нужен), тогда number получит тип Result<f32, std::num::ParseFloatError>.

В строках

match number {
    Ok(result) => println!("Получилось, число: {:?}", result),
    Err(_) =>     eprintln!("Строка - не число"),
}

проверяем, что преобразование прошло успешно, и, если получилось, выводим Получилось, число: <ПОЛУЧИВШЕЕСЯ ЧИСЛО>, если же нет, выводим Строка - не число в стандартный поток ошибок.

▲ 0

Если вы хотите оперировать с данными с клавиатуры как с числами, преобразуйте их в число:

let my_int: i32 = my_string.parse().unwrap();

Загляните сюда за деталями.