小编啊鹿D*_*zyi的帖子

如何在 Rust 中创建上下文管理器

我想制作一个类似 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

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

标签 统计

rust ×1