반응형
✅ 1. Rust 설치마지막 시간은 Rust 프로젝트를 생성하고 어떠한 방식으로 실행하는지를 되새기면서 이번 공략을 마치겠습니다. Rust 설치되어야 프로젝트를 생성할 수 있습니다.# rustup 설치curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh# 설치 확인rustc --versioncargo --version✅ 2. Rust 프로젝트 생성Rust는 Cargo라는 빌드 도구를 기본으로 제공합니다. 다음 명령어로 Rust 프로젝트를 생성할 수 있습니다.cargo new myprojectmyproject: 프로젝트 이름생성 후 디렉터리 구조my_project├── Cargo.toml└─ src/ └─ main.rs기본 출력Hello, ..
✅ 1.매크로 종류선언적 매크로 (macro_rules!)템플릿 기반으로 토큰을 매칭해 코드 생성, 반복($( )*), 선택($( ) ?), 캡쳐($ident:expr 등) 지원, 컴파일 타임에 단순 반복/패턴 생성에 최적함프로시저 매크로 (procedural macros)세 가지 형태: derive 매크로(구조체*열거형에 자동 impl 생성), 속성(attribute), 매크로(아이템에 추가 동작), 함수형(function-like) 매크로(my_macro!(...))더 강력한 토큰스트림을 받아 파싱·분석·출력 가능, 보통 proc-macro, syn, quote, proc-macro2 사용✅ 2. macro_rules! 기본 예제// 간단한 vec! 비슷macro_rules! my_vec { (..
✅ 1. 소유권(Ownership)변수는 어떤 값의 소유자가 되며 소유자는 하나뿐입니다. 소유자가 범위를 벗어나면(scope 종료) 값이 자동으로 메모리에서 해제됩니다.(drop 호출){ let s = String::from("Hello, World"); // s는 "Hello, World"의 소유자} // 여기서 s가 범위를 벗어나며 메모리 해제✅ 2. 이동(Move)와 복사(Copy)Move: 소유권이 다른 변수로 넘어감 -> 원래 변수는 더 이상 사용 불가Copy: 스택에 저장되는 단순 값(i32, bool 등)은 복사 가능fn main() { let s1 = String::from("Hello"); let s2 = s1; // println!("{}", s1); // 🚫 에러: s..
😶🌫️ 비동기 프로그래밍이란?일반적인 프로그래밍에서는 명령이 순차적으로 실행되나, 비동기 프로그램에서는 시간이 소요되는 작업(ex.파일 읽기, 네트워크 요청 등)을 기다리지 않고, 나중에 결과가 오면 Callback(콜백)이나 Future를 통해 처리할 수 있는 방식입니다.🛠️ 기본 문법async fn 함수 정의async fn say_hello() { println!("Hello, World!")} async fn은 Feture를 반환해, 즉시 실행되지 않으며, 나중에 awiat를 반환할 수 있습니다.await 키워드async fn greet() { say_hello().await; println!("Greetings from async function!");} main 함수에서 ..
1. 함수 인자로 전달하기고차 함수는 다른 함수를 인자로 받을 수 있습니다. 예를 들어 Fn-trait을 사용해 함수를 인자로 받는 함수를 정의합니다.fn apply(f: F, x: i32) -> i32where F: Fn(i32) -> i32, { f(x) }fn main() { let square = |x| x * x; let result = apply(square, 5); println!("The square of 5 is: {}", result); // Output: The square of 5 is: 25}2. 함수 반환하기고차 함수는 다른 함수를 반환할 수 있습니다. 이 경우, 반환 타입을 명시해야 합니다.fn make_multiplier(fac..
1. 트레이트 정의하기 트레이트는 특정 행동을 정의하고, 이를 구현하는 타입에 적용하는 방식으로, 트레이트를 정의하기 위해 trait 키워드를 사용합니다. 예를 들어 Speak라는 트레이트를 정의할 수 있습니다.trait Speak { fn speak(&self);}2. 트레이트 구현하기구현하고자 하는 타입에 대해 트레이트를 구현합니다. trait Speak { fn speak(&self);}struct Running;impl Speak for Running { fn speak(&self) { println!("Run!"); } }3. 트레이트 객체 사용하기 트레이트 객체를 사용하면 다형성을 구현할 수 있습니다. let_speak 함수가 Speak 트레이트를 구현하는..