Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sockets 循环中匹配臂中的变量来自何处?_Sockets_Rust - Fatal编程技术网

Sockets 循环中匹配臂中的变量来自何处?

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实现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个字节;这是从哪里来的


我还没有真正尝试过任何东西,因为我想在尝试之前理解

我强烈建议您阅读您使用的工具的文档。在本例中,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个字节。由于没有到原始源代码的链接,我们无法告诉您是否错误地转录了代码,所提供代码之外的信息可以解释它,或者作者错了。