我具有以下功能:
fn hmac_sha1<'a>(_message: &'a str, _key: &'a str) -> &'a [u8] {
let key: &[u8] = _key.as_bytes();
let message: &[u8] = _message.as_bytes();
let mut mac: Hmac<Sha1> = Hmac::new(Sha1::new(), key);
mac.input(message);
let mac_result: MacResult = mac.result();
mac_result.code()
}
本质上,我想使用SHA1编码消息,并返回一个指向结果字节数组的指针。编译此代码时,出现以下错误。
--> src/main.rs:81:5
|
81 | mac_result.code()
| ----------^^^^^^^
| |
| returns a value referencing data owned by the current function
| `mac_result` is borrowed here
现在,我了解这里出了什么问题,我只是不知道如何解决。函数完成后,mac_result
变量的生命周期将终止,并且指向其内部结果的指针当然将不再有效。
有没有一种方法可以延长mac_result
变量的寿命,以便我可以返回它包含的字节数组,而无需将其转换为Vec<u8>
?那是一个可行的解决方案,但是我宁愿不转换数组。