TrustedLen

TrustedLen (정확한 길이를 보장하는 반복자 트레이트)

size_hint를 사용해 정확한 길이를 보고하는 반복자를 위한 unsafe 트레이트예요. unsafe 코드가 크기 정보를 신뢰할 수 있게 해 줘요.

출처: Rust 공식 문서

본문

이 반복자는 하한이 상한과 같은(즉 정확한) 크기 힌트, 또는 상한이 None인 크기 힌트를 보고해요. 상한이 None이 될 수 있는 경우는 실제 반복자 길이가 usize::MAX보다 클 때뿐이에요. 그 경우 하한은 usize::MAX가 되어야 하며, 결과적으로 Iterator::size_hint()(usize::MAX, None)이 돼요.

반복자는 보고한 요소 수만큼 정확히 생성하거나, 끝에 도달하기 전에 발산(diverge)해야 해요.

어떤 어댑터는 TrustedLen이 되면 안 되나요?

어댑터가 반복자를 주어진 양만큼 더 짧게 만든다면, 그 어댑터가 TrustedLen을 구현하는 것은 보통 잘못된 일이에요. 내부 반복자가 usize::MAX보다 많은 항목을 반환할 수 있는데, 내부 반복자의 size_hint가 이미 포화되어 그 정보를 잃었으므로 그보다 k개 더 적은 요소가 무엇인지 알 방법이 없어요. 그래서 ITrustedLen을 구현해도 SkipTrustedLen이 아니에요.

안전성 (Safety)

이 트레이트는 계약이 유지될 때만 구현해야 해요. 이 트레이트의 소비자는 Iterator::size_hint()의 상한을 검사해야 해요.

시그니처는 다음과 같아요.

pub unsafe trait TrustedLen: Iterator { }

더 알아보기 (Learn more)

Rust 공식 문서