Search

Struct 개념

Struct는 Rust에서 사용되는 복합 자료형 중 하나입니다. Struct는 데이터를 저장하고 조작하는 데 사용됩니다. Rust의 Struct는 C 언어의 구조체와 유사하지만 더욱 강력하고 유연합니다. Rust의 Struct는 데이터 구조체를 생성하며, 이러한 구조체는 다른 데이터 형식과 결합하여 Rust 프로그램의 기능을 정의하는 데 사용됩니다.

Struct 정의

Struct는 "struct" 키워드를 사용하여 정의합니다. 아래는 예제입니다.
struct Person { name: String, age: u32, email: Option<String>, }
Rust
복사
위의 예제에서 "Person"은 Struct의 이름입니다. Struct는 여러 필드를 포함할 수 있으며, 각 필드는 이름과 데이터 형식을 가지고 있습니다. 위의 예제에서 "name" 필드는 String 형식이며, "age" 필드는 u32 형식입니다. "email" 필드는 Option<String> 형식입니다. Option은 Rust의 열거형 중 하나로, 값이 있거나 없을 수 있음을 나타냅니다.

Struct 생성

Struct를 생성하기 위해서는 Struct의 이름을 사용하여 인스턴스를 만듭니다. 이를 Struct 인스턴스라고 합니다. Struct 인스턴스를 만들기 위해서는 Struct 이름 뒤에 중괄호를 사용하여 필드를 초기화해야 합니다.
let person = Person { name: String::from("Alice"), age: 30, email: Some(String::from("alice@example.com")), };
Rust
복사
위의 예제에서는 "Person" Struct 인스턴스를 만듭니다. "name" 필드에는 String "Alice"를, "age" 필드에는 30을, "email" 필드에는 Some(String "alice@example.com")을 할당합니다.

Struct 필드 접근

Struct 인스턴스의 필드에 접근하기 위해서는 "." 연산자를 사용합니다.
println!("Name: {}", person.name); println!("Age: {}", person.age); match person.email { Some(email) => println!("Email: {}", email), None => println!("No email"), }
Rust
복사
위의 예제에서는 "person" Struct 인스턴스의 각 필드에 접근하여 값을 출력합니다. "email" 필드는 Option이므로 match 표현식을 사용하여 값을 출력합니다.

Struct 메서드

Struct는 메서드를 가질 수 있습니다. 메서드는 Struct의 인스턴스에 대한 동작을 정의합니다. 메서드를 정의하려면 Struct 내부에 함수를 작성하면 됩니다.
impl Person { fn say_hello(&self) { println!("Hello, my name is {}.", self.name); } }
Rust
복사
위의 예제에서는 "Person" Struct에 "say_hello" 메서드를 추가합니다. 메서드는 "&self" 인자를 가지며, "self"는 메서드가 호출되는 Struct의 인스턴스를 참조에 대한 참조입니다.
person.say_hello();
Rust
복사
위의 예제에서는 "person" Struct 인스턴스의 "say_hello" 메서드를 호출합니다.

Struct 파생

Rust에서는 Struct를 다른 Struct에서 파생시킬 수 있습니다. 이를 Struct 파생이라고 합니다. Struct 파생은 코드의 중복을 줄이고, 코드 재사용성을 높일 수 있습니다.
struct Employee { person: Person, id: u32, salary: f64, }
Rust
복사
위의 예제에서는 "Employee" Struct를 "Person" Struct에서 파생시킵니다. "Employee" Struct는 "person" 필드와 "id" 필드, "salary" 필드를 가지고 있습니다. "person" 필드는 "Person" Struct의 인스턴스를 가리킵니다.

Struct 정의

/// Person Struct struct Person { name: String, age: u32, email: Option<String>, }
Rust
복사

Struct 생성

let person = Person { name: String::from("Alice"), age: 30, email: Some(String::from("alice@example.com")), };
Rust
복사

Struct 필드 접근

println!("Name: {}", person.name); println!("Age: {}", person.age); match person.email { Some(email) => println!("Email: {}", email), None => println!("No email"), }
Rust
복사

Struct 메서드

impl Person { /// say_hello 메서드 fn say_hello(&self) { println!("Hello, my name is {}.", self.name); } }
Rust
복사

Struct 파생

/// Employee Struct struct Employee { person: Person, id: u32, salary: f64, }
Rust
복사
위의 Rust Struct에 대한 소프트웨어 문서 예시입니다. 문서는 각 구성 요소의 이름, 사용 방법, 역할, 동작 방식 등을 설명합니다. 문서는 Rust 코드 내에 작성되며 Rust의 내장 도구인 rustdoc를 사용하여 HTML 문서로 변환할 수 있습니다. 이러한 문서는 Rust 개발자 커뮤니티에서 매우 중요한 역할을 합니다.