Rust Struct(구조체)
2023. 3. 12. 18:17ㆍLanguage/Rust
다른 언어들과 마찬가지로 Rust에도 구조체가 존재합니다.
구조체는 여러 데이터들의 모아놓은 타입이라고 보면 됩니다.
struct는 structure의 줄임말로 여러 데이터 조각을 포함하는 데이터 타입입니다.
Rust는 다른 언어들과 달리 구조체 안의 데이터에 반드시 값을 지정해줘야 합니다. 그렇지 않으면 컴파일이 되지 않습니다.
데모
struct StructItem{
data_a : i32,
data_b : f64
}
fn main() {
let item = StructItem{
data_a : 3,
data_b : 19.9
};
println!("data a : {}", item.data_a);
}
위와 같이 작성 후 컴파일을 하게 되면 아래와 같은 경고가 뜹니다.
> rustc .\struct.rs
warning: field `data_b` is never read
--> .\struct.rs:3:5
|
1 | struct StructItem{
| ---------- field in this struct
2 | data_a : i32,
3 | data_b : f64
| ^^^^^^
|
= note: `#[warn(dead_code)]` on by default
warning: 1 warning emitted
Rust에서는 구조체 안의 데이터를 사용하지 않으면 사용하지 않은 데이터를 정의 했다고 경고를 띄웁니다.
만약 아래와 같이 item을 정의 할 때 data_b의 값을 주지 않으면 컴파일에서 에러가 납니다.
let item = StructItem{
data_a : 3
};
> rustc .\struct.rs
error[E0063]: missing field `data_b` in initializer of `StructItem`
--> .\struct.rs:7:16
|
7 | let item = StructItem{
| ^^^^^^^^^^ missing `data_b`
error: aborting due to previous error
For more information about this error, try `rustc --explain E0063`.
Default Value 사용 하기
값을 꼭 할당하지 않아도 구조체를 사용 할 수 있습니다.
Default를 사용하는 방법인데 아래와 같이 사용하면 됩니다.
#[derive(Default)]
struct StructItem{
data_a : i32,
data_b : f64,
data_c : i64
}
fn main() {
let item = StructItem{
data_a : 3,
..Default::default()
};
println!("data b : {}", item.data_b);
}
Default Value를 사용하기 위해서는 #[derive(Default)]
어노테이션을 정의해줘야 합니다.
..Default::default()
는 data_a 만 값을 주고 나머지 값은 전부 Default 값을 넣도록 하는 방법입니다.
프로그램을 실행 시켜 보면 아래와 같이 f64의 Default 값인 0이 출력 됩니다.
> .\struct.exe
data b : 0
'Language > Rust' 카테고리의 다른 글
Rust 소스 코드 문서화 (0) | 2023.03.21 |
---|---|
Rust 열거형(Enum) (0) | 2023.03.20 |
Rust 매크로 (0) | 2023.03.11 |
Rust gRPC 사용하기 (0) | 2023.03.06 |
Rust로 폴더 감시자 만들기 (0) | 2023.03.05 |