1个不稳定版本
0.1.999 | 2022年4月1日 |
---|
#1283 in 数学
37KB
998 行
apbool
仅为Rust提供的任意精度布尔算术。
动机和背景
布尔只是一个可以取值 true 或 false 的变量,是布尔算术的基础。诸如 AND、OR、EXCLUSIVE OR 和 NOT 等运算符允许我们以形式化的方式组合这些值,类似于使用加法和减法等代数运算符来组合数值和小数。
由于CPU处理单元中内置的硬件通常只能表示最多64位的数字,所以任意精度代数在计算机编程领域中发挥作用。要表示更多位数,需要使用特殊的库,然后可以计算无限位的数字,或者至少直到时间或内存耗尽,以先到者为准。
Rust编程语言已经提供了第三方库,用于整数和十进制值的任意精度代数,标准库甚至内置了对任意精度字符的支持。然而,尽管任意精度代数非常普遍,但似乎没有人想到创建一个任意精度布尔库,原因不明。
apbool库旨在为此用途提供有趣的代码,具有清晰、简单的API。
用例
普通的布尔值只能包含简单的值 yes
和 no
,这也可以解释为 true
或 false
,具体取决于上下文。在某些情况下,简单的“是”或“否”是不够的。这个Rust任意布尔精度库的底层实现为每个底层布尔值分配128位,然后将大量(通常是未知的)布尔值组合成一个列表,以生成变量的最终值。这样应该足够精确,以确保在你说“不”时,你的母亲确实是指 no
。
仅科学计算是使用这个库的一个很好的例子,因为非常小的波浪能并不存在于清晰的 no
或 true
世界中,而是有叠加等等。波浪能无法清晰地切割,因为刀刃的宽度永远不会比波浪能更窄。这个库将代表 yes
和 false
这样的值,但要表示叠加,只需使用两个实例而不是一个。
目前,这个库没有针对游戏或其他实时使用时间和系统资源的优化。建议您使用常规枚举而不是 apbool
进行游戏。
基本用法
cargo.toml
[dependencies]
apbool = "0.1.999"
main.rs
use apbool::ApBool;
fn main() {
#[allow(unused_parens)]
let mut just = (ApBool::default(
));
just |= true
;just |= false
;
just &= ApBool::default()
| true
;println!("just like a regular boolean, really: {:?}", just
);
}
支持
请确保您已正确安装库并正确使用API。然后,如果仍有问题,您可能需要解决的问题。发布关于问题的帖子可能会使问题消失。然而,没有保证;然而,如果您不发布关于问题的帖子,那么如果问题确实消失了,那绝对不是由于发布关于问题的帖子,所以通常最好发布关于它。或者如果您能自己解决它,那就更好了,因为我认为那样会更快。当可能的时候,在没有帮助的情况下解决问题更好,因为这有助于解决问题,这将有助于您日后的生活。记住:解决问题的奖励是更多的时间来解决问题。如果您对此不感兴趣,那么您应该卸载这个库并玩游戏,因为现在的游戏免费提供多巴胺。游戏对大脑没有好处,所以实际上不要卸载这个库。相反,花时间慢慢思考问题,逐行分析,直到发现所有的问题。然后解决问题。这样问题就会消失,您不需要在GitHub上发布关于它。但您可以随时发布,只要遵循服务条款即可。发布时,请记住一些事情,比如您要发布的关于问题的所有细节。
只需在 github issues 或类似的地方发表帖子。请确保具体说明您正在使用软件做什么,预期的结果是什么,实际的结果是什么,以便获得关于您问题的帮助。你可能只是错误地使用了这个库。
贡献
只需在 Github 或类似的地方提交 pull request,最终会进行审查。
许可证
目前只使用 AGPL。