У меня есть проблема, которую я хочу решить в Rust, которую можно решить простым использованием полей stati c в структуре, но Rust не допускает этого.
Предположим, я хочу иметь несколько сокетов , поэтому я определяю структуру с именем Socket
:
pub struct Socket {
}
, но каждый сокет будет использовать один и тот же Wire
для отправки пакетов. В C ++ у меня было бы что-то вроде этого:
struct Socket {
static Wire wire;
}
, и просто каждый сокет может использовать один и тот же Wire
.
Очевидным решением было бы передать одно и то же Wire
каждому новому Socket
в конструкторе:
pub struct Socket {
pub fn new(wire: SomeSharedRefType) {
//...
}
}
, но есть особая причина, по которой я не хочу этого делать . Я хочу создать новые объекты Rust Socket
из C ++. Хотя можно создать уникальный Rust Wire
из C ++ и передать его каждому вызову C ++ из Socket::new
, я хочу избежать этого, потому что это небезопасно, и я хочу, чтобы Rust мог управлять временем жизни почти всего. Я не хочу, чтобы С ++ взял на себя эту ответственность. stati c в Rust с помощью какой-то техники, потому что я хочу изучить.