728x90 클론코딩94 [Rust lang] 58. map and for each fn main() { let num_vec = vev![2, 4, 6]; let double_vec = num_vec .iter() .map(|number| number * 2) .collect::(); println!("{double_vec:?"); num_vec .iter() .enumerate() .for_each(|(index, number)| { println!("The number at index {index} is {number}"); }); } fn main() { let num_vec = vec![2, 4, 6]; let new_thing = num_vec .iter() .enumerate() .map(|(index, number)| { println!("The number at inde.. Rust 2023. 3. 29. [Rust lang] 57. abstractions fn main() { /* let my_number = 9; let anoymous_function = || println("I am a function"); let closure = || println!("{my_number}"); .iter().map().filter().inspect().collect() */ let my_vec = vec![8, 9, 10, 9]; let fourth = my_vec.get(3).unwrap_or_else(|| { if my_vec.get(0).is_some() { &my_vec[0] } else { &0 } }); println!("{fourth}"); } Rust 2023. 3. 29. [Rust lang] 56. closures .iter().map(|item| { let my_number = 7; item + my_number }) .collect() fn main() { /* let my_number = 10; let my_closure = |x: i32| println!("{}", x + my_number); my_closure(9); */ let my_closure = || { let my_number = ?; let other_number = 10; println!("The two numbers are {my_number} and {other_number}"); my_number + other_number }; let my_var = my_closure(); println!("{my_var}"); } Rust 2023. 3. 29. [Rust lang] 55. iterator fn main() { let vector1 = vec![1, 2, 3]; let vector1_a = vector1.iter().map(|x| x + 1).collect::(); let vector1_b: Vec = vector1.into_iter().map(|x| x * 10).collect(); let mut vector2 = vec![10, 20, 30]; vector2.iter_mut().for_each(|num| *num += 100); println!("{vector1_a:?}"); println!("{vector2:?}"); println!("{:?}", vector1_b); println!("{vector1:?}"); // .into_iter() 이 후 소멸됨. } fn main() { l.. Rust 2023. 3. 29. [Rust lang] 54. chaining methods fn main() { //1 let mut new_vec = Vec::new(); let mut counter = 1; while counter < 11 { new_vec.push(counter); counter += 1; } println!("{new_vec:?}"); //2 let new_vec = (1..=10).collect::(); println!("{new_vec:?}"); //3 let my_vec = vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; let new_vec = my_vec .into_iter() .skip(1) .skip(1) .skip(3) .take(4) .collect::(); println!("{new_vec:?}"); } Rust 2023. 3. 29. [Rust lang] 53. the asref trait use std::fmt::Display; fn print_it(input: T) where T: Display + AsRef { println!("{input}"); } fn main() { // print_it(9); >> error print_it("Please print me"); print_it(String::from("Please print me")); } Rust 2023. 3. 29. [Rust lang] 52. getting to string for free trait PrintSomething { fn print_something(&self) { println!("I like to do stuff"); } } struct Person; struct Building; impl PrintSomething for T { } fn main() { let person = Person; let building = Building; person.print_something(); building.print_something(); } Rust 2023. 3. 28. [Rust lang] 51. blanket trait implementations use std::fmt::{Debug, Display}; trait Prints: Debug { fn debug_print(&self) where Self: Debug{ //println!("I like to print things"); println!("I am: {:?}", self); } fn display_print(&self) where Self: Display{ println!("I am: {}", self); } } #[derive(Debug)] struct Person; #[derive(Debug)] struct Building; impl Prints for T { } fn main() { let my_person = Person; let my_building = Building; my_p.. Rust 2023. 3. 28. [Rust lang] 50. implementing from /* use std::fmt:Display; fn print_vec(input: &Vec) { for item in input { print!("{item} "); } println!(); } fn main() { let array_vec = String::from("thth"); print_vec(&array_vec); let str_vec = Vec::from("What kind of vec is this?"); print_vec(&str_vec); let string_vec = Vec::from("What kind of vec is a String vec?"); print_vec(&string_vec); } */ #[derive(Debug)] struct City { name: String. pop.. Rust 2023. 3. 28. [Rust lang] 49. traits as bounds use std::fmt::Debug; #[derive(Debug)] struct Monster { health: u32 } #[derive(Debug)] struct Wizard { health: i32 } #[derive(Debug)] struct Ranger { health: i32 } trait Magic {} trait FightClose {} trait FightFromDistance {} impl Magic for Wizard {} impl FightClose for Ranger {} impl FightClose for Wizard {} impl FightFromDistance for Ranger {} fn attack_with_bow(character: &T, opponent: &mut Mo.. Rust 2023. 3. 28. [Rust lang] 48. trait intro use std::fmt::Debug; #[derive(Debug)] struct MyStruct { number: usize } fn print_as_debug(input: T) where T: Debug { println!("{input:?"); } fn main() {} /////////////////////////////////////// use std::fmt::Debug; struct ThingsToAdd { first_thing: u32, second_thing: f32 } fn main() { let my_thing = ThingsToAdd { first_thing: 32, second_thing: 8.8 } let second_thing = ThingsToAdd { first_thing: .. Rust 2023. 3. 28. [Rust lang] 47. fomatting news use std::num::ParseIntError; let parsed_number = input.parse::()?.to_string().parse::()?.to_string().parse::()?; fn parse_str(input: &str) -> Result { let parsed_number = input.parse::()?; println!("It worked: {}", parsed_number) Ok(()) } fn main() { for item in vec!["Seven", "8", "9.0", "nice", "6060"] { /* (=) let parsed = parse_str(item); println!("{:?}", parsed); */ parse_str(item); } } Rust 2023. 3. 28. 이전 1 2 3 4 5 6 7 8 다음 728x90