개발75 Rust 기본, 패턴 매칭 표현식 (Match expression) Rust 기본, 패턴 매칭 표현식 (Match expression) Rust match 표현식은 값의 패턴을 매칭하여 조건에 따라 코드를 실행하는 강력한 제어 흐름 구조입니다.이는 다른 프로그래밍 언어의 switch-case 구문과 비슷하지만,더 유연하고 강력한 기능을 제공합니다. 값을 일련의 패턴과 비교하여 어떤 코드 경로를 실행할지 결정할 수 있습니다.또한 값에 대한 모든 패턴을 제시해야합니다.부족할 경우 마지막에 모든 경우에 해당하는 '_' 패턴을 사용합니다.fn main() { let age = 5; // 매치 블록 내부에는 패턴과 일치할 경우 실행할 코드로 구성된 match arms가 나열된다. // 패턴은 리터럴 값, 변수 이름, 와일드 카드 등이 될 수 있습니다. .. 2024. 8. 13. Rust 기본, 열거형 (Enumerations) Rust 기본, 열거형 (Enumerations) 러스트에서 enum은 단순한 상수 집합 이상의 기능을 제공합니다.러스트의 enum은 각 변형(variant)이 데이터를 직접 포함할 수 있게 해주며 패턴 매칭 (match) 을 사용하여 이 데이터에 접근할 수 있습니다. 인스턴스 생성 시, 사용자는 이중 콜론('::') 문법을 사용하여 특정 변형을 명시적으로 선택하고, 필요한 데이터를 제공해야합니다.enum Message { Quit, Move { x: i32, y: i32 }, Write(String),}let msg = Message::Write(String::from("Hello")); // 인스턴스 생성 시, 필요한 데이터 제공.이 예에서 'Message::Write' 변형은 'St.. 2024. 8. 10. Rust 기본, 구조체 (Struct) Tuple structs Rust 기본, 구조체 (Struct) Tuple structs 튜플(Tuple)과 튜플 구조체(Tuple structs) - 튜플 : 여러 타입을 하나의 데이터로 묶어 준다. 단, 튜플은 타입을 정의하지 않는다. - 튜플 구조체 : 데이터 타입이나 인자 개수 체크가 가능한 하나의 데이터 타입으로 묶어준다.fn main() { // 튜플(tuple) // 이 함수 저 함수 사이를 이동하다 보면 변수 이름이 바뀌면서, // 튜플 데이터가 어떤 의미였는지 알기 어려워진다. let rgb_color = (255, 106, 0); let cmyk_color = (0, 58, 100, 0); // 튜플 구조체(tuple structs) // 타입이나 인자 개수 체크 가능. .. 2024. 8. 6. Rust 기본, 구조체 (Struct) Implementation blocks Rust 기본 : 구조체 (Struct) Implementation blocks 구현 블록 (Implementation blocks)구현 블록은 주어진 유형에 대한 기능을 구현합니다.주어진 유형에는 struct, enum, trait 이렇게 세가지가 있습니다. 그리고 주어진 유형에 대해, - 메서드(method) : 인스턴스 함수. - 연관 함수(associated function) : 인스턴스 없이 호출, C++의 정적 메서드 역할. - 특성 구현(trait implementation) : 특성(trait)을 통해 정의된 인터페이스를 실제 타입에서 구현. 여기서는 구조체에 대한 메서드와 연관 함수에 구현을 설명합니다. 메소드(method) - 첫번째 함수 인자를 self, &self, &mut sel.. 2024. 8. 1. Rust 기본, 구조체 (Struct) Rust 기본 : 구조체 (Struct)구조체는 관련 데이터를 그룹화 할 수 있게 해줍니다. 구조체 정의struct User { name: String, age: u8}fn struct_definition() { let user = User { name: String::from("Tom Riddle"), age: 17u8, }; println!("User's name: {}", user.name); println!("User's age: {}", user.age);} 구조체 수정struct ShopItem { name: String, quantity: u32, in_stock: bool,}fn mutation_structs(.. 2024. 7. 24. Rust 기본, to_string() vs to_owned() Rust 기본 : to_string() vs to_owned() .to_string() - .to_string() 메서드는 ToString 트레이트의 일부입니다. - 이 메서드는 보통 Display 트레이트를 구현한 모든 타입에 대해 사용할 수 있습니다. Display 트레이트는 주로 사람이 읽을 수 있는 형태로 객체를 문자열로 변환할 때 사용됩니다. ToString 트레이트는 fmt::Display 트레이트를 구현하는 모든 타입에 자동으로 구현됩니다.fmt::Display 트레이트를 구현하면 표준 라이브러리에서 아래 코드가 작동하게 된다.T가 fmt:: Display 트레이트면 ToString 트레이트도 동작한다.trait ToString { fn to_string(&self) -> Stri.. 2024. 7. 20. Rust 기본 : UTF-8 문자열 (Strings) Rust 기본 : UTF-8 문자열 (Strings) 러스트는 기본 문자열 타입으로 UTF-8을 사용합니다.UTF (Unicode Transformation Format) &str, 문자열 슬라이스 (주소, 길이) - &str은 문자열의 일부를 보거나 참조할 수 있지만, 내용을 변경할 수는 없습니다. - &str은 UTF-8로 인코딩된 바이트의 연속을 참조하는 슬라이스입니다. - 문자열 슬라이스는 실제 데이터를 소유하지 않고, 기존 데이터에 대한 참조만을 가집니다. String (주소, 길이, 용량) - String은 크기를 조정할 수 있으며, 내용을 수정하거나 추가할 수 있는 UTF-8로 인코딩된 문자열입니다. - String 타입은 Rust의 표준 라이브러리에 포함되어 있으며, 메모리 관리와 관련된 .. 2024. 7. 17. Rust 기본, 슬라이스 (Slice) Rust 기본 : 슬라이스 (Slice)슬라이스(Slice)는 컬렉션 내 연속적인 요소들을 참조(Borrow)합니다.여기서 '연속적'이란 요소들이 서로 인접해 있다는 의미입니다. 일반적으로 컬렉션 전체가 아닌 일부분만을 참조하고 싶을 때 Slice를 사용합니다. 슬라이스는 컬렉션의 일부를 Borrow 한다. - 불변 슬라이스(&[T]): 데이터의 일부에 대한 읽기 전용 접근을 허용합니다. - 가변 슬라이스(&mut [T]): 데이터의 일부에 대한 읽기 및 쓰기 접근을 허용합니다. 가변 슬라이스는 단순히 기존 데이터의 일부분에 대한 접근을 변경 가능하게 만들어 주는 것이지, 컬렉션의 구조 자체를 변경하거나 메모리를 확장하지는 않습니다. 문자열 유형String - 확장 가능하며, 힙에 할당된 문자열 (UT.. 2024. 7. 14. Rust 기본, 참조 (Borrow) Rust 기본 : 참조 (Borrow) Borrow는, 참조를 생성하는 것입니다. - 참조는 규칙이나 제한이 있는 포인터입니다. - 참조는 소유권을 가지지 않습니다."borrow"는 참조를 생성하고 그 참조를 통해 데이터를 안전하게 사용할 수 있도록 하는 Rust의 규칙과 메커니즘을 포함하는 더 포괄적인 용어로 이해할 수 있습니다. 그래서 단순히 "reference"라고 하는 것과는 조금 다른 측면이 있습니다. Borrow를 참조로 읽으면 혼동이 덜하다.특히 C++ 사용자의 경우, Borrow는 참조(reference)에 약간의 규칙이 있다고 생각하면 쉽다.참조(Borrow) 사용하는 이유? - 성능을 위해서. - 소유권이 필요하지 않거나 원하지 않을 때. 참조(Borrow) 규칙. 1. 어느 시점에서든.. 2024. 7. 9. 이전 1 2 3 4 5 6 7 ··· 9 다음