Rust의 const()

Nilesh Katuwal 2022년6월7일
Rust의 const()

이 글에서 우리는 Rust에서 const()가 무엇인지 배울 것입니다.

Rust의 const()

프로그램 전체에서 특정 값을 여러 번 사용하는 경우 반복적으로 복사하는 것이 번거로울 수 있습니다. 또한 함수에서 함수로 전달되는 변수로 만드는 것이 항상 가능하거나 바람직한 것은 아닙니다.

const 키워드는 이러한 경우 코드를 복제하는 데 유용한 대안입니다.

Rust에는 전역을 포함하여 모든 범위에서 선언할 수 있는 두 가지 유형의 상수가 있습니다. 둘 다 유형의 명시적 주석이 필요합니다.

  1. const - 변경 불가능한 값(전형적인 경우)

  2. static - 정적 수명을 가진 변경 가능한 변수

    정적 수명이 추론되므로 지정할 필요가 없습니다. 변경 가능한 정적 변수에 액세스하거나 변경하는 것은 안전하지 않습니다.

예시:

fn main() {
   const THE_LIMIT:i32 = 120;
   const NUM:f32 = 3.14;

   println!("The limit of user is {}", THE_LIMIT);
   println!("The value of num is {}",NUM);
}

출력:

The limit of user is 120
The value of num is 3.14

상수는 명시적으로 입력해야 합니다. let과 달리 컴파일러가 유형을 결정하도록 할 수 없습니다. 모든 상수 값은 const로 정의할 수 있습니다. 이는 상수에 포함하는 것이 의미가 있는 대부분의 항목입니다. 예를 들어 const는 파일에 적용할 수 없습니다.

const 항목과 static 항목의 현저한 유사성은 각각을 언제 사용해야 하는지에 대한 불확실성을 만듭니다. 상수는 사용될 때마다 기울어져 사용을 단순히 const 이름을 해당 값으로 바꾸는 것과 동일하게 만듭니다.

대조적으로, 정적 변수는 모든 액세스가 공유하는 단일 메모리 주소를 가리킵니다. 이것은 상수와 달리 소멸자를 가질 수 없으며 코드베이스 전체에서 단일 값으로 작동할 수 없음을 의미합니다.

const 키워드는 const Tmut T.에서 볼 수 있듯이 원시 포인터 없이도 사용됩니다.

예시:

static LANGUAGE: &str = "Rust";
const LIMIT: i32 = 10;

fn is_big(n: i32) -> bool {
    n > LIMIT
}

fn main() {
    let n = 16;
    println!("{} is a programming language.", LANGUAGE);
    println!("The limit is {}", LIMIT);
    println!("{} is {}", n, if is_big(n) { "large" } else { "small" });

}

출력:

Rust is a programming language.
The limit is 10
16 is large