본문 바로가기

Rust-Language

Rust-language 프로그래밍 개념

반응형

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