相关疑难解决方法(0)

在HashMap中存储闭包

为了学习Rust语言,我正在使用一个旧的C++库,我已经躺在那里并尝试将其转换为Rust.它使用了很多C++ 11闭包,我在翻译概念方面遇到了一些困难.

在C++中我有这样的事情:

// library.h
struct Event {
    // just some data
};

class Object {
public:
    // ...
    std::function<void(Event&)>& makeFunc(std::string& s) {
        return m_funcs[s];
    }
    // ...
private:
    // ...
    std::map<std::string, std::function<void(Event&)>> m_funcs;
    // ...
};

// main.cpp using the library
int main()
{
    Object foo;
    foo.makeFunc("func1") = [&]{
        // do stuff
    };
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我遇到问题的部分是将函数正确存储在Rust HashMap集合中.我试过这个:

struct Event;

struct Object {
    m_funcs : HashMap<String, FnMut(&Event)>
}

impl Object {
    // send f as another parameter rather than …
Run Code Online (Sandbox Code Playgroud)

rust

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

标签 统计

rust ×1