static in Rust

코와->코어·2022년 6월 27일
0

Substrate 공부하기

목록 보기
8/8

constants 유형

러스트에는 두 가지 종류의 상수 타입이 있는데,

1. const

변하지 않는 값을 담는 타입이고,

2. static

  • 'static 라이프타임을 가지고 있는
  • 값이 변할 수도 있는 변수를 담는 타입입니다.

static 키워드는 글로벌 변수를 선언하는데, 이 변수들은 read-only 메모리 영역에 위치하기 때문에 값을 수정하는 것이 금지됩니다.

사용법

1. 참조값

참조 라이프타임을 나타내는 'static은 해당 참조가 가리키는 데이터가 프로그램 전체 라이프타임 동안 유효하다는 것을 의미합니다.

static NUM: i32 = 18;

let s: &'static str = "hello world";

2. Trait bound

만약에 어떠한 레퍼런스의 라이프타임이 'static 으로 명시되어 있다면 해당 레퍼런스는 프로그램의 전체 실행 시간 동안 존재하는 데이터를 레퍼런스 한다는 의미가 됩니다.
그래서 해당 값을 받는 쪽에서 원하는 만큼 해당 타입을 사용할 수 있습니다. 소유한 데이터를 넘길 때 'static 라이프타임 바운드를 갖습니다.

fn print_it( input: impl Debug + 'static ) {
    println!( "'static value passed in is: {:?}", input );
}

fn main() {
    // i is owned and contains no references, thus it's 'static:
    let i = 5;
    print_it(i);

    // oops, &i only has the lifetime defined by the scope of
    // main(), so it's not 'static:
    print_it(&i);
}
profile
풀스택 웹개발자👩‍💻✨️

0개의 댓글