#selection #inline #parameters #input #targeted #sized #abstraction

platform

提供了一种根据目标平台轻松内联选择输入参数的方法

3 个稳定版本

使用旧的 Rust 2015

1.0.2 2018年4月30日
1.0.1 2018年4月29日
1.0.0 2018年4月27日

#3 in #targeted

MIT/Apache

7KB

Crates listing

platform 包

此包提供了一种根据目标平台轻松内联选择输入参数的方法。可用于任何 Sized 类型。

这保证是一个零成本的抽象,因为所有调用都被内联了。

extern crate platform;

use platform::Platform;

fn main() {
    println!("Hello from {}!", 
        "unknown"
        .ios("ios")
        .android("android")
        .windows("windows")
        .macos("macos")
        .linux("linux")
        .wasm32("wasm32")
        .emscripten("emscripten")
    );
}

lib.rs:

此包提供了一种根据目标平台轻松内联选择输入参数的方法。可用于任何 Sized 类型。

这保证是一个零成本的抽象,因为所有调用都被内联了。

extern crate platform;

use platform::Platform;

fn main() {
    println!("Hello from {}!",
        "unknown"
        .ios("ios")
        .android("android")
        .windows("windows")
        .macos("macos")
        .linux("linux")
        .wasm32("wasm32")
        .emscripten("emscripten")
    );

    // Alternatively, let's pretend the arguments are non-trivial to evaluate.
    // We can also use this on function pointers so long as all the variants can 
    // coerce to the same function pointer type.
    println!("Hello from {}!",
        ((|| String::from("unknown")) as fn() -> String)
        .ios(|| String::from("ios"))
        .android(|| String::from("android"))
        .windows(|| String::from("windows"))
        .macos(|| String::from("macos"))
        .linux(|| String::from("linux"))
        .wasm32(|| String::from("wasm32"))
        .emscripten(|| String::from("emscripten"))
        ()
    );
}

无运行时依赖