&[u8]
我正在尝试从两个不同来源之一获取 a 形式的一些数据:
let result = if let Some(blob_id) = blob_id {
let blob = get_blob(blob_id);
Some(blob.data())
} else if let Some(file_path) = file_path {
std::fs::read(file_path).ok().as_deref()
} else {
None
};
在哪里:
fn get_blob(blob_id: String) -> Blob {}
impl Blob {
pub fn data(&self) -> &[u8] {}
}
问题是这会导致temporary value dropped while borrowed
错误,因为result
变量引用 blob 或文件中的内存,但这些 blob 和文件对象在各自 if 块的末尾被删除。
这样做的惯用方法是什么?对于上下文,我想稍后在同一函数中处理这些数据,所以我认为没有必要将数据放在堆上Box
?