Sockets 循环中匹配臂中的变量来自何处?
我正在尝试使用Rust实现HTTP客户机。我是通过rust-lang.org网站在他们的TcpStream页面上的rust by-example建议发送到这个链接的。我正在琢磨如何从TCP流中读取数据。我试图遵循以下代码: fn handle\u clientmut流:TcpStream{ //从回显到流的流中一次读取20个字节 环路{ 让mut read=[0;1028]; 匹配stream.read和mut read{ Okn=>{ 如果n==0{ //连接已关闭 打破 } stream.write&read[0..n]。展开; } Errerr=>{ 恐慌!呃; } } } } n变量来自哪里?到底是什么?作者说它一次读取20个字节;这是从哪里来的Sockets 循环中匹配臂中的变量来自何处?,sockets,rust,Sockets,Rust,我正在尝试使用Rust实现HTTP客户机。我是通过rust-lang.org网站在他们的TcpStream页面上的rust by-example建议发送到这个链接的。我正在琢磨如何从TCP流中读取数据。我试图遵循以下代码: fn handle\u clientmut流:TcpStream{ //从回显到流的流中一次读取20个字节 环路{ 让mut read=[0;1028]; 匹配stream.read和mut read{ Okn=>{ 如果n==0{ //连接已关闭 打破 } stream.w
我还没有真正尝试过任何东西,因为我想在尝试之前理解 我强烈建议您阅读您使用的工具的文档。在本例中,Rust编程语言解释了您需要了解的内容 本节: 在这段代码的匹配表达式中,我们将一个名为state的变量添加到匹配变量Coin::Quarter的值的模式中。当Coin::Quarter匹配时,state变量将绑定到该季度的状态值。然后我们可以在代码中为该arm使用状态,如下所示:
fn value_in_cents(coin: Coin) -> u8 {
match coin {
Coin::Penny => 1,
Coin::Nickel => 5,
Coin::Dime => 10,
Coin::Quarter(state) => {
println!("State quarter from {:?}!", state);
25
},
}
}
如果我们在世纪中称价值为硬币::四分之一州::阿拉斯加,那么硬币应该是硬币::四分之一州::阿拉斯加。当我们将该值与每个匹配臂进行比较时,在我们到达状态之前,它们都不匹配。此时,state的绑定将是值UsState::Alaska。然后我们可以在println中使用该绑定!表达式,从而从硬币枚举变量中获取四分之一的内部状态值
关于可用的模式匹配语法以及在哪里可以使用它有很多问题。弄明白了,就是这样发生的: 匹配stream.read和mut read{
这一行告诉软件将stream.read&mut read传递给Okn,因为stream.read返回读取的字节数。我仍然不确定为什么他们一次指定20个字节作为正在读取的字节。我建议读取,特别是绑定到值的子模式。变量n在模式Okn,simila中声明并绑定在模式err中声明r to err。您需要根据提供的代码执行更多操作,大约20个字节。由于没有到原始源代码的链接,我们无法告诉您是否错误地转录了代码,所提供代码之外的信息可以解释它,或者作者错了。