LabHub

Rust — 컴파일러가 막는 것들 · 소유권과 빌림 · 퀴즈

소유권 확인

LabHub 에서 이어서 보기

문항 6개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.

  1. `let s = String::from("hi"); let t = s;` 뒤에 `s` 를 쓰면?

    1. 복사돼서 잘 동작한다
    2. 컴파일 오류 — 주인이 t 로 옮겨졌다
    3. 실행 중 오류
    4. 경고만 난다
  2. 읽기 빌림이 살아 있는 상태에서 `v.push(...)` 가 막히는 이유는?

    1. 빌림 문법이 애초에 틀려서
    2. push 가 재할당하면 기존 참조가 무효가 되기 때문
    3. `Vec` 이 기본적으로 불변이라서
    4. 스레드 안전을 위한 제약이라서
  3. 빌림의 수명은 언제까지인가?

    1. 블록 끝까지
    2. 함수 끝까지
    3. 프로그램 끝까지
    4. 마지막으로 쓰인 지점까지
  4. 소유권과 싸우다 막혔을 때 실무에서 합리적인 첫 선택은?

    1. clone() 하고 넘어간다
    2. unsafe 를 쓴다
    3. 전역 변수로 뺀다
    4. Rc<RefCell<>> 로 감싼다
  5. `unsafe` 블록에 대한 올바른 이해는?

    1. 컴파일러가 검사할 수 없으니 내가 보증한다는 표시
    2. 어떤 경우에도 쓰면 안 되는 것
    3. 성능을 올려 주는 최적화 힌트
    4. 나이틀리 실험 기능을 켜는 것
  6. 에러를 다룰 때 `unwrap()` 대신 `match`/`?` 를 쓰는 이유는?

    1. `match` 가 더 빠르기 때문에
    2. 돌아오는 타입이 서로 달라서
    3. 실패하면 그 자리에서 panic 이라서
    4. clippy 가 경고를 내기 때문에