【发布时间】:2020-09-12 14:39:27
【问题描述】:
我正在尝试学习 Rust,在此过程中我想尝试将结构对象转换为字节数组,但这样做时遇到了问题。
所以我有这个:
struct Node<'a> {
id: u8,
name: &'a str,
data: &'a str,
}
impl<'a> Node<'a> {
fn new() -> Node<'a> {
return Node {
id: 1,
name: "superName",
data: "some random desc2",
};
}
fn to_buffer(&mut self) -> &'a [u8] {
let mut size = mem::size_of::<Node>();
size = size + self.name.len() * mem::size_of::<char>();
size = size + self.data.len() * mem::size_of::<char>();
println!("size {}", size);
return &[self.id];
}
}
但我只是收到错误“无法返回对临时值的引用”
而且我不是 100% 确定我理解错误消息的开头......是不是因为 self.id 仅适用于此函数,并且在返回时会从堆栈中删除?
有没有办法解决这个问题?
【问题讨论】:
-
[self.id]在堆栈上创建一个数组,&[self.id]指的是这个数组,但是由于这个数组是在一个功能块中创建的,所以当你退出to_buffer功能块时它就会被丢弃。编译器抱怨您尝试返回对已删除数组的引用
标签: rust