Simulating struct static field behaviour in Rust / when multiple instances have to access same object
我有一个想在 Rust 中解决的问题,可以通过在结构中简单地使用静态字段来解决,但 Rust 不允许这样做。
假设我想要有多个套接字,所以我定义了一个名为
的结构
1 2 3 | pub struct Socket { } |
但每个套接字将使用相同的
1 2 3 | struct Socket { static Wire wire; } |
并且每个套接字都可以共享相同的
显而易见的解决方案是将相同的
1 2 3 4 5 | pub struct Socket { pub fn new(wire: SomeSharedRefType) { //... } } |
但我不想这样做是有特殊原因的。我想从 C 创建新的 Rust
如果你认为我试图解决一个不必要的问题,请告诉我什么是好的解决方案,同时告诉我是否可以通过某种技术在 Rust 上模拟一个静态字段,因为我想学。
I want to create new Rust Socket objects from C++. While it's possible to create the unique Rust Wire from C++ and pass it to every C++ call of Socket::new, I want to avoid that because it's unsafe and I want to Rust to be able to manage the lifetime of almost everything. I don't want C++ to take this responsibility.
我不确定它有什么不同。 C 端必须调用某种套接字创建工厂,为什么它不能传递不透明的线,可能与其他参数一起传递?
also tell me if it's possible to simulate a static field on Rust by some technique, because I want to learn.
静态变量。静态成员存储在类中,Rust 没有类来存储它们,所以它没有静态成员。