Skip to main content

Crate exclusive

Crate exclusive 

Source
Expand description

Create exclusive contexts around your code that should not collide with other calls to exclusive!.

The exclusive! macro works by making a “unique” ID for each call site and using that ID to create a unique const declaration.

§Purpose

This project was made to be used by static_assertions to prevent different assertions from colliding with the same identifier.

§Usage

This crate is available on crates.io and can be used by adding the following to your project’s Cargo.toml:

[dependencies]
exclusive = "0.1"

and this to your crate root (main.rs or lib.rs):

#[macro_use]
extern crate exclusive;

Then, when calling the macro, you can place any code you want inside it!

exclusive! {
    let x = 20;
    let y = 30;
}

exclusive! {
    // This code doesn't actually run
    println!("Hello, world!");
}

With the nightly feature enabled, a const the identifier _ is used internally instead. This simply avoids having to generate a new identifier each time.

#![feature(underscore_const_names)]

exclusive! {
    // Do stuff here
}

exclusive! {
    // Do other stuff here
}

Macros§

exclusive
Creates an exclusive context. 😎