13.4.7 static

'static' 생명주기는 가능한 가장 긴 생명주기이고 실행되는 프로그램의 마지막 생명주기이다.'static생명주기도 더 짧은 생명주기로 강제될 수 있다. 변수를'static` 생명주기로 만드는 데는 두 가지 방법이 있고, 둘 모두 바이너리의 읽기-전용 메모리에 저장된다.

  • static 선언과 함께 상수를 만든다.
  • &'static str 타입으로 string 리터럴을 만든다.

다음 예제를 통해 각 방법을 살펴보자:

// `'static` 생명주기로 상수를 만든다.
static NUM: i32 = 18;

// `'static`인 `NUM`의 참조를 반환한다.
// 생명주기는 입력 인자로 강제된다.
fn coerce_static<'a>(_: &'a i32) -> &'a i32 {
    &NUM
}

fn main() {
    {
        // `string` 리터럴을 만들고 출력한다:
        let static_string = "I'm in read-only memory";
        println!("static_string: {}", static_string);

        // `static_string`이 범위에서 벗어나면, 
        // 참조는 더 이상 사용될 수 없지만 데이터는 바이너리에 남아있다.
    }

    {
        // `coerce_static`에 사용할 정수 생성.
        let lifetime_num = 9;

        // `NUM`을 `lifetime_num`의 생명주기로 강제한다:
        let coerced_static = coerce_static(&lifetime_num);

        println!("coerced_static: {}", coerced_static);
    }

    println!("NUM: {} stays accessible!", NUM);
}

See also:

'static constants

results matching ""

    No results matching ""