강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của 16326916857
16326916857

câu hỏi đã được viết

Giới thiệu và sử dụng Rust, một ngôn ngữ lập trình tinh tế, hiệu suất cao

Đặc điểm | Giới hạn phạm vi của các loại chung

trait를 인자로 받을 때 &impl과 &dyn차이

Đã giải quyết

Viết

·

350

1

Trait강좌에서 &impl만을 사용해 trait를 구현한 객체를 함수인자로 전달 받았는데 &dyn을 사용했을 때 차이가 궁금합니다.정적 디스패치, 동적 디스패치라고는 나오는데 &dyn이 들어가야하는 곳에 항상 &impl도 동작할 것 같아 어떤 예에서 &dyn을 사용해야 하는지 이해가 가지 않습니다 ㅠ강의 내용에는 나와있지 않은 부분이지만 강사님 경험상 dyn keyword를 사용해야만 하는 경우가 있으셨을까요?? 
rust

Câu trả lời 2

1

hatemogi님의 프로필 이미지
hatemogi
Người chia sẻ kiến thức

심도 깊은 질문 감사합니다. impl은 정적 디스패치라고, 컴파일 타임에 해당 트레이트를 구현한 구체적인 타입을 파악할 수 있는 경우이고, dyn같은 경우 동적으로 런타임에 파악하는 경우에 활용합니다. 전자는 컴파일타임에 구체적인 정보를 파악해야 하는 대신에 성능 페널티가 없고, 후자는 컴파일 타임에 미리 정해지지 않은 해당 트레이트 구현체를 활용할 수 있지만, 런타임에 해당 구현체를 쫓아가야 하는 부담이 있습니다.

해당 주제는 중급 강의에 잘 정리해볼게요.

수강 및 질문 감사드립니다.

16326916857님의 프로필 이미지
16326916857
Người đặt câu hỏi

답변 감사합니다!

중급 강의도 기대하겠습니다 ㅎㅎ 덕분에 잘 이해가 됐습니다!

0

안녕하세요, 인프런 AI 인턴입니다.

제공된 정보에는 Rust의 &impl Trait&dyn Trait의 사용과 차이점에 대한 직접적인 내용이 포함되어 있지 않습니다. 따라서, 구체적인 예시나 내용으로 답변드리기 어렵습니다. 하지만, Rust에서 &impl Trait&dyn Trait의 차이를 간략하게 설명드릴 수 있습니다.

  • &impl Trait은 정적 디스패치를 사용합니다. 이는 컴파일 타임에 구체적인 타입이 결정되며, 각 타입 별로 별도의 함수 코드가 생성됩니다. 덕분에 실행 시점에서의 성능이 우수할 수 있으나, 컴파일된 코드의 크기가 증가할 수 있습니다.

  • &dyn Trait은 동적 디스패치를 사용합니다. 이 경우 컴파일 타임에는 구체적인 타입이 결정되지 않고, 런타임에 타입 정보를 확인하여 해당 기능을 실행합니다. 이로 인해 코드의 유연성은 증가하지만, 성능상의 오버헤드(예: 추가적인 indirection)가 발생할 수 있습니다.

&impl Trait&dyn Trait 중 어느 것을 사용할지는 상황에 따라 다릅니다. 예를 들어, 함수가 단일 타입의 인자만을 처리하면서 성능이 중요한 상황이라면 &impl Trait이 좋을 수 있습니다. 반대로, 여러 다른 타입의 객체들을 동일한 함수에서 처리해야 하고, 이 타입들이 모두 특정 트레잇을 구현하는 경우에는 &dyn Trait이 적합할 수 있습니다.

Rust의 공식 문서나 해당 주제에 관련된 추가 학습 자료를 참고하시는 것을 추천드립니다.

Hình ảnh hồ sơ của 16326916857
16326916857

câu hỏi đã được viết

Đặt câu hỏi