gpt4 book ai didi

rust - 当多个实例必须访问同一对象时,在Rust中模拟结构静态字段的行为

转载 作者:行者123 更新时间:2023-12-03 11:45:17 25 4
gpt4 key购买 nike

我有一个要在Rust中解决的问题,只需在结构中使用静态字段即可解决,但Rust不允许这样做。

假设我要有多个套接字,因此我定义了一个名为Socket的结构:

pub struct Socket {

}

但每个套接字将使用相同的 Wire发送数据包。在C++中,我将具有以下内容:
struct Socket {
static Wire wire;
}

并且每个套接字都可以共享相同的 Wire

显而易见的解决方案是将相同的 Wire传递给构造函数中的每个新 Socket:
pub struct Socket {
pub fn new(wire: SomeSharedRefType) {
//...
}
}

但是有一个特定的原因我不想这样做。我想从C++创建新的Rust Socket对象。尽管可以从C++创建唯一的Rust Wire并将其传递给 Socket::new的每个C++调用,但我想避免这种情况,因为它不安全,并且我希望Rust能够管理几乎所有内容的生命周期。我不希望C++承担此责任。

如果您认为我正在尝试解决不必要的问题,请告诉我什么是很好的解决方案,但也请告诉我是否有可能通过某种技术在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没有类可将它们存储在其中,因此它没有静态成员。

关于rust - 当多个实例必须访问同一对象时,在Rust中模拟结构静态字段的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62463520/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com