데이터의 라이프타임(lifetime)을 나타내는 특별한 키워드입니다. `'static`은 프로그램 전체 수명 동안 지속되는 정적(static) 데이터를 표현합니다. `'static`은 라이프타임이 가장 긴 수명을 갖는 것으로 간주됩니다.
`'static`은 다음과 상황에서 사용될 수 있습니다
1. 리터럴 데이터: 문자열 리터럴과 정수형 리터럴 같은 리터럴 값은 `'static` 라이프타임을 갖습니다. 이는 프로그램 실행 동안 변하지 않고 메모리에 상주하는 데이터입니다.
let static_string: &'static str = "Hello, world!";
2. 정적 변수: `static` 키워드로 선언된 정적 변수는 `'static` 라이프타임을 가집니다. 이러한 변수는 프로그램 전체에서 사용 가능하며, 프로그램이 실행되는 동안 메모리에 유지됩니다.
static STATIC_VALUE: i32 = 42;
3. 글로벌 상수: `const` 키워드로 선언된 글로벌 상수는 `'static` 라이프타임을 가집니다. 이러한 상수는 프로그램 전체에서 사용 가능하며, 프로그램이 실행되는 동안 메모리에 상주합니다.
const PI: f64 = 3.14159;
`'static` 라이프타임은 프로그램 전체에서 사용되는 데이터의 수명을 나타내므로, 해당 데이터는 프로그램 실행 동안 메모리에 유지됩니다. Rust는 `'static` 데이터에 대한 안전한 접근을 보장하고 메모리 안정성을 유지하기 위해 관련 규칙과 보호 기능을 제공합니다.
Rust에서 `&'static`은 `'static` 라이프타임을 갖는 참조(reference)를 나타냅니다. `'static` 라이프타임은 프로그램의 전체 수명 동안 유지되는 정적(static) 데이터를 가리킵니다.
`'static`은 Rust의 라이프타임 시스템에서 가장 긴 수명을 갖는 라이프타임으로, 해당 데이터가 프로그램 실행 동안 유지되는 것을 의미합니다. `'static` 라이프타임은 특히 리터럴 문자열, 정적 변수, 글로벌 상수 등과 관련됩니다.
`&'static` 참조는 `'static` 라이프타임 데이터에 대한 불변 참조(immutable reference)를 나타냅니다. `'static` 데이터에 대한 불변 참조는 프로그램 전체에서 안전하게 사용될 수 있으며, 수명 관리 및 대여 규칙에 따라 해당 데이터에 대한 접근을 제한합니다.
예를 들어, 다음은 `'static` 라이프타임을 갖는 문자열에 대한 불변 참조를 나타내는 예입니다:
fn main() {
let static_string: &'static str = "Hello, world!";
// 'static 라이프타임 데이터에 대한 불변 참조
println!("{}", static_string);
}
위의 예제에서 `static_string` 변수는 `'static` 라이프타임을 갖는 문자열에 대한 `&'static str` 타입의 참조를 가지고 있습니다. 이 참조는 프로그램 전체 수명 동안 유효하며, 해당 문자열에 대한 불변 참조를 제공합니다.
'Rust' 카테고리의 다른 글
[Rust] mut 변수 (139) | 2024.02.15 |
---|---|
[RUST] & * ` ' ' 다양한 기호 (58) | 2023.08.12 |
[RUST] match (127) | 2023.08.10 |
[RUST] if let (78) | 2023.08.09 |
[RUST] unwrap과 '?' (99) | 2023.08.07 |