作者:尚艺李波_387 | 来源:互联网 | 2023-01-05 15:30
我有一个看起来像这样的结构:
struct Fields {
map: HashMap
}
对于人体工程学,我想要一个接受&str
和的功能String
.我读到它HashMap
有一个特征FromIterator<(K, V)>
,所以在抽象层面上,我可以从产生成对的迭代器的任何东西中变成字符串.
类似地,如果我想要一个接受任何可以转换为a的函数的函数String
,我可以使用该约束T: Into
.
可以对可以转换为字符串的对的迭代器进行相同的操作吗?概念:
fn set_map, Into)>>(fields: I) {
// ...
}
这个错误
error[E0277]: the trait bound `std::convert::Into + 'static: std::marker::Sized` is not satisfied
--> src/main.rs:1:1
|
1 | / fn set_map, Into)>>(fields: I) {
2 | | // ...
3 | | }
| |_^ `std::convert::Into + 'static` does not have a constant size known at compile-time
|
= help: the trait `std::marker::Sized` is not implemented for `std::convert::Into + 'static`
= note: only the last element of a tuple may have a dynamically sized type
error[E0038]: the trait `std::convert::Into` cannot be made into an object
--> src/main.rs:1:1
|
1 | fn set_map, Into)>>(fields: I) {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `std::convert::Into` cannot be made into an object
|
= note: the trait cannot require that `Self : Sized`
ljedrz..
5
你忘了将Item
元组元素作为类型(而不是特征)传递.以下应该有效:
fn set_map, T: Into, I: IntoIterator- >(fields: I) {
...
}
两个不同的参数S
和T
,而不只是一个让你有不同的Into
元组的类型.
1> ljedrz..:
你忘了将Item
元组元素作为类型(而不是特征)传递.以下应该有效:
fn set_map, T: Into, I: IntoIterator- >(fields: I) {
...
}
两个不同的参数S
和T
,而不只是一个让你有不同的Into
元组的类型.