Crate likely_stable[][src]

This crates brings likely and unlikely branch prediction hints to stable rust

use likely_stable::{likely,unlikely};
use rand::random;

if likely(random::<i32>() > 10) {
    println!("likely!")
} else {
    println!("unlikely!")
}

It also provides if_likely and if_unlikely for branch prediction for if let statements.

use likely_stable::if_likely;
use rand::random;

let v = Some(random()).filter(|v:&i32| *v > 10);

if_likely!{let Some(v) = v => {
    println!("likely!")
} else {
    println!("unlikely!")
}};

Moreover traits LikelyBool, LikelyOption and LikelyResult provides likely and unlikely versions of the methods commonly used for types bool, Option and Result

use likely_stable::LikelyOption;
use rand::random;

let v = Some(random()).filter(|v:&i32| *v > 10);

v.map_or_else_likely(
    || println!("unlikely"),
    |v| println!("likely {}",v));

Macros

if_likely

If statement which inform the compiler that the first branch will be the most taken branch

if_unlikely

If statement which inform the compiler that the first branch will be the most taken branch

Traits

LikelyBool

Likely trait for bool

LikelyOption

Likely trait for Options

LikelyResult

Likely trait for Result

Functions

likely

Brings likely to stable rust.

unlikely

Brings unlikely to stable rust.