본문 바로가기

개발71

Rust 기본 : 특성 (Traits) Rust 기본 : 특성 (Traits) 러스트는 상속을 지원하지 않습니다.대신 함수를 공유하고 인터페이스를 제공하기 위해 트레잇(trait)를 사용합니다.이는 다른 언어의 인터페이스와 유사합니다. 트레잇은 타입의 행동을 추상화하고 규정하는 데 사용합니다.이를 통해 코드 유연성, 재사용성, 모듈성을 높일 수 있습니다. 트레잇(trait) 선언하기.1. 공통 특징 트레잇 'Animal' 정의.동물이 공통적으로 가질 수 있는 특징을 트레잇으로 정의합니다.trait Animal { fn make_sound(&self); fn given_name(&self) -> String;} 2. 행동 중심 트레잇 'Playful' 정의.trait Playful { fn play(&self) { .. 2024. 9. 7.
Rust 기본 : 일반화 (Generics) Rust 기본 : 일반화 (Generics) 러스트(Rust)의 제네릭(Generics)은 다양한 데이터 타입에 대해 코드 사용 유연성을 높이고 코드 반복 구현을 줄여줍니다. 제네릭을 사용하면 컴파일 시에 구체적인 타입으로 대체될 제네릭 타입을 가진 구조체, 열거형, 함수를 정의할 수 있습니다. 1. 정의 (Define)구조체 이름 뒤에 임의의 타입을 나타내는 를 추가하여 선언한다.struct Message { id: String, payload: T,} 2. 구현 (Implementation)impl : 구현부에서 제네릭 타입을 사용한다.Message : 구현 대상은 Message 제네릭 타입이다.impl Message { fn new(id: String, payload: T) -> S.. 2024. 9. 3.
Rust 기본 : 벡터 (Vector) Rust 기본 : 벡터 (Vector) 러스트에서 제공하는 Vec타입은 동적 배열이다. - 동적으로 크기 조정 가능하며 Vec는 T 타입으로 고정되어 타입 안전하다. - 0부터 시작하는 인덱스로 접근 가능하다. ex) v[0] - 반복자(iterator)와 for 루프를 통해 각 요소에 접근할 수 있다. Vector 생성 방법 1 : Vec::new()벡터는 동일한 타입 요소를 가지는 동적 배열이다. 그러나 배열과 달리 힙에 할당된다.fn main() { // 빈 벡터 생성 let v: Vec = Vec::new(); let mut v = Vec::new(); // 생성한 스트링 소유권은 vector로 이동한다. // -> vector가 삭제될 때 내부 모든 스트링 소유.. 2024. 8. 26.
Rust 기본 : 결과 열거형 (Result enum) Rust 기본 : 결과 열거형 (Result enum) Rust에서 유효한 값을 반환하거나 에러 값을 반환하려면Result enum을 사용할 수 있습니다.enum Result { Ok(T), Err(E),}Result enum에는 두 가지 변형이 있습니다. 하나는 일반적인 값을 포함하는 Ok 변형이고, 다른 하나는 에러 값을 가지는 Err 변형입니다.Result enum과 그 변형들은 std::prelude에 있습니다. std::prelude는 Rust가 모든 Rust 프로그램에 자동으로 가져오는 것들의 목록입니다.따라서 추가 코드 없이도 이들을 사용할 수 있습니다.std::preludehttps://doc.rust-lang.org/std/prelude/ std::prelude - Rust§T.. 2024. 8. 21.
Rust 기본, 옵션 열거형 (Option enum) Rust 기본 : 옵션 열거형 (Option enum) Rust에서 유효한 값을 반환하거나 아무 값도 반환하지 않으려면 Option enum을 사용할 수 있습니다.enum Option { None, Some(T),}Option enum에는 두 가지 변형이 있습니다. 하나는 일반적인 값을 포함하는 Some 변형이고, 다른 하나는 None 변형입니다.Option enum과 그 변형들은 std::prelude에 있습니다. std::prelude는 Rust가 모든 Rust 프로그램에 자동으로 가져오는 것들의 목록입니다.따라서 추가 코드 없이도 이들을 사용할 수 있습니다.std::preludehttps://doc.rust-lang.org/std/prelude/ std::prelude - Rust§The.. 2024. 8. 17.
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.