Description
This project contains a compiler plugin and supporting library to allow the programmer to annotate their code to declare how integer overflows should be dealt with.
overflower alternatives and similar packages
Based on the "Build system" category.
Alternatively, view overflower alternatives based on common mentions on social networks and blogs.
-
cargo-edit
A utility for managing cargo dependencies from the command line. -
cargo-outdated
A cargo subcommand for displaying when Rust dependencies are out of date -
cargo-count
a cargo subcommand for counting lines of code in Rust projects -
cargo-check
a wrapper around cargo rustc -- -Zno-trans which can be helpful for running a faster compile if you only need correctness checks -
cratehub
🦀 A browser extension to explore rust cargo dependencies on GitHub repos -
cargo-multi
Extends cargo to execute the given command on multiple crates - upstream is at
Clean code begins in your IDE with SonarLint
Do you think we are missing an alternative of overflower or a related project?
README
overflower
This project contains a compiler plugin and supporting library to allow the programmer to annotate their code to declare how integer overflows should be dealt with.
Usage
Note: This needs a nightly compiler both for the compiler plugin and the supporting library, as the latter makes use of specialization, which is unstable for now.
To use it, you need the following in your Cargo.toml:
[dependencies]
overflower = "0.9"
You may also make it an optional dependency (overflower = { version = "0.4.6",
optional = true }
).
Next, in your crate root, you need to add:
#![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() { .. }
..
}
In case of an optional dependency, you'd add the following instead:
#![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))];
This is a bit of a work in progress, but most things should already be usable.
License: Apache 2.0
*Note that all licence references and agreements mentioned in the overflower README section above
are relevant to that project's source code only.