New We are sorting MAX channels into categories and territories. Read the news
Public channel ID 72073278341637

Записки о Rust

Процесс погружения в rust

Open in MAX

Posts for the period

By reactions

Search and the whole feed — after free registration. Custom dates — with a subscription; the channel owner sees them for free. Sorting by reactions — with a subscription. Sign up

Loading…

Loading image…
В Rust не принято возвращать из функций "чистый" тип, обычно для этого используется перечисление enum. Если говорить о стандартных библиотеках Rust то чаще всего возвращается

pub enum Option<T> {
Some(T),
None,
}

Предполагается, что значение может отсутствовать.

Или

pub enum Result<T, E> {
Ok(T),
Err(E),
}

для возвращения конкретного результата или ошибки.

Встречаются и другие варианты, в зависимости от того, что должно быть возвращено.

Пример с Option

fn main() {
 let num = vec![1, 2, 3, -10, 143];
 // Возвращает Option<&i32> по индексу
 let res = num.get(4);.
 match res {
     Some(value) => println!("Нашли: {}", value),
     None => println!("Не нашли"),
 }
}

Пример с Result. Кто читал предыдущие посты подобные примеры уже неоднократно встречались.


use std::io;

fn main() {
   let mut input = String::new(); // строка для ввода
   println!("Введите ваше имя:");.
// ввод с клавиатуры с проверкой ошибки с дописывания строки input
   match io::stdin().read_line(&mut input) {
       Ok(n) => {
         println!("Всего {} байтов", n);
         let mut input = "Привет ".to_string() + &input.trim() + &"!".to_string();
         println!("{}", input);
       }
       Err(error) => {
         println!("Ошибка при чтении: {}", error);
       }
   }
}

Обработка с оператором match предпочтительна, но не обязательна. В дальнейшем расскажу о других возможностях.

Описанные выше особенности языка rust входит в его основы. Это следует усвоить.
Views: 40
Go to post Open in MAX Report an inaccuracy
Loading image…
Сегодня тема: ввод с клавиатуры. Две не большие программки.
Одна - это просто ввод с клавиатуры строки, другая ввод с клавиатуры
с последующей попыткой преобразовать строку в целое число.


use std::io;

fn main() {
let mut input = String::new(); // строка для ввода
println!("Введите ваше имя:");.
// ввод с клавиатуры с проверкой ошибки с дописывания строки input
match io::stdin().read_line(&mut input) {
Ok(n) => {
println!("Всего {} байтов", n);
let mut input = "Привет ".to_string() + &input.trim() + &"!".to_string();
println!("{}", input);
}
Err(error) => {
println!("Ошибка при чтении: {}", error);
}
}
}

И так io::stdin().read_line(&mut input) ввод строки с клавиатуры.
Тут важно отметить, метод read_line() добавляет символы в строку,
не очищая её. Поэтому нужно использовать для этой цели
пустую строку. У нас она просто создаётся для этой цели.

Второе. Этот метод возвращает тип перечисление (enum). Поэтому
мы используем match. В зависимости от результата иы выполняем то или иное
действие. Да и не забудем про библиотеку std::io, она нужна для read_line().


В следующем примере мы вводим строку, а потом пытаемся преобразовать
её в число. Поэтому у нас вложенные операторы match.

use std::io;
use std::process;

fn main() {
let mut input = String::new(); // пустая строка
match io::stdin().read_line(&mut input) {
Ok(_) => {
// преобразовать строку в число
let number: i32 = match input.trim().parse() {
Ok(num) => num,
Err(_) => {
println!("Вы ввели некорректное значение!");
process::exit(1); // завершаем программу с кодом 1
}
};
}
Err(error) => {
println!("Ошибка при чтении: {}", error);
}
}
}

Внутренний match реагирует на ситуацию когда строка не может быть преобразована
в число. В этом случае программа заканчивает своё выполнение через использование
process::exit(1) - код выхода 1. Чтобы использовать этот метод мы подключили библиотеку
std::process.

Конечно, то что я здесь представил, надо бы обернуть в функции.
Т.е. создать свою библиотечку, которую можно использовать
в разных приложениях. Но об этом поговорим в одном из следующих постов.

Не забывайте, что оглавление по моим постам можно найти здесь

https://dzen.ru/a/aq_S5YWcNkgWfHcO

Оглавление тематическое, а на канале здесь темы идут не по порядку.
Views: 32
Go to post Open in MAX Report an inaccuracy
VKontakte Telegram Odnoklassniki
Favorites at datool.ru

Follow the channel in your account

Sign up at datool.ru to add the channel “Записки о Rust” to favorites and track its metrics.

Sign up
For channel owners

Verify your channel

Sign in or sign up at datool.ru, then add our bot to the channel following the instructions in your account. Once ownership is verified, the lock disappears and channel management becomes available.

Sign in or sign up

Report an inaccuracy

Describe what needs fixing. If you have a source, add a link.

You are leaving datool.ru

The link leads to an external website. datool.ru is not responsible for its content — check the address before entering passwords or payment details.

Redirecting in 10 s

Go