Оverflow 评估需求,Rust Traits
Оverflow evaluating the requirement, Rust Traits
我正在尝试编写一个需要内部类型 Iter 的特征。而 Iter 应该实现 Iterator。我收到这样的错误“溢出评估需求<str as SomeTrait>::Iter == _
”并且无法理解它想要什么。谁能帮忙理解一下?)
pub trait SomeIter {
type Iter where Self::Iter: Iterator;
}
struct NumberIter(u32, u8);
impl Iterator for NumberIter {
type Item = u8;
fn next(&mut self) -> Option<Self::Item> {
if self.1 == 32 || (self.0 >> self.1) == 0 {
None
} else {
let ret = ((self.0 >> self.1) as u8) & 0xFF;
self.1 += 8;
Some(ret)
}
}
}
impl SomeTrait for str {
type Iter = NumberIter;
}
编译器建议阅读 https://doc.rust-lang.org/error-index.html#E0275 中的一些示例,但没有类似的示例。
问题是 where Self::Iter
部分的解析(因为它是递归的),您只需要在其中约束类型:
pub trait SomeIter {
type Iter: Iterator;
}
我正在尝试编写一个需要内部类型 Iter 的特征。而 Iter 应该实现 Iterator。我收到这样的错误“溢出评估需求<str as SomeTrait>::Iter == _
”并且无法理解它想要什么。谁能帮忙理解一下?)
pub trait SomeIter {
type Iter where Self::Iter: Iterator;
}
struct NumberIter(u32, u8);
impl Iterator for NumberIter {
type Item = u8;
fn next(&mut self) -> Option<Self::Item> {
if self.1 == 32 || (self.0 >> self.1) == 0 {
None
} else {
let ret = ((self.0 >> self.1) as u8) & 0xFF;
self.1 += 8;
Some(ret)
}
}
}
impl SomeTrait for str {
type Iter = NumberIter;
}
编译器建议阅读 https://doc.rust-lang.org/error-index.html#E0275 中的一些示例,但没有类似的示例。
问题是 where Self::Iter
部分的解析(因为它是递归的),您只需要在其中约束类型:
pub trait SomeIter {
type Iter: Iterator;
}