我正在编写以下格式的函数:
fn pop(data: &mut Vec<Option<T>>) -> Option<T> {
// Let the item be the current element at head
let item = data[0];
// and "remove" it.
data[0] = None;
item
}
Run Code Online (Sandbox Code Playgroud)
当我尝试这样做时,我得到一个"无法移出索引内容"错误,这是有道理的.当我试图改变它,从而item是一个参考,我得到一个错误,当我尝试设置data[0]到None,这也是情理之中.
有什么方法可以做我想做的事吗?在我看来,无论我是否想要返回引用,我都必须从Vec中获取该元素的所有权.
我注意到Vec有一个swap_remove方法,它几乎完全符合我的要求,除了它与Vec中已有的元素交换,而不是我想要的任意值.我知道我可以附加None到Vec的末尾并使用swap_remove,但我有兴趣看看是否还有另一种方法.
我正在编写需要唯一识别多台不同机器的软件.我打算使用/ etc/machine-id来做到这一点.
在阅读机器ID 的文档时,我偶然发现了这段话:
此ID唯一标识主机.它应被视为"机密",不得暴露在不受信任的环境中,特别是在网络上.如果某些应用程序需要与机器绑定的稳定唯一标识符,则不得直接使用机器ID或其任何部分.相反,机器ID应使用加密的键控散列函数进行散列,使用固定的特定于应用程序的密钥.
这是真的吗?如果是这样,攻击者可以使用机器ID实际利用什么?我对d-bus知之甚少,但我的印象是它只适用于IPC,因此我不确定为什么如果远程攻击者知道机器ID这真的很重要.我打算发送/存储这些未加密的,但不愿意,如果这将是一个安全问题.
编辑:熟悉该问题的人在这里回答了这个问题.基本上,联机帮助页中的建议仅出于隐私原因,而不是由于任何实际的安全问题.