본문 바로가기

Rust61

[Rust] 고급 Trait 예제 (46일차) impl Iterator for Counter { type Item = u32; fn next(&mut self) -> Option; } pub trait Iterator { fn next(&mut self) -> Option; } use std::ops::Add; #[derive(Debug, PartialEq)] struct Point { x: i32, y: i32, } impl Add for Point { type Output = Point; fn add(self, other: Point) -> Point { Point { x: self.x + other.x, y: self.y + other.y, } } } fn main() { assert_eq!(Point { x: 1, y: 0 } + Point .. 2023. 1. 29.
[Rust] Pattern : 여러 예제 (45일차) fn main() { let x = Some(5); let y = 10; match x { Some(50) => println!("Got 50"), Some(y) => println!("Matched, y = {:?}", y), _ => println!("Default case, x = {:?}", x), } println!("at the end: x = {:?}, y = {:?}", x, y); } fn main() { let x = 1; match x { 1 | 2 => println!("one or two"), 3 => println!("three"), _ => println!("anything"), } } fn main() { let x = 5; match x { 1..=5 => println!(.. 2023. 1. 28.
[Rust] Trait 예제 (44일차) #![allow(dead_code)] fn main() { trait Animal { fn eat(&self); } struct Herbivore; struct Carnivore; impl Animal for Herbivore { fn eat(&self) { println!("I eat plants"); } } impl Animal for Carnivore { fn eat(&self) { println!("I eat flesh"); } } let h = Herbivore; h.eat(); } [실행 결과] $ I eat plants fn main() { trait Animal { fn eat(&self); } struct Herbivore; struct Carnivore; impl Animal for H.. 2023. 1. 27.
[Rust] 공유 상태 동시성 예제 (Shared State Concurrency, 43일차) use std::sync::{Mutex, Arc}; use std::thread; fn main() { let counter = Arc::new(Mutex::new(0)); let mut handles = vec![]; for _ in 0..10 { let counter = Arc::clone(&counter); let handle = thread::spawn(move || { let mut num = counter.lock().unwrap(); *num += 1; }); handles.push(handle); } for handle in handles { handle.join().unwrap(); } println!("Result: {}", *counter.lock().unwrap()); } https.. 2023. 1. 26.