gpt4 book ai didi

rust - "expected type ` 是什么意思( )`"在匹配表达式中意味着什么?

转载 作者:行者123 更新时间:2023-11-29 08:17:51 25 4
gpt4 key购买 nike

我正在重写一个简单的基于 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());
});
}
}

错误:

error[E0308]: mismatched types
--> src/main.rs:16:9
|
16 | / match s.as_str() {
17 | | //"test" => writer.write(s.as_bytes()).unwrap();
18 | | "test" => writer.write(b"test successfull").unwrap(),
19 | | _ => writer.write(b"Command not recognized...").unwrap(),
20 | | }
| |_________^ expected (), found usize
|
= note: expected type `()`
found type `usize`

我现在的主要问题是检查检索到的字节是否属于匹配项,我不太确定如何实现这一点。

我在网上找不到解决办法,rustc --explain 也没有帮助我

最佳答案

在您的 match 表达式后添加一个分号。

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

fn main() {
{
42
}

println!("Hi");
}
error[E0308]: mismatched types
--> src/main.rs:3:9
|
3 | 42
| ^^ expected `()`, found integer

另见:

关于rust - "expected type ` 是什么意思( )`"在匹配表达式中意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56429484/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com