1. переменные: мутабельность
// ошибка: cannot assign twice to immutable variable // решение: добавить ключевое слово mut fn main() { let mut x = 5; x = 6; }
мои личные заметки и решения базовых задач из rustlings.
// ошибка: cannot assign twice to immutable variable // решение: добавить ключевое слово mut fn main() { let mut x = 5; x = 6; }
// string не реализует copy. передаем по ссылке, чтобы не отдавать владение. fn main() { let s = String::from("hello"); print_length(&s); println!("{}", s); // теперь это работает } fn print_length(s: &String) { println!("{}", s.len()); }
// объявление и инстанцирование структуры struct User { username: String, active: bool, } fn main() { let user1 = User { username: String::from("admin"), active: true, }; }
enum Coin { Penny, Nickel, Dime, Quarter } fn value_in_cents(coin: Coin) -> u8 { match coin { Coin::Penny => 1, Coin::Nickel => 5, Coin::Dime => 10, Coin::Quarter => 25, } }
// безопасное извлечение значения из option с помощью if let fn main() { let config_max: Option<u8> = Some(3u8); if let Some(max) = config_max { println!("максимум установлен на {}", max); } }
// использование оператора ? для проброса ошибки use std::fs::File; use std::io::{self, Read}; fn read_username() -> Result<String, io::Error> { let mut s = String::new(); File::open("hello.txt")?.read_to_string(&mut s)?; Ok(s) }
pub trait Summary { fn summarize(&self) -> String; } struct NewsArticle { headline: String } impl Summary for NewsArticle { fn summarize(&self) -> String { format!("новость: {}", self.headline) } }