结构的Rust全局const不保留指针地址

时间:2019-06-26 15:54:31

标签: struct rust

我正在构建一个名为DATAMAP的结构,该结构旨在容纳TCPStreams的向量。

在声明该结构后,我将实例化对该结构的全局const引用。

我遇到的问题是全局const指针地址似乎正在从一个方法调用更改为下一个方法调用。请注意,没有分配,只是引用的用法。我只是试图使用该结构并访问我的Vec,称为“连接”。以下是声明:

//DECLARATIONS

struct datamap {
    connections: Vec<TcpStream>,
}

impl datamap {
    fn push(&mut self, conn: TcpStream) {
        println!("Adding connection to vec");
        self.connections.push(conn);
    }
    fn len(self) -> usize {
        return self.connections.len();
    }
}

impl fmt::Pointer for datamap {
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        write!(f, "{:p}", self as *const datamap)
    }
}

//  CREATE A STRUCT - Note we are global scope here
const app: datamap = datamap {
    connections: Vec::new(),
};

//  MAIN
fn main() {
    println!("The address of the app struct is {:p}", app);
    some_other_method(); // call another scope method to see issue
}

fn some_other_method() {
    println!("The address of the app struct is {:p}", app);
}

输出结果如下:

应用程序结构的地址为0x7ffee8613180
应用程序结构的地址为0x7ffee8612fb8

const如何获得新地址?

0 个答案:

没有答案