gpt4 book ai didi

arrays - 如何返回对局部变量的引用,指定其生命周期与自身相同?

转载 作者:行者123 更新时间:2023-11-29 08:22:00 24 4
gpt4 key购买 nike

我想写一些像下面这样的代码

struct SomeData(u8, u8);

impl SomeData {
fn to_bytes(&self) -> &[u8] {
let mut bytes: [u8; 16] = [0; 16];

// fill up buffer with some data in `SomeData`.
bytes[0] = self.0;
bytes[1] = self.1;

// return slice
&bytes[..]
}
}

我知道上面代码不起作用的原因。如何返回一个引用,指定其生命周期与 self 相同?

最佳答案

引用的显式生命周期注解不能延长它引用的对象的生命周期。 bytes 是一个局部变量,它会在函数结束时销毁。

一个选项是返回一个数组

fn to_bytes(&self) -> [u8;16] {
...
// return array
bytes
}

另一种是将可变切片传递给函数

fn to_bytes(&self, bytes: &mut [u8]) {
...
}

关于arrays - 如何返回对局部变量的引用,指定其生命周期与自身相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44643430/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com