Rust-language 데이터 타입
Rust는 정적 타입의 언어입니다.
변수의 타입이 컴파일 시점에 반드시 정해져 있어야합니다.
스칼라 타입 - 하나의 값을 표현
정수, 문자, 부동 소수점, 불린로 네 가지 스칼라 타입을 가지고 있음.
정수형
| 길이 ( bit ) | signed | unsigned |
| 8 | i8 | u8 |
| 16 | i16 | u16 |
| 32 | i32 | u32 |
| 64 | i64 | u64 |
| 128 | i128 | u128 |
| arch | isize | usize |
정수형 리터럴
| 숫자 리터럴 | 예 |
| Decimal | 98_222 |
| Hex | 0xff |
| Octal | 0o77 |
| Binary | 0b1111_0000 |
| Byte ( 오직 u8만) | b'A' |
부동 소수점 ( f32, f64)
let x = 2.0; // f64
let y: f32 = 3.0; // f32
불린 타입
let t = true;
let f: bool = false;
문자 타입 ( char )
let c = 'z';
let z: char = 'ℤ';
let heart_eyed_cat = '❤️';
Rust language 변수와 가변성
Rust에서 변수는 기본적으로 불변(immutable)입니다.
이 말은 즉 한번 선언 시 값이 변경 되지 않습니다.
let x = 5;
println!("x의 벨류는 : {x}")
println!("x의 벨류는 : {}", x);
x = 6;
println!("x의 벨류는 : {x}")
println!("x의 벨류는 : {}", x);
코드 실행 시
$ cargo run
Compiling variables v0.1.0 (file:///projects/variables)
error[E0384]: cannot assign twice to immutable variable `x`
--> src/main.rs:4:5
|
2 | let x = 5;
| -
| |
| first assignment to `x`
| help: consider making this binding mutable: `mut x`
3 | println!("The value of x is: {x}");
4 | x = 6;
| ^^^^^ cannot assign twice to immutable variable
For more information about this error, try `rustc --explain E0384`.
error: could not compile `variables` due to previous error
해당 문구처럼 "불변 함수 x에 두 번의 값을 할당할 수 없다" 라는 내용의 에러 메시지 출력
let mut x = 5;
x = 6;
불변 함수에서 가변 함수로 만들려면 mut 키워드를 사용해야 합니다.
const ( 상수 ) - 항상 불변
let 키워드 대신 const 키워드로 선언하며, 값의 타입은 반드시 명시되어 있어야 함.
const one : u32 = 1;
Rust - Shadowing 이란?
새 변수를 이전 변수명과 같은 이름으로 선언할 수 있습니다.
첫 번째 변수가 두 번째 변수에 의해 가려졌다( shadowed ) 라고 표현하며,
해당 변수의 이름을 사용 할 때 컴파일러가 두 번째 변수를 보게 될 것이라는 의미를 가졌습니다.
fn main() {
let x = 5;
let x = x + 1;
{
let x = x * 2;
println!("안쪽 x의 벨류는 : {x}");
}
println!("x의 벨류는 : {x}");
}
Compiling variables v0.1.0 (file:///projects/variables)
Finished dev [unoptimized + debuginfo] target(s) in 0.31s
Running `target/debug/variables`
안쪽 x의 벨류는 : 12
x의 벨류는 : 6
함수 정의
Rust에서의 함수는 재사용 가능한 코드 블록을 작성하는 데 사용되며, fn 키워드로 정의됩니다.
함수는 이름, 매개변수 목록, 반환 타입, 그리고 함수 본문으로 구성됩니다.
1. 기본적인 함수 정의
fn 함수명(매개변수1: 타입1, 매개변수2: 타입2, ...) -> 반환 타입 {
// 함수 본문
}
두개의 정수를 더하는 함수 정의
fn add(x: i32, y: i32) -> i32 {
x + y // 반환 값
}
코드로 작성한 add 함수는 두개의 i32 타입의 매개변수를 받아 그합을 반환합니다.
2. 함수 호출
let result = add(2, 3);
println!("결과: {}", result); // 결과: 5
함수는 함수명 다음에 괄호와 함께 매개변수를 전달하여 호출할수 있습니다.
3. 반환 값
Rust 함수에서는 함수의 반환 값은 마지막 표현식입니다.
return 키워드는 일반적으로 필요하지 않음.
하지만 함수의 중간에서 반환하려면 return 키워드를 사용해도 무방합니다.
4. 매개변수
함수의 매개변수는" 변수명 : 타입 형식 " 으로 정의됩니다.
여러 개의 매개변수가 있을경우에는 쉼표로 구분
fn main() {
another_function(5);
}
fn another_function(x: i32) {
println!("The value of x is: {x}");
}
컴파일시
$ cargo run
Compiling functions v0.1.0 (file:///projects/functions)
Finished dev [unoptimized + debuginfo] target(s) in 1.21s
Running `target/debug/functions`
The value of x is: 5
제어 흐름
Rust의 제어 흐름문에는 조건문( if, else ), 반복문( loop, while, for ) 등이 존재
if문 예
let number = 3;
if number < 5 {
println!("조건이 참입니다.");
} else {
println!("조건이 거짓입니다.");
}
조건문 if, else를 사용하여 조건에 맞는 로직 실행가능
else if를 사용하여 추가적인 조건도 사용가능합니다.
반복문 - loop
// 무한 반복
loop {
println!("무한 반복!");
}
// 조건 반복
let mut number = 3;
while number != 0 {
println!("{}!", number);
number = number - 1;
}
// 컬렉션 반복
let arr = [10, 20, 30, 40, 50];
for element in arr.iter() {
println!("{}", element);
}
반복문: loop를 사용하여 무한 반복을, while을 사용하여 조건이 참인 동안 반복을,
for를 사용하여 컬렉션의 각 요소에 대해 반복을 수행할 수 있습니다.
'Rust-Language' 카테고리의 다른 글
| Rust-Language 열거형과 패턴 매칭 (3) | 2023.12.31 |
|---|---|
| Rust-Language 구조체 (2) | 2023.12.30 |
| Rust-Language 소유권 개념 (2) | 2023.12.27 |