#binary #binary-data #data #utility #library #programming-language

apbool

仅为Rust提供的任意精度布尔算术。

1个不稳定版本

0.1.999 2022年4月1日

#1283 in 数学

AGPL-3.0-only

37KB
998

apbool

仅为Rust提供的任意精度布尔算术。

动机和背景

布尔只是一个可以取值 true 或 false 的变量,是布尔算术的基础。诸如 AND、OR、EXCLUSIVE OR 和 NOT 等运算符允许我们以形式化的方式组合这些值,类似于使用加法和减法等代数运算符来组合数值和小数。

由于CPU处理单元中内置的硬件通常只能表示最多64位的数字,所以任意精度代数在计算机编程领域中发挥作用。要表示更多位数,需要使用特殊的库,然后可以计算无限位的数字,或者至少直到时间或内存耗尽,以先到者为准。

Rust编程语言已经提供了第三方库,用于整数和十进制值的任意精度代数,标准库甚至内置了对任意精度字符的支持。然而,尽管任意精度代数非常普遍,但似乎没有人想到创建一个任意精度布尔库,原因不明。

apbool库旨在为此用途提供有趣的代码,具有清晰、简单的API。

用例

普通的布尔值只能包含简单的值 yesno,这也可以解释为 truefalse,具体取决于上下文。在某些情况下,简单的“是”或“否”是不够的。这个Rust任意布尔精度库的底层实现为每个底层布尔值分配128位,然后将大量(通常是未知的)布尔值组合成一个列表,以生成变量的最终值。这样应该足够精确,以确保在你说“不”时,你的母亲确实是指 no

仅科学计算是使用这个库的一个很好的例子,因为非常小的波浪能并不存在于清晰的 notrue 世界中,而是有叠加等等。波浪能无法清晰地切割,因为刀刃的宽度永远不会比波浪能更窄。这个库将代表 yesfalse 这样的值,但要表示叠加,只需使用两个实例而不是一个。

目前,这个库没有针对游戏或其他实时使用时间和系统资源的优化。建议您使用常规枚举而不是 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

无运行时依赖