小编sba*_*ant的帖子

简单的枚举应该派生出来吗?性能有什么不同吗?

use std::collections::HashMap;

// #[derive(Copy, Clone)]
enum SomeEnum {
    Some1,
    Some2,
}

struct SomeStruct {
    pub some_enum: SomeEnum,
    pub s: String,
}

fn proc_struct(some_struct: &SomeStruct) {
    let mut map = HashMap::new();
    map.insert(String::from("any"), 0);

    match map.get(&some_struct.s) { // just to make a reference in SomeStruct
        Some(v) => {
            proc1(some_struct.some_enum);
            proc2(&some_struct.some_enum);
        }
        None => {}
    }
}

fn proc1(some: SomeEnum) {}

fn proc2(some: &SomeEnum) {}

fn main() {
    let some_struct = SomeStruct { some_enum: SomeEnum::Some1, s: String::from("s") };

    proc_struct(&some_struct);
}
Run Code Online (Sandbox Code Playgroud)

上面的代码产生以下错误:

error[E0507]: cannot …
Run Code Online (Sandbox Code Playgroud)

rust

9
推荐指数
1
解决办法
2090
查看次数

如何将结构的成员函数作为回调传递给另一个结构

我想将一个结构体的成员函数传递给另一个结构体。

对不起,英语不好,不能说更多细节。

use std::thread;

struct Struct1 {}

impl Struct1 {
    pub fn do_some(&mut self, s: &str) {
        // do something use s to modify self
    }
}

struct Struct2 {
    cb1: Box<Fn(&mut Struct1, &str)>,
}

fn main() {
    let s1 = Struct1 {};

    let s2 = Struct2 {
        cb1: Box::new(s1.do_some),  // how to store do_some function in cb1 ?
    };
}
Run Code Online (Sandbox Code Playgroud)

rust

3
推荐指数
1
解决办法
1691
查看次数

标签 统计

rust ×2