본문 바로가기

Rust3

[Rust] Rust의 let/mut과 Map, JS의 const와 Map JS에서는 Map을 const로 선언하고, 그 안에 데이터를 추가하거나 삭제할 수 있다.const map = new Map();map.set("apples", 10);map.set("bananas", 5);console.log(map); // Map(2) {"apples" => 10, "bananas" => 5}사실 이건 누구나 다 아는 것이다.const는 참조 불변을 뜻하기 때문이다.  그런데 Rust에서는 let(Rust의 let == JS의 const)으로 Map을 선언하고 데이터를 추가/삭제할 수 없다.use std::collections::HashMap;fn main() { let stock = HashMap::new(); stock.insert("apples", 10); // 안됨!.. 2024. 9. 18.
[Rust] `println!` 매크로가 참조(borrow)로 동작하는 이유 사전지식:매크로와 함수의 차이함수는 특정 타입의 인수를 받아 런타임에 실행되고, 파라미터의 타입이 강제된다.매크로는 함수의 일부로 컴파일되어 동작(사실 당연한 말)하고, 파라미터의 타입이 자유롭다.  `println!`의 내부 동작#[macro_export]macro_rules! println { () => { $crate::print!("\n") }; ($($arg:tt)*) => {{ $crate::io::_print($crate::format_args_nl!($($arg)*)); }};}$crate: 매크로가 정의된 크레이트 내의 경로를 지정하여, 해당 크레이트에 정의된 함수나 매크로를 사용할 수 있도록 함.$($arg:tt)*: 반복 패턴으로, 다양한.. 2024. 9. 1.
[Rust] 재밌는 enum enum Color { Red, Yellow, Blue,}fn print_color(color: Color) { match color { Color::Red => println!("Red"), Color::Yellow => println!("Yellow"), Color::Blue => println!("Blue"), }}fn main() { print_color(Color::Red);}  이러한 Rust 코드를 실행시켜보면, 이렇게 맨 아래에 Red가 출력되긴 하지만, 재밌게도 'variants `Yellow` and `Blue` are never constructed' 라는 warning이 나온다.enum Color 중 Yellow와.. 2024. 8. 26.