小编Fri*_*ost的帖子

生命周期妨碍状态机返回到最新状态

示例代码:

struct S1 {}
struct S2 {}
struct S3 {}

enum State {
    Zero,
    One(S1),
    Two(S1, S2),
    Three(S1, S2, S3),
}

struct Client {
    state: Option<State>,
}

impl Client {
    fn try_advancing(&mut self) {
        /* other code */
        if let Some(inner) = std::mem::replace(&mut self.state, None) {
            match inner {
                State::Zero => {
                    if predicate0() {
                        self.state = Some(State::One(S1 {}));
                    }
                    else {
                        // code won't compile as we
                        // no longer own inner after partial move
                        self.state = Some(inner);
                    } …
Run Code Online (Sandbox Code Playgroud)

rust

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

标签 统计

rust ×1