【发布时间】:2022-01-16 01:21:21
【问题描述】:
我是 rust 新手,并且已经完成了 try it 示例。我想尝试编写一个套接字库。我早期遇到的一个问题是如何初始化具有 TcpStream 的结构
struct connection{
address: String,
sock: TcpStream,
}
当我开始时,我不知道如何初始化那种类型的对象
impl connection{
fn new(add: &str)->connection{
connection{
address: add.to_string(),
//i didnt know what to put here
// sock: TcpStream::connect(add.to_string()); ??this seems wrong.
}
}
}
我在这里找到了一个唯一的问题,上面写着 make TcpStream and Option
struct connection{
address: String,
sock: Option<TcpStream>,
}
这使得代码非常尴尬,因为我永远不能只做 sock::connect 等,因为 sock 总是在 Some() 中
我错过了什么吗?有没有办法做到这一点,我可以只声明它并能够像所有其他变量一样从结构中使用它,而不需要这个 Option 东西?
如果将它放在一个选项中是唯一的方法,有没有一种简单的方法可以将它从选项中取出,我用来引用它的结构变量总是一个选项,所以我不知道如何我可以正常访问它而无需转义 Some()
【问题讨论】:
-
不确定你遵循的建议是使用
Option,如果你出于某种原因稍后要初始化流,你会这样做,这听起来不像你想要的.使用TcpStream::connect调用看起来像是要走的路,只是您需要正确处理结果,因为尝试连接可能会失败。
标签: sockets struct rust option