走进 Rust;高级 trait
Rust About 969 words关联类型 associated types
将类型占位符与trait
相关联的方式,这样trait
的方法签名中就可以使用这些占位符类型。
trait
的实现者会针对特定的实现在这个占位符类型指定相应的具体类型。
标准库中的 Iterator
Item
是一个占位符类型。
next
方法返回的Option<Self::Item>
类型。
Iterator
的实现者会指定Item
的具体类型
pub trait Iterator {
type Item;
fn next(&mut self) -> Option<Self::Item>;
}
标准库中的 Iterator 实现
Chars
实现了Iterator
,指定了Item
占位符类型是char
。
#[stable(feature = "rust1", since = "1.0.0")]
impl<'a> Iterator for Chars<'a> {
type Item = char;
#[inline]
fn next(&mut self) -> Option<char> {
// SAFETY: `str` invariant says `self.iter` is a valid UTF-8 string and
// the resulting `ch` is a valid Unicode Scalar Value.
unsafe { next_code_point(&mut self.iter).map(|ch| char::from_u32_unchecked(ch)) }
}
}
自定义实现 Iterator
Counter
是自定义的结构体,实现Iterator
,指定Item
为u32
类型。
impl Iterator for Counter {
type Item = u32;
fn next(&mut self) -> Option<Self::Item> {
// --snip--
}
}
Views: 639 · Posted: 2023-04-11
————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb/LiteNote扫描下方二维码关注公众号和小程序↓↓↓
Loading...