我想制作一个类似 python 用法的上下文管理器。
我有一个套接字,我可以从中读取和写入。然后,一个设备结构体,它保存套接字,通过套接字命令设备
pub struct MyDevice{
socket: MySocket,
/* ... */
}
impl MyDevice{
pub fn new()->MyDevice { todo!() }
pub fn command(&mut self, s:&str)->std::io::Result<String>{
self.socket.write(s)?;
self.socket.read()
}
/* ... */
}
Run Code Online (Sandbox Code Playgroud)
正常的操作看起来像这样
let mut device = MyDevice::new();
device.command("Push setting A")?;
device.command("Perform task 1")?;
device.command("Pop setting A")?;
device.command("Perform task 2")?;
device.command("Push setting A")?;
device.command("Perform task 3")?;
device.command("Pop setting A")?; //<-- notice how setting A is load and unload multiple times
Run Code Online (Sandbox Code Playgroud)
我怎样才能像Python一样创建一个上下文管理器
some pseudo code of what I wanted
let …Run Code Online (Sandbox Code Playgroud) rust ×1