随笔分类 - Rust
摘要:The following code has compiler error: fn jazz(years: &[i64]) -> Releases { let eighties: [i64] = &years[0..2]; let nineties: [i64] = &years[2..4]; Re
阅读全文
摘要:struct VecMetadata { first_elem_index: usize, length: usize, capacity: usize } struct SliceMetadata { first_elem_index: usize, length: usize } Slice i
阅读全文
摘要:The following code will have borrowing problem fn print_years(years: Vec<i32>) { for year in years.iter() { println!("Year: {}", year); } } // dealloc
阅读全文
摘要:Mutate the Vec: fn vec_loop(mut v: Vec<i32>) -> Vec<i32> { for element in v.iter_mut() { // Fill this up so that each element in the Vec `v` is // mul
阅读全文
摘要:Example 1: trait AppendBar { fn append_bar(self) -> Self; } impl AppendBar for String { fn append_bar(mut self) -> Self { self.push_str("Bar"); return
阅读全文
摘要:Example 1: fn main() { let mut shopping_list: Vec<&str> = Vec::new(); shopping_list.push("milk"); } Example 2: struct Wrapper<T> { value: T, } impl<T>
阅读全文
摘要:A baisc iter: #[test] fn main() { let my_fav_fruits = vec!["banana", "custard apple", "avocado", "peach", "raspberry"]; let mut my_iterable_fav_fruits
阅读全文
摘要:use std::sync::mpsc; use std::thread; use std::time::Duration; fn main() { let (tx, rx) = mpsc::channel(); thread::spawn(move || { let vals = vec![ St
阅读全文
摘要:A channel has two halves: a transmitter and a receiver. The transmitter half is the upstream location where you put rubber ducks into the river, and t
阅读全文
摘要:Arc<T> is a type like Rc<T> that is safe to use in concurrent situations. The a stands for atomic, meaning it’s an atomically reference counted type.
阅读全文
摘要:We ofter use movewith closures passed to thread::spawnbecase the closure will then take ownership of the values it uses from the environment, thus tra
阅读全文
摘要:Code from previous blog: use std::thread; use std::time::Duration; fn main() { thread::spawn(|| { for i in 1..10 { println!("hi number {} from the spa
阅读全文
摘要:We use spawnto create a new thread: use std::thread; use std::time::Duration; fn main() { thread::spawn(|| { for i in 1..10 { println!("hi number {} f
阅读全文
摘要:https://doc.rust-lang.org/std/keyword.ref.html struct Point { x: i32, y: i32, } fn main() { let y: Option<Point> = Some(Point { x: 100, y: 200 }); mat
阅读全文
摘要:https://doc.rust-lang.org/rust-by-example/flow_control/if_let.htmlhttps://doc.rust-lang.org/rust-by-example/flow_control/while_let.html If let: #[test
阅读全文
摘要:// Using catch-all error types like `Box<dyn error::Error>` isn't recommended // for library code, where callers might want to make decisions based on
阅读全文
摘要:use std::error; use std::fmt; use std::num::ParseIntError; fn main() -> Result<(), Box<dyn error::Error>> { let pretend_user_input = "42"; let x: i64
阅读全文
摘要:#[derive(PartialEq, Debug)] enum CreationError { Negative, Zero, } #[derive(PartialEq, Debug)] struct PositiveNonzeroInteger(u64); impl PositiveNonzer
阅读全文
摘要:use std::num::ParseIntError; fn main() -> Result<(), ParseIntError> { let mut token = 100; let pretend_user_input = "8"; let cost = total_cost(pretend
阅读全文
摘要:pub fn generate_nametag_text(name: String) -> Result<String, String> { if name.is_empty() { // Empty names aren't allowed. Err(String::from("`name` wa
阅读全文