小编New*_*ode的帖子

如何安全地“清零”Rust BTreeMap

我想使用 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)

memory struct rust btreemap

1
推荐指数
1
解决办法
128
查看次数

Cargo:如何将整个目录或文件包含在功能标志中?

我正在开发一个 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

另外,在某些情况下,我希望将整个目录包含在功能标志中。我该怎么办?为每个文件添加功能标志是一种方法。是否存在更好的方法?

conditional-compilation rust rust-cargo

0
推荐指数
1
解决办法
986
查看次数