我想使用 Rust 的Zeroize箱来将 BTreeMap 条目归零。但 Zeroize 似乎没有为 BTreeMap 提供开箱即用的实现。
目前,我正在诉诸清除来删除地图的条目。
Q1. 只需清除存储在地图中的秘密而不将其归零有多安全?
Q2。我如何使用 Zeroize std::collection::BTreeMap?我想我必须迭代每个元素以将其归零。这种方法的另一个复杂性是我的地图包含“复杂”的通用结构。那么我必须将海龟一直归零吗?
Q2.a) 还有其他板条箱可以帮助我像我一样将 BTreeMap 归零吗?
我的结构例如:
let my_map1: BTreeMap<usize, MyStruct1<G1Projective>> = BTreeMap::new();
#[derive(Clone, Debug, Serialize, Deserialize)]
struct MyStruct1<G: MyTrait1 + MyTrait2> {
#[serde(serialize_with: .., deserialize_with: ..)]
field1: G,
#[serde(serialize_with: .., deserialize_with: ..)]
field2: Vec<G>,
}
Run Code Online (Sandbox Code Playgroud) 我正在开发一个 Rust 项目。我正在使用 Cargo 功能标志来对某些代码进行条件编译。在某些情况下,我必须将整个文件包含在功能标志中,因此这样做添加#[cfg(feature="my-flag")]每个函数和use语句没有多大意义。
因此,为了将整个文件包含在功能标志中,我想将文件中的所有内容包围在一个块中并为该块添加功能标志。
#[cfg(feature="my-flag")]
{
use crate::access_control::{func1, func2};
use crate::models;
...
#[derive(Debug)]
pub enum MyEnum{..}
#[derive(Clone)]
pub Struct MyStruct{..}
pub fn my_func() {...}
fn my_func_internal() {...}
...
}
Run Code Online (Sandbox Code Playgroud)
但我收到错误Syntax Error: expected an item after attributes
另外,在某些情况下,我希望将整个目录包含在功能标志中。我该怎么办?为每个文件添加功能标志是一种方法。是否存在更好的方法?