Rust 什么是;应为类型“()”;在一个匹配表达式上是什么意思?

Rust 什么是;应为类型“()”;在一个匹配表达式上是什么意思?,rust,Rust,我正在重写一个简单的基于TCP的服务器,以测试Rust。它应该检索客户端的输入,然后匹配该输入以运行函数: use std::io::BufRead; use std::io::BufReader; use std::io::BufWriter; use std::io::Write; use std::net::{TcpListener, TcpStream}; use std::thread; fn handle_connection(stream: TcpStream) { le

我正在重写一个简单的基于TCP的服务器,以测试Rust。它应该检索客户端的输入,然后匹配该输入以运行函数:

use std::io::BufRead;
use std::io::BufReader;
use std::io::BufWriter;
use std::io::Write;
use std::net::{TcpListener, TcpStream};
use std::thread;

fn handle_connection(stream: TcpStream) {
    let stream_clone = stream.try_clone().unwrap();
    let mut reader = BufReader::new(stream);
    let mut writer = BufWriter::new(stream_clone);
    loop {
        let mut s = String::new();
        reader.read_line(&mut s).unwrap();

        match s.as_str() {
            //"test" => writer.write(s.as_bytes()).unwrap();
            "test" => writer.write(b"test successfull").unwrap(),
            _ => writer.write(b"Command not recognized...").unwrap(),
        }

        writer.flush().unwrap();
    }
}

fn main() {
    let listener = TcpListener::bind("127.0.0.1:8888").unwrap();
    for stream in listener.incoming() {
        thread::spawn(move || {
            handle_connection(stream.unwrap());
        });
    }
}
错误是:

错误[E0308]:类型不匹配
-->src/main.rs:16:9
|
16 |/匹配s.as|u str(){
17 | |/“test”=>writer.write(s.as_bytes()).unwrap();
18 | |“test”=>writer.write(b“test successfull”).unwrap(),
19 | | |=>writer.write(b“无法识别命令…”)。unwrap(),
20 | |         }
||uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
|
=注意:应为类型“”()`
找到类型“usize”`
我现在的主要问题是检查检索到的字节是否属于匹配项,我不太确定如何实现这一点


我在网上找不到此问题的解决方案,
rustc--explain
也帮不了我

在您的
匹配表达式后添加分号

所有
match
臂的类型都是
usize
,因此
match
的结果类型也是
usize
。您的代码是有效的

fn main() {
    {
        42
    }

    println!("Hi");
}
错误[E0308]:类型不匹配
-->src/main.rs:3:9
|
3 |         42
|^^应为“()”,找到整数
另见:


谢谢,现在可以工作了!但是在这里加上分号是相当混乱的,我想我还得多读一些topic@prograe69:这是产生值的表达式与不产生值的语句之间的差异。由于表达式的目标是生成一个值,因此当该值未使用时,这是意外的<代码>转换表示程序员的意图:它转换语句中的表达式,表示“我知道它产生了一个值,我只是不在乎它,扔掉它”。