Estou tentando obter alguns dados na forma de a &[u8]
, de duas fontes diferentes:
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
};
Onde:
fn get_blob(blob_id: String) -> Blob {}
impl Blob {
pub fn data(&self) -> &[u8] {}
}
O problema é que isso leva a temporary value dropped while borrowed
erros, já que a result
variável faz referência à memória do blob ou do arquivo, mas esses objetos blob e arquivo são descartados no final de seus respectivos blocos if.
Qual é a maneira idiomática de fazer isso? Por contexto, quero processar esses dados posteriormente na mesma função, então não acho que Box
seja necessário colocar os dados na pilha com a?