如何像在C ++中那样在struct中创建空指针属性?我不太了解如何使指针指向内存中的空白空间。
C ++
struct test{
string data;
assocc *el;
}
srtuct assocc {
T *data;
}
锈
struct test {
data: String,
ponts: *const Option<assocc<T>>,
}
struct assocc<T> {
data: T,
}
impl test {
fn new(data: String) -> test {
test {
data: data,
ponts: None,/*This don't work*/
}
}
}
impl<T> assocc<T> {
fn new(data: T) -> assocc {
assocc {
data: data,
}
}
}
您可以使用std::ptr::null
:
struct Test<T> {
data: String,
ponts: *const Option<Assocc<T>>,
}
struct Assocc<T> {
data: T,
}
impl<T> Test<T> {
fn new(data: String) -> Test<T> {
Test {
data: data,
ponts: std::ptr::null(),
}
}
}
impl<T> Assocc<T> {
fn new(data: T) -> Assocc<T> {
Assocc {
data: data,
}
}
}
但是您确定要在Rust中使用原始指针吗?在Rust中,我们主要使用reference。
在Rust中,一种更惯用的方法是:
struct Test<'a, T: 'a> {
data: String,
ponts: Option<&'a Assocc<T>>,
}
impl<'a, T> Test<'a, T> {
fn new(data: String) -> Test<'a, T> {
Test {
data: data,
ponts: None,
}
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句