【发布时间】:2019-06-23 20:55:12
【问题描述】:
我正在阅读 stackoverflow 问题的答案并尝试修改函数 history 以采用 IntoIter 其中 item 可以是任何可以转换为引用的东西,并且在这种情况下具有一些特征 Debug。
如果我从函数定义中删除V: ?Sized,rust 编译器会抱怨它在编译时不知道str 的大小。
use std::fmt::Debug;
pub fn history<I: IntoIterator, V: ?Sized>(i: I) where I::Item: AsRef<V>, V: Debug {
for s in i {
println!("{:?}", s.as_ref());
}
}
fn main() {
history::<_, str>(&["st", "t", "u"]);
}
我不明白为什么编译器首先会显示错误,如果我用V: ?Sized 作弊,我不确定为什么程序可以正常工作。
【问题讨论】:
标签: syntax rust type-bounds