#编译器插件 #溢出 #算术 #插件 #算术运算

nightly overflower

一个编译器插件,可轻松为项目的所有整数操作选择溢出行为

15 个版本

使用旧的 Rust 2015

0.4.6 2018 年 10 月 9 日
0.4.4 2018 年 7 月 13 日
0.4.1 2018 年 2 月 7 日
0.4.0 2017 年 4 月 21 日
0.1.5 2016 年 7 月 21 日

#1160Rust 模式

26 每月下载量

Apache-2.0

62KB
1K SLoC

overflower

Build Status Current Version

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

用法

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

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

[dependencies]
overflower = "0.4.6"
overflower_support = "0.1.5"

您也可以将其作为可选依赖项添加(代码省略)。

接下来,在您的 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

依赖项