Rust + Wasm 설렁 설렁 (2일차)

SAM·2025년 12월 18일

설렁 설렁 : 순수 취미 목적 학습 ~~ 주 2회 설렁 설렁 목표 ~~

  • 가변성은 인스턴스 전체가 지니게 된다. 일부 필드만 가변으로 만들 수 없다.

  • ..을 사용한 해체할당 문법이 존재(구조체 업데이트)한다. 다만 자바스크립트와 다르게 항상 해체 할당 표현식이 가장 아래에 와야한다.

  • 아래 코드에서 user2를 생성한 이후에는 user1을 더 이상 사용할 수 없다. user1username 필드의 Stringuser2로 이동(힙, 이동)하기 때문이다. 반면, user1에서 activesign_in_count값만 사용했다면 user2를 만든 이후에도 user1은 유효(복사, 스택)하다.

    struct User {
        active: bool,
        username: String,
        email: String,
        sign_in_count: u64,
    }
    
    fn main() {
        let user1 = User {
            active: true,
            username: String::from("someone"),
            email: String::from("user1@example.com"),
            sign_in_count: 1,
        };
        let user2 = User {
            email: String::from("user2@example.com"),
            ..user1
        };
    }
  • 러스트는 디버깅 정보를 출력하는 기능을 내장하고 있으며 이를 사용하려면 명시적인 동의가 필요하다

    #[derive(Debug)]
    struct Rectangle {
        width: u32,
        height: u32,
    }
  • 전체 모듈 트리 최상위에 crate 라는 모듈이 암묵적으로 위치한다.

  • 부모 모듈 안에 있는 아이템은 자식 모듈 내 비공개 아이템을 사용할 수 없지만, 자식 모듈 내 아이템은 조상 모듈 내 아이템을 사용할 수 있다. 그 이유는 자식 모듈의 세부 구현은 감싸져서 숨겨져 있지만, 자식 모듈 내에서는 자신이 정의된 콘텍스트를 볼 수 있기 때문이다.

profile
곰에서 사람으로 사람에서 곰으로

0개의 댓글