#等价性 #证明 #强制转换 #零尺寸 #类型 #安全 #强制转换

无 std type-equalities

使用零尺寸证明观察类型等价性

8 个版本

0.3.1 2022年1月4日
0.3.0 2022年1月4日
0.2.0 2021年5月12日
0.1.4 2021年5月6日

#2 in #强制转换

Download history 30/week @ 2024-03-29 1/week @ 2024-04-05

每月106次下载

MIT/Apache

22KB
263

type-equalities

Documentation Further crate info

中心类型 TypeEq<_, _> 允许进行无开销、安全的价值强制转换,并且自身是零尺寸的。进一步地,对于任何类型,命名 TypeEq<T, U> 是合法的,但只有在等价性成立的情况下才存在占有者。对于特质级别的类型等价性,可以使用 T: IsEqual<U>

无开销的声明可以在提供的基准测试中看到

let eq = refl::<u32>().lift_through::<SliceF<BENCH_LEN>>();
b.iter(|| [0; BENCH_LEN]);            // bench_no_coerce
b.iter(|| eq.coerce([0; BENCH_LEN])); // bench_coerce_array_refl

> running 2 tests
test benches::bench_no_coerce         ... bench:      10,570 ns/iter (+/- 569)
test benches::bench_coerce_array_refl ... bench:      10,557 ns/iter (+/- 605)

此包是 无 std,并且有一个(默认:启用)的 alloc 功能,即强制转换 Box

许可

根据以下之一许可

贡献

除非您明确声明,否则您提交的任何有意包含在作品中的贡献都将按上述方式双许可,不附加任何额外的条款或条件。

依赖项