Collections 如何调用地址集合上的\u socket\u addr?

Collections 如何调用地址集合上的\u socket\u addr?,collections,rust,iterator,Collections,Rust,Iterator,如何在Rust中的数组或向量上调用到\u socket\u addrs()?以下代码未编译: extern crate ws; use std::net::ToSocketAddrs; fn main() { let addrs = ["127.0.0.1:8889", "127.0.0.1:0"] .iter() .flat_map(|a| a.to_socket_addrs()); ws::listen(addrs, |out| move |

如何在Rust中的数组或向量上调用
到\u socket\u addrs()
?以下代码未编译:

extern crate ws;
use std::net::ToSocketAddrs;

fn main() {
    let addrs = ["127.0.0.1:8889", "127.0.0.1:0"]
        .iter()
        .flat_map(|a| a.to_socket_addrs());
    ws::listen(addrs, |out| move |msg| out.send(msg));
}
error[E0277]:特性绑定'std::iter::FlatMap,std::result::result[closure@src/main.rs:7:19:7:42]>`
|
=注意:`ws::listen'需要`
我花了两个小时才理解这个错误,因为“trait
X
没有为
std::iter::FlatMap
”读起来像是问题是由
flat\u map
引起的,而不是
ws::listen

返回包含迭代器的
结果<代码>结果
本身实现了
到迭代器
,因此平坦化了结果,而不是内部迭代器,您需要在额外的步骤中完成:

use std::net::ToSocketAddrs;

fn main() {
    let addrs = ["127.0.0.1:8889", "127.0.0.1:0"]
        .iter()
        .flat_map(|a| a.to_socket_addrs())
        .flatten()
        .collect::<Vec<_>>();
    println!("addrs = {:?}!", addrs);
}
使用std::net::ToSocketAddrs;
fn main(){
让addrs=[“127.0.0.1:8889”,“127.0.0.1:0”]
.国际热核实验堆(iter)
.flat_映射(| a | a.到| socket_addrs())
.flatte()
收集::();
println!(“地址={:?}!”,地址);
}
返回包含迭代器的
结果<代码>结果
本身实现了
到迭代器
,因此平坦化了结果,而不是内部迭代器,您需要在额外的步骤中完成:

use std::net::ToSocketAddrs;

fn main() {
    let addrs = ["127.0.0.1:8889", "127.0.0.1:0"]
        .iter()
        .flat_map(|a| a.to_socket_addrs())
        .flatten()
        .collect::<Vec<_>>();
    println!("addrs = {:?}!", addrs);
}
使用std::net::ToSocketAddrs;
fn main(){
让addrs=[“127.0.0.1:8889”,“127.0.0.1:0”]
.国际热核实验堆(iter)
.flat_映射(| a | a.到| socket_addrs())
.flatte()
收集::();
println!(“地址={:?}!”,地址);
}

@Stargateur澄清了这个问题,并添加了真正令人不快的一句话。具有讽刺意味的是,我试图发布一个最小的示例,但由于误解了错误,我遗漏了令人不快的一行。希望这对其他人有用。@PetrusTheron下面是反对票,因为你没有给我们真实的代码来重现你的问题。使用来编写代码,这正好提供了您遇到的错误。如果您理解错误并认为保留问题以帮助其他用户是值得的,请以正确的答案编写解决方案和解释,而不是编辑问题。现在是messy@PetrusTheron请看一看编辑E_net4 did,并尝试自己提供问题中的所有关键信息。它帮助我们帮助你@斯塔加图尔澄清了这个问题,并添加了真正的冒犯之词。具有讽刺意味的是,我试图发布一个最小的示例,但由于误解了错误,我遗漏了令人不快的一行。希望这对其他人有用。@PetrusTheron下面是反对票,因为你没有给我们真实的代码来重现你的问题。使用来编写代码,这正好提供了您遇到的错误。如果您理解错误并认为保留问题以帮助其他用户是值得的,请以正确的答案编写解决方案和解释,而不是编辑问题。现在是messy@PetrusTheron请看一看编辑E_net4 did,并尝试自己提供问题中的所有关键信息。它帮助我们帮助你!可能值得注意的是,
Result
IntoIterator
的实现会丢弃错误。您可以利用
Result
fromtiterator
的实现来在
collect
时间引发错误。可能值得注意的是
Result
intiterator
的实现会丢弃错误。您可以利用
Result
对迭代器
实现,而不是在
collect
时间引发错误。