#overflow #nightly #arithmetic #compiler-plugin

nightly overflower_support

一系列专用特性和实现,允许在不进行类型推断的情况下自动处理溢出。仅限 nightly 版本

5 个版本

使用旧的 Rust 2015

0.1.5 2016 年 12 月 26 日
0.1.4 2016 年 7 月 21 日
0.1.3 2016 年 6 月 24 日
0.1.2 2016 年 6 月 23 日
0.1.0 2016 年 6 月 12 日

#18 in #overflow


用于 overflower

Apache-2.0 协议

49KB
811

overflower

Build Status Current Version

此项目包含一个编译器插件和支撑库,允许程序员注释其代码以声明如何处理整数溢出。

用法

注意:此功能需要 nightly 编译器,因为支撑库使用了目前尚不稳定的专业化。

要使用它,您需要在您的 Cargo.toml 中添加以下内容

[dependencies]
overflower = "0.9"

您还可以将其作为可选依赖项(代码示例省略)。

接下来,在您的 crate 根目录下,您需要添加

#![feature(plugin)]
#![plugin(overflower)]

extern crate overflower_support;

// Now you can annotate items (up to and including the whole crate)
#[overflow(panic)]
fn panic_on_overflow() { .. }

#[overflow(wrap)]
fn like_you_just_dont_care() { .. }

#[overflow(saturate)]
fn too_much_sunlight() {
    #[overflow(default)]
    fn but_use_standard_ops_here() { .. }
    ..
}

对于可选依赖项,您将添加以下内容

#![cfg_attr(feature="overflower", feature(plugin))]
#![cfg_attr(feature="overflower", plugin(overflower))]

#[cfg(feature="overflower")
extern crate overflower_support;

// as well as the following instead of e.g. `#[overflow(wrap)]`
#[cfg_attr(feature="overflower", overflow(wrap))];

这是一个仍在开发中的项目,但大多数功能应该已经可用。

许可证:Apache 2.0 协议

没有运行时依赖项