小编Sar*_*ner的帖子

发送到UdpSocket时"无法分配请求的地址"

let addr = "239.255.255.250:1982";
let socket = UdpSocket::bind(addr).unwrap();
let message = "some message".as_bytes();
socket.send_to(message, addr).unwrap();
Run Code Online (Sandbox Code Playgroud)

此代码为最后一行提供以下错误:

Error { repr: Os { code: 49, message: "Can\'t assign requested address" } }
Run Code Online (Sandbox Code Playgroud)

那为什么会这样?

编辑:我尝试了以下建议:

let addr = "239.255.255.250:1982";
let socket = UdpSocket::bind("127.0.0.1:34254").unwrap();
let message = "some message".as_bytes();
socket.send_to(message, addr).unwrap();
Run Code Online (Sandbox Code Playgroud)

但不幸的是,这并没有改变任何事情.

sockets udp rust

5
推荐指数
2
解决办法
1742
查看次数

使用带有2个参数的谓词进行过滤

我想要的基本上是对列表的O(n ^ 2)迭代.假设我有两个整数的列表,

let list = [2312, 8000, 3456, 7000, 1234]
Run Code Online (Sandbox Code Playgroud)

以及检查是否将两个整数加在一起会产生高于20000的结果的函数(这可能是一个任意函数,它接受两个整数并返回一个布尔值).

myPredicate :: Int -> Int -> Bool
myPredicate x y = x + y > 10000
Run Code Online (Sandbox Code Playgroud)

有没有办法将此谓词应用于上面的列表,以获取包含有效对的列表列表,如下所示:

>> filter myPredicate list
>> [[2312, 8000], [3456, 8000], [3456, 7000], [8000, 7000]]
Run Code Online (Sandbox Code Playgroud)

algorithm haskell functional-programming

3
推荐指数
2
解决办法
126
查看次数

打印!宏按顺序执行

我的部分代码如下所示:

print_usage_instructions();
print!("Command: ");
let stdin = io::stdin();
let mut line = String::new();
stdin.lock().read_line(&mut line).expect("Couldn't process the command.");
println!("{}", line);
Run Code Online (Sandbox Code Playgroud)

我期望的行为是这样的:

Usage instructions and stuff
Command: [my command]
[my command]
Run Code Online (Sandbox Code Playgroud)

但是,会发生什么:

Usage instructions and stuff
[my command]
Command: [my command]
Run Code Online (Sandbox Code Playgroud)

任何想法为什么会发生?AFAIK,编译器没有理由在这里更改执行顺序,这部分代码不是异步也不是多线程.

rust rust-macros

2
推荐指数
1
解决办法
100
查看次数

是否可以在Rust中使用匹配来初始化不可变变量?

我有这段代码,我尝试将命令行参数转换为整数.问题是,变量width和height应该是不可变的,因为我不打算改变它们.有没有什么方法可以使用匹配let width = {match....},并在一个步骤中将它们初始化为不可变变量,而不是给它们一个默认值并改变它们?我相信这会更安全,更有效率.

let args: Vec<String> = env::args().collect();
let width_arg = &args[1];
let height_arg = &args[2];

let mut width = 0;
let mut height = 0;

match width_arg.parse::<i32>() {
    Ok(w) => width = w,
    Err(_) => ask_for_number(),
}

match height_arg.parse::<i32>() {
    Ok(h) => height = h,
    Err(_) => ask_for_number(),
}
Run Code Online (Sandbox Code Playgroud)

variables immutability mutability rust

1
推荐指数
1
解决办法
114
查看次数