如何在结构中创建空指针?

亚历克斯·桑迪

如何像在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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章