LINUX.ORG.RU

История изменений

Исправление zaz, (текущая версия) :

Выпелял принт - не помогло

struct Foo {
  val: i32,
  p: *const i32
}

impl Foo
{
   #-inline-
   pub fn new() -> Foo {
     let mut o = Foo {val: 123, p: std::ptr::null()};
     o.p = &o.val;
//              print!("Create new Foo: {:p}\n", &o);
     return o;
  }

  fn print(&mut self) {
    print!("In foo print {:p} : {:p} -> {}\n", &self.val, self.p, self.val);
  }
}

Output:

In foo print 0x7ffcdd36ebf0 : 0x7ffcdd36ec90 -> 123
Destroy foo 0x7ffcdd36ebf0

Исправление zaz, :

Выпелял принт - не помогло

struct Foo {
  val: i32,
  p: *const i32
}

impl Foo
{
   #inline
   pub fn new() -> Foo {
     let mut o = Foo {val: 123, p: std::ptr::null()};
     o.p = &o.val;
//              print!("Create new Foo: {:p}\n", &o);
     return o;
  }

  fn print(&mut self) {
    print!("In foo print {:p} : {:p} -> {}\n", &self.val, self.p, self.val);
  }
}

Output:

In foo print 0x7ffcdd36ebf0 : 0x7ffcdd36ec90 -> 123
Destroy foo 0x7ffcdd36ebf0

Исправление zaz, :

Выпелял принт - не помогло

struct Foo {
  val: i32,
  p: *const i32
}

impl Foo
{
      pub fn new() -> Foo {
     let mut o = Foo {val: 123, p: std::ptr::null()};
     o.p = &o.val;
//              print!("Create new Foo: {:p}\n", &o);
     return o;
  }

fn print(&mut self) { print!("In foo print {:p} : {:p} -> {}\n", &self.val, self.p, self.val); } }

Output:

In foo print 0x7ffcdd36ebf0 : 0x7ffcdd36ec90 -> 123
Destroy foo 0x7ffcdd36ebf0

Исправление zaz, :

Выпелял принт - не помогло

struct Foo {
  val: i32,
  p: *const i32
}

impl Foo
{
   #   pub fn new() -> Foo {
     let mut o = Foo {val: 123, p: std::ptr::null()};
     o.p = &o.val;
//              print!("Create new Foo: {:p}\n", &o);
     return o;
  }

fn print(&mut self) { print!("In foo print {:p} : {:p} -> {}\n", &self.val, self.p, self.val); } }

Output:

In foo print 0x7ffcdd36ebf0 : 0x7ffcdd36ec90 -> 123
Destroy foo 0x7ffcdd36ebf0

Исходная версия zaz, :

Выпелял принт - не помогло

struct Foo { 
        val: i32,
        p: *const i32
}

impl Foo
{
        #        pub fn new() -> Foo
        {
                let mut o = Foo {val: 123, p: std::ptr::null()};
                o.p = &o.val;
//              print!("Create new Foo: {:p}\n", &o);
                return o;
        }

fn print(&mut self) { print!("In foo print {:p} : {:p} -> {}\n", &self.val, self.p, self.val); } }

Output:

In foo print 0x7ffcdd36ebf0 : 0x7ffcdd36ec90 -> 123
Destroy foo 0x7ffcdd36ebf0