• SEARCH

    통합검색
  • GAMEZONE
    • 커뮤니티
      • 공지사항
      • 유저게시판
        • 등업게시판
        • 출석체크
        • 정회원 무료자료실
      • 스크린샷
      • 인증자료실
    • 리니지
      • 게임공략 & 팁
      • 홍보게시판
      • 유틸자료실
      • 소스자료실
      • 자유게시판
      • 노하우 게시판
    • 메이플스토리
      • 게임공략 & 팁
      • 홍보게시판
      • 유틸자료실
      • 소스자료실
      • 자유게시판
      • 노하우 게시판
    • 바람의나라
      • 자유게시판
      • 홍보게시판
      • 자료게시판
        • 유틸자료실
        • 소스자료실
        • 클라이언트
        • 팩 자료실
      • 연구게시판
        • 개발내역
        • 질문과답변
        • 기타
      • 강의게시판
        • DR
        • CR
        • 구버전
        • 클라이언트 개조
        • 노하우 게시판
        • 게임공략 & 팁
    • 다크에덴
      • 게임공략 & 팁
      • 홍보게시판
      • 유틸자료실
      • 소스자료실
      • 자유게시판
      • 노하우 게시판
    • 믹스마스터
      • 게임공략 & 팁
      • 홍보게시판
      • 유틸자료실
      • 소스자료실
      • 자유게시판
      • 노하우 게시판
    • 라그나로크
      • 게임공략 & 팁
      • 홍보게시판
      • 유틸자료실
      • 소스자료실
      • 자유게시판
      • 노하우 게시판
    • 기타게임
      • 게임공략 & 팁
      • 홍보게시판
      • 유틸자료실
      • 소스자료실
      • 자유게시판
      • 노하우 게시판
    • 게임강의
    • 비베&포토샵
      • 자유게시판
      • 자료실
        • 일반자료실
        • 포인트 자료실
      • 노하우게시판
      • 포토샵게시판
    • 모바일
      • 게임공략
      • 포인트 자료실
      • 유틸자료실
      • 자유게시판
  • 기타게임 소스자료실
    • 기타게임 소스자료실 기타 ()
    • [Rust 공식문서 한국어 정리] 66. Rust 클로저 타입 가이드

      • 오뉴노노
      • 1시간 전 0

    [Rust 공식문서 한국어 정리] 66. Rust 클로저 타입 가이드



    원문 제목: Closure types — The Rust Reference

    작성자: Rust Language Team



    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

    📌 1. 서론 — 이 문서가 다루는 내용

    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━



    이 문서는 Rust의 클로저(Closure) 타입 시스템과 그 내부 동작을 설명합니다.

    Fn, FnMut, FnOnce 트레이트의 차이, 캡처 방식, 그리고 클로저의 익명 타입 특성을 다룹니다.

    클로저가 환경을 어떻게 캡처하는지(참조 vs 소유권 이전), 그리고 이것이 수명과 소유권에 미치는 영향을 중심으로 설명합니다.

    클로저를 함수 포인터나 트레이트 객체로 변환하는 방법, 그리고 move 클로저의 의미도 포함합니다.

    Rust의 함수형 프로그래밍 패턴과 콜백 설계를 하는 개발자에게 필수적인 내용입니다.



    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

    🔑 2. 핵심 개념 4가지

    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━



    ① Fn: 환경을 불변 참조로 캡처하여 여러 번 호출 가능한 클로저 트레이트입니다.

    ② FnMut: 환경을 가변 참조로 캡처하여 여러 번 호출 가능하지만, 호출 시 가변 소유권이 필요합니다.

    ③ FnOnce: 환경의 소유권을 이전받아 한 번만 호출 가능한 클로저 트레이트입니다.

    ④ move 키워드: 클로저가 캡처한 값의 소유권을 강제로 이전받아, 수명을 독립적으로 만듭니다.



    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

    📖 3. 주요 내용 상세

    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━



    Rust의 클로저는 익명 구조체로 구현되며, 컴파일러가 각 클로저마다 고유한 타입을 생성합니다.

    두 개의 동일한 문법을 가진 클로저라도 서로 다른 타입이며, 이를 trait object(&dyn Fn)로 통일해야 합니다.

    클로저는 환경에서 필요한 변수만 선택적으로 캡처하며, 사용 패턴에 따라 참조나 소유권을 취합니다.



    Fn은 &self로 호출되며, 불변 참조 캡처만 가능합니다.

    |x| x + 1처럼 외부 변수를 수정하지 않는 클로저는 Fn으로 동작합니다.

    Fn은 다른 코드와 공유할 수 있으며, 동시 호출도 가능합니다.



    FnMut는 &mut self로 호출되며, 가변 참조로 환경을 캡처합니다.

    외부 변수를 수정하는 클로저는 FnMut이며, 호출할 때마다 가변 소유권이 필요합니다.

    동시에 여러 곳에서 FnMut 클로저를 호출할 수 없으며, 이는 borrow checker가 컴파일 타임에 방지합니다.



    FnOnce는 self로 호출되며, 환경의 소유권을 소비합니다.

    move 클로저나, drop된 값을 캡처하는 클로저는 FnOnce가 됩니다.

    한 번 호출되면 클로저 자체가 소비되므로, 이후 재사용이 불가능합니다.



    move 키워드는 클로저가 캡처한 모든 값의 소유권을 강제로 이전합니다.

    let closure = move || println!("{}", s);는 s의 소유권을 클로저로 이동시킵니다.

    이는 수명이 짧은 지역 변수를 비동기 태스크나 다른 스레드로 전달할 때 필수적입니다.



    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

    🛠 4. 실전 활용

    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━



    멀티스레드에서 클로저를 전달할 때는 move로 소유권을 이전하여 수명 문제를 해결합니다.

    Iterator::map에는 Fn 클로저를, Iterator::for_each에는 FnMut 클로저를 사용합니다.

    콜백을 트레이트 객체(&dyn Fn)로 저장하여, 여러 클로저를 동형 컬렉션에 담습니다.



    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

    ✅ 5. 정리

    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━



    Rust 클로저는 Fn/FnMut/FnOnce 트레이트로 타입 시스템에 통합되어 있습니다.

    캡처 방식(불변/가변/소유)에 따라 자동으로 적절한 트레이트가 선택됩니다.

    move 클로저는 소유권 이전이 필요한 상황에서 수명 문제를 해결하는 핵심 도구입니다.



    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

    🔗 출처 링크

    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━



    원문: https://doc.rust-lang.org/reference/types/closure.html

    Rust Book Closures: https://doc.rust-lang.org/book/ch13-01-closures.html



    #Rust #Closures #Fn #FnMut #FnOnce #Move #FunctionalProgramming #번역

    이 게시물을..
    N
    0
    0
    • [Rust 공식문서 한국어 정리] 71. Rust Crossbeam 가이드오뉴노노
    • 2
      오뉴노노

    오뉴노노 님의 최근 글

    [Rust 공식문서 한국어 정리] 135. Rust Weak<T> 가이드 2026 06.08 [Rust 공식문서 한국어 정리] 118. Rust Tuple 타입 가이드 2026 06.08 [Rust 공식문서 한국어 정리] 117. Rust Type Alias 가이드 2026 06.08 [Rust 공식문서 한국어 정리] 116. Rust Existential Types 가이드 2026 06.08 [Rust 공식문서 한국어 정리] 115. Rust Generic Associated Types 가이드 2026 06.08

    오뉴노노 님의 최근 댓글

    ㅋㅋㅋㅋㅋ 2019 01.14 잘 읽었습니다 2018 12.30 포인트가 없어서 아직 시작을 못하고있는데요! 글은 잘 읽었습니다! 포인트 쌓고 도전할거에요 2018 12.30
    글쓴이의 서명작성글 감추기 
    댓글 쓰기 에디터 사용하기 닫기
    • view_headline 목록
    • 14px
    • [Rust 공식문서 한국어 정리] 71. Rust Crossbeam 가이드
    • 목록
      view_headline
    × CLOSE
    전체 던파 5 뮤 18 천상비 프로젝트신루 5 아이온 18 어둠의전설 28 리니지2 7 크로노스 5 칼온라인 3 기타 411
    기본 (503) 제목 날짜 수정 조회 댓글 추천 비추
    분류 정렬 검색
    • 포인트 획득 공지
      5
      2026.04.24 - 19:48 4853 5
    • 링크 업로드 관련 공지
      8
      2026.03.25 - 21:56 4660 8
    • 인증메일 공지
      3
      2026.03.15 - 16:42 4559 3
    • 파일링크 및 인증메일 발송 관련 문의 안내
      9
      2026.03.14 - 22:03 5163 9
    • 포인트 게시판 안내
      2026.02.28 - 19:14 5940
    • 게임존 사이트 변경 사항 안내
      9
      2026.02.26 - 01:07 7799 9
    • 소스자료는 직접 올려주세요
      2017.06.06 - 16:16 852
    503
    기타
    [Rust 공식문서 한국어 정리] 135. Rust Weak<T> 가이드
    N
    오뉴노노 18분 전
    502
    기타
    [Rust 공식문서 한국어 정리] 118. Rust Tuple 타입 가이드
    N
    오뉴노노 18분 전
    501
    기타
    [Rust 공식문서 한국어 정리] 117. Rust Type Alias 가이드
    N
    오뉴노노 19분 전
    500
    기타
    [Rust 공식문서 한국어 정리] 116. Rust Existential Types 가이드
    N
    오뉴노노 19분 전
    499
    기타
    [Rust 공식문서 한국어 정리] 115. Rust Generic Associated Types 가이드
    N
    오뉴노노 19분 전
    498
    기타
    [Rust 공식문서 한국어 정리] 114. Rust Impl Trait 반환 가이드
    N
    오뉴노노 19분 전
    497
    기타
    [Rust 공식문서 한국어 정리] 113. Rust Higher-Ranked Trait Bounds 가이드
    N
    오뉴노노 20분 전
    496
    기타
    [Rust 공식문서 한국어 정리] 112. Rust 라이프타임 서브타이핑 가이드
    N
    오뉴노노 20분 전
    495
    기타
    [Rust 공식문서 한국어 정리] 111. Rust 'static 라이프타임 가이드
    N
    오뉴노노 20분 전
    494
    기타
    [Rust 공식문서 한국어 정리] 110. Rust Sync 트레이트 가이드
    N
    오뉴노노 21분 전
    493
    기타
    [Rust 공식문서 한국어 정리] 109. Rust Send 트레이트 가이드
    N
    오뉴노노 21분 전
    492
    기타
    [Rust 공식문서 한국어 정리] 108. Rust Sized 트레이트 가이드
    N
    오뉴노노 22분 전
    491
    기타
    [Rust 공식문서 한국어 정리] 107. Rust Copy/Clone 트레이트 가이드
    N
    오뉴노노 22분 전
    490
    기타
    [Rust 공식문서 한국어 정리] 106. Rust Hash 트레이트 가이드
    N
    오뉴노노 22분 전
    489
    기타
    [Rust 공식문서 한국어 정리] 105. Rust PartialOrd/Ord 트레이트 가이드
    N
    오뉴노노 23분 전
    488
    기타
    [Rust 공식문서 한국어 정리] 104. Rust PartialEq/Eq 트레이트 가이드
    N
    오뉴노노 23분 전
    487
    기타
    [Rust 공식문서 한국어 정리] 103. Rust Debug 트레이트 가이드
    N
    오뉴노노 24분 전
    486
    기타
    [Rust 공식문서 한국어 정리] 102. Rust Display/Formatter 가이드
    N
    오뉴노노 24분 전
    485
    기타
    [Rust 공식문서 한국어 정리] 101. Rust Default 트레이트 가이드
    N
    오뉴노노 24분 전
    484
    기타
    [Rust 공식문서 한국어 정리] 100. Rust Deref/DerefMut 트레이트 가이드
    N
    오뉴노노 25분 전
    483
    기타
    [Rust 공식문서 한국어 정리] 99. Rust Drop 트레이트 가이드
    N
    오뉴노노 27분 전
    482
    기타
    [Rust 공식문서 한국어 정리] 98. Rust ToOwned 트레이트 가이드
    N
    오뉴노노 27분 전
    481
    기타
    [Rust 공식문서 한국어 정리] 97. Rust Borrow/BorrowMut 트레이트 가이드
    N
    오뉴노노 28분 전
    480
    기타
    [Rust 공식문서 한국어 정리] 96. Rust AsRef/AsMut 트레이트 가이드
    N
    오뉴노노 28분 전
    479
    기타
    [Rust 공식문서 한국어 정리] 95. Rust From/Into 트레이트 가이드
    N
    오뉴노노 28분 전
    478
    기타
    [Rust 공식문서 한국어 정리] 94. Rust IntoIterator 가이드
    N
    오뉴노노 29분 전
    477
    기타
    [Rust 공식문서 한국어 정리] 93. Rust Iterator 가이드
    N
    오뉴노노 29분 전
    476
    기타
    [Rust 공식문서 한국어 정리] 92. Rust Option<T> 가이드
    N
    오뉴노노 29분 전
    475
    기타
    [Rust 공식문서 한국어 정리] 91. Rust Result<T,E> 가이드
    N
    오뉴노노 30분 전
    474
    기타
    [Rust 공식문서 한국어 정리] 90. Rust panic! 매크로 가이드
    N
    오뉴노노 30분 전
    473
    기타
    [Rust 공식문서 한국어 정리] 89. Rust Release 빌드 최적화 가이드
    N
    오뉴노노 30분 전
    472
    기타
    [Rust 공식문서 한국어 정리] 88. Rust Profile 설정 가이드
    N
    오뉴노노 31분 전
    471
    기타
    [Rust 공식문서 한국어 정리] 87. Rust Cargo.lock 가이드
    N
    오뉴노노 31분 전
    470
    기타
    [Rust 공식문서 한국어 정리] 86. Rust Cargo.toml 가이드
    N
    오뉴노노 31분 전
    469
    기타
    [Rust 공식문서 한국어 정리] 85. Rust Cargo 가이드
    N
    오뉴노노 32분 전
    468
    기타
    [Rust 공식문서 한국어 정리] 84. Rust rustup 가이드
    N
    오뉴노노 1시간 전 1
    467
    기타
    [Rust 공식문서 한국어 정리] 83. Rust cargo-deny 가이드
    N
    오뉴노노 1시간 전
    466
    기타
    [Rust 공식문서 한국어 정리] 82. Rust cargo-audit 가이드
    N
    오뉴노노 1시간 전
    465
    기타
    [Rust 공식문서 한국어 정리] 81. Rust Miri 가이드
    N
    오뉴노노 1시간 전
    464
    기타
    [Rust 공식문서 한국어 정리] 80. Rust Criterion 가이드
    N
    오뉴노노 1시간 전
    463
    기타
    [Rust 공식문서 한국어 정리] 79. Rust OpenTelemetry 가이드
    N
    오뉴노노 1시간 전
    462
    기타
    [Rust 공식문서 한국어 정리] 78. Rust Tracing 가이드
    N
    오뉴노노 1시간 전
    461
    기타
    [Rust 공식문서 한국어 정리] 77. Rust Axum 가이드
    N
    오뉴노노 1시간 전
    460
    기타
    [Rust 공식문서 한국어 정리] 76. Rust Reqwest 가이드
    N
    오뉴노노 1시간 전
    459
    기타
    [Rust 공식문서 한국어 정리] 75. Rust Hyper 가이드
    N
    오뉴노노 1시간 전
    458
    기타
    [Rust 공식문서 한국어 정리] 74. Rust MIO 가이드
    N
    오뉴노노 1시간 전
    457
    기타
    [Rust 공식문서 한국어 정리] 73. Rust Tokio 가이드
    N
    오뉴노노 1시간 전
    456
    기타
    [Rust 공식문서 한국어 정리] 72. Rust Rayon 가이드
    N
    오뉴노노 1시간 전
    455
    기타
    [Rust 공식문서 한국어 정리] 71. Rust Crossbeam 가이드
    N
    오뉴노노 1시간 전
    454
    기타
    [Rust 공식문서 한국어 정리] 70. Rust thread_local 가이드
    N
    오뉴노노 1시간 전
    • 1 2 3 4 5 6 7 8 9 10 .. 11
    • / 11 GO
  • GAMEZONE
 GAMEZONE all rights reserved.
by OrangeDay