1 个不稳定版本

0.1.0-pre.12024年6月18日

#544Rust 模式

Download history 133/week @ 2024-06-14 17/week @ 2024-06-21 5/week @ 2024-06-28 1/week @ 2024-07-05 4/week @ 2024-07-12 199/week @ 2024-07-19 61/week @ 2024-07-26 90/week @ 2024-08-02 56/week @ 2024-08-09

407 每月下载量
用于 5 个crate (2 直接)

Apache-2.0

18KB
303

hax 库

此crate包含在通过hax工具链证明的Rust代码中可使用的辅助工具。

⚠️ 此crate中的代码在没有配置 --cfg hax 的情况下编译时没有效果。

示例

fn sum(x: Vec<u32>, y: Vec<u32>) -> Vec<u32> {
  hax_lib::assume!(x.len() == y.len());
  hax_lib::assert!(hax_lib::forall(|i: usize| hax_lib::implies(i < x.len(), || x[i] < 4242)));
  hax_lib::debug_assert!(hax_lib::exists(|i: usize| hax_lib::implies(i < x.len(), || x[i] > 123)));
  x.into_iter().zip(y.into_iter()).map(|(x, y)| x + y).collect()
}

lib.rs:

Hax 专用 Rust 程序辅助工具。这些辅助工具在正常编译时通常不执行任何操作,但在hax下编译时具有意义。

示例

fn sum(x: Vec<u32>, y: Vec<u32>) -> Vec<u32> {
  hax_lib::assume!(x.len() == y.len());
  hax_lib::assert!(hax_lib::forall(|i: usize| hax_lib::implies(i < x.len(), || x[i] < 4242)));
  hax_lib::debug_assert!(hax_lib::exists(|i: usize| hax_lib::implies(i < x.len(), || x[i] > 123)));
  x.into_iter().zip(y.into_iter()).map(|(x, y)| x + y).collect()
}

依赖关系

~400–760KB
~16K SLoC