Variable
let
기본적으로 변수는 let 으로 선언하고 불변이며, mut으로 가변으로 선언할 수 있습니다
fn main() {
let junny = 1;
let mut mutableJunny = 2;
junny = 4; // error: cannot assign twice to immutable variable `junny`
mutableJunny = 4;// ok
}
const
상수는 불변성을 띄고 mut이 허용되지 않습니다
fn main() {
const JUNNY:str = *"land";
const AGE:i32 = 20;
}
Shadowing
같은 이름의 변수를 선언할 수 있고 값은 덮어씌워집니다.
fn main() {
let x = 5;
let x = x + 1;
let x = x * 3;
print!("value : {}", x);
}
> value : 18
Type
Rust는 정적 타입 언어로, 컴파일 타임에 모든 변수의 타입이 결정됩니다. Rust의 데이터 타입은 크게 두 가지 범주로 나뉩니다
스칼라 타입
스칼라 타입은 하나의 값으로 표현되는 타입입니다. Rust에서는 4가지 기본 스칼라 타입이 있습니다.
a. 정수형(Integer): 정수형은 부호 있는 i8
, i16
, i32
, i64
, i128
및 부호 없는 u8
, u16
, u32
, u64
, u128
타입이 있습니다.
숫자는 크기에 따라 표현 범위가 다릅니다.
b. 부동 소수점(Floating-Point): 부동 소수점 타입은 실수를 표현합니다. Rust에서는 두 가지 부동 소수점 타입이 있습니다 f32와 f64. 이 두 타입은 각각 32비트와 64비트로 표현되며, 단정도와 배정도 부동 소수점을 나타냅니다.
c. 불리언(Boolean): 불리언 타입은 참(true
) 또는 거짓(false
)의 값을 갖습니다.
불리언 타입은 bool
로 표현됩니다.
d. 문자(Character): 문자 타입은 단일 유니코드 스칼라 값을 나타냅니다.
Rust의 문자 타입은 char
로 표현되며, 작은 따옴표로 묶입니다.
복합 타입
복합 타입은 여러 값을 하나의 타입으로 묶습니다 Rust에서는 튜플(tuple)과 배열(array)이 주요 복합 타입입니다.
a. 튜플(Tuple): 튜플은 여러 값의 고정된 길이의 순서 있는 목록입니다.
각 값은 서로 다른 타입을 가질 수 있습니다.
튜플은 괄호 ()
와 쉼표 ,
를 사용하여 정의되며, 튜플의 요소에 접근하려면 점 .
을 사용합니다.
fn main() {
let my_tuple = (1, "hello", 3.14);
println!("The first element of my_tuple is: {}", my_tuple.0);
}
b. 배열(Array): 배열은 동일한 타입의 여러 값의 고정된 길이의 순서 있는 목록입니다
배열은 대괄호 []
를 사용하여 정의되며, 인덱스를 사용하여 배열의 요소에 접근할 수 있습니다.
rustCopy codefn main() {
let my_array: [i32; 5] = [1, 2, 3, 4, 5];
println!("The second element of my_array is: {}", my_array[1]);
}
사용자 정의 데이터 타입
Rust는 사용자 정의 데이터 타입을 만드는 데 사용할 수 있는 몇 가지 기능을 제공합니다. 구조체(struct)와 열거형(enum)은 두 가지 주요 사용자 정의 데이터 타입입니다.
a. 구조체(Struct): 구조체는 사용자 정의 데이터 타입을 만드는 데 사용되며, 여러 필드를 묶어 하나의 타입으로 정의할 수 있습니다. 구조체는 struct
키워드를 사용하여 정의합니다.
struct Point {
x: i32,
y: i32,
}
fn main() {
let p = Point { x: 0, y: 7 };
println!("The point is at ({}, {})", p.x, p.y);
}
b. 열거형(Enum): 열거형은 서로 다른 타입의 여러 값 중 하나를 가질 수 있는 사용자 정의 데이터 타입입니다. 열거형은 enum
키워드를 사용하여 정의되며, 각각의 값은 열거형의 한 멤버입니다.
enum Direction {
North,
South,
East,
West,
}
Rust의 데이터 타입은 프로그래밍의 기본 구성 요소로, 다양한 값을 효과적으로 저장하고 처리하는 데 필요한 도구를 제공합니다. 이러한 데이터 타입을 이해하고 사용하면 코드의 안전성과 가독성을 높일 수 있으며, Rust의 강력한 타입 시스템을 최대한 활용할 수 있습니다. Rust에서 제공하는 기본 데이터 타입 외에도, 사용자 정의 데이터 타입을 사용하여 프로젝트에 필요한 복잡한 데이터 구조를 만들 수 있습니다. 이를 통해 코드의 구조를 명확하게 하고, 관리 및 유지 보수가 쉬운 애플리케이션을 개발할 수 있습니다
타입 추론
Rust의 타입 추론 시스템은 코드 작성을 더 간결하게 만들어주는 중요한 기능입니다. 컴파일러는 대부분의 경우 변수의 타입을 자동으로 추론할 수 있으므로, 변수를 선언할 때마다 명시적으로 타입을 지정할 필요가 없습니다. 그러나 명확한 코드를 작성하거나 컴파일러의 타입 추론을 도와주기 위해 타입을 명시적으로 지정하는 것이 좋습니다.
fn main() {
let a = 42; // i32로 추론됩니다.
let b: u32 = 42; // 명시적으로 u32 타입으로 지정합니다.
}
Rust의 제네릭을 사용하면 다양한 타입에 동작하는 함수나 구조체를 만들 수 있습니다. 제네릭은 타입에 대한 일반화를 가능하게 하여 코드의 중복을 줄이고 재사용성을 높이는 데 도움이 됩니다.
Last updated