C中,当sendtoUDP socket(未绑定)上被调用时,它隐式地将套接字绑定到某个端口.这在RustUdpSocket::send_to也是一样的吗?如果是,那么这个方法会改变调用send_toUdpSocket,但是send_to要求参数的类型是&self,而不是&mut self,这就像是矛盾的.

推荐答案

因为UdpSocket::send_to只是uses c::sendto internally,所以行为完全相同.

*Socket类型不需要可变引用来做任何事情,因为操作系统正在执行任何所需的锁定,所以所有这些类型都使用一种内部可变性的形式来完成它们的工作,这是操作系统接口中的一个共同主题,&File例如also implements Read,尽管大多数方法需要独占引用.

Rust相关问答推荐

当为a Self:IntoIterator设置trait bind `时,获取`a T `不是迭代器"&'"<'>&'

将大小为零的类型实例存储到空指针中

MutexGuard中的过滤载体不需要克隆

MPSC频道在接收器处阻塞

默认特征实现中的生命周期问题

用 rust 蚀中的future 展望 struct 的future

为什么Deref类特征不构成?

你能在Rust中弃用一个属性吗?

返回Result<;(),框<;dyn错误>>;工作

由于生存期原因,返回引用的闭包未编译

确保参数是编译时定义的字符串文字

如何强制匹配的返回类型为()?

提取指向特征函数的原始指针

Rust 文件未编译到 dll 中

我可以禁用发布模式的开发依赖功能吗?

当锁被释放时,将锁包装到作用域中是否会发生变化?

如何在 Rust 的 Hyper 异步闭包中从外部范围正确读取字符串值

改变不实现克隆的 dioxus UseState struct

用逗号分隔字符串,但在标记中使用逗号

深度嵌套枚举的清洁匹配臂