我试图创建一个使用std::net::TcpStream
读/写套接字的结构。我得到了一个函数中的测试代码,但当试图将代码拆分为多个函数时,(read()
,write()
,等)我想共享TcpStream
对象。在其他语言中,我会创建一个类TcpStream
变量(初始化为null
),然后让一个connect()
函数使用TcpStream::connect()
将变量设置为一个对象。然后我可以在其他类函数中使用类变量。但我没有在Rust中使用它。我已经研究了once_cell
和lazy_static
,但没有任何进展。
我想做的是:
pub struct Connection<'a> {
url:&'a str,
conn: &TcpStream
}
impl Connection<'_> {
pub fn new(url: &str) -> Connection {
return Connection {
url: url
}
}
pub fn connect(&self) -> bool {
self.conn = TcpStream::connect();
return true;
}
pub fn write(&self, cmd : &str ) -> bool {
self.conn.write(cmd);
return true;
}
pub fn read() -> String {
return self.conn.read();
}
}
let my_connection = Connection::new("localhost:23");
字符串
1条答案
按热度按时间sqougxex1#
一种解决方案是将
TcpStream
转换为Singleton
,最好的方法是使用thread_local
宏。以下内容仅供参考,不包含任何错误处理:
字符串
Playground