메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

분륲: 프로그래밍 언어

개요

Affine type이란 프로그래밍 언어나 타입 시스템에서, 어떤 값이 최대 한 번만 사용될 수 있음을 보장하는 타입이다. 정확히 한번 사용해야 하는 Linear type과는 다르게, 최대 사용안하거나 1번 사용하는 것을 허용한다.

Affine type은 한번 사용된 type이 다시 사용되는 것을 막기 때문에 안전성을 컴파일 타임에 보장할 수 있다.

Rust에서 본직적으로 Copy를 사용하지 못하는 모든 타입은 Affine하다고 볼 수 있다. (E.g., Integer 혹은 Reference)

fn consume(x: String) {
    println!("{}", x);
}

fn main() {
    let s = String::from("hi");
    consume(s);   // 여기서 소유권 이동
    // println!("{}", s); // ❌ 사용 불가 (affine 제약)
}