1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
//! [![crates.io](https://meritbadge.herokuapp.com/turbonone)](https://crates.io/crates/turbonone) //! [![docs.rs](https://docs.rs/turbonone/badge.svg)](https://docs.rs/turbonone/) //! [![license](https://img.shields.io/crates/l/turbonone)](https://github.com/WilliamVenner/turbonone/blob/master/LICENSE) //! //! Tiny macro for calling functions with generic `Option<T>` arguments. //! //! ## Usage //! //! Add to your [Cargo.toml](https://doc.rust-lang.org/cargo/reference/manifest.html) file: //! //! ```toml //! [dependencies] //! turbonone = "0.*" //! ``` //! //! ## The Problem //! //! ```ignore //! # extern crate core; //! # extern crate turbonone; //! # use turbonone::turbonone; //! fn my_function<T>(arg: Option<T>) -> &'static str { //! "Works!" //! } //! //! my_function(None); // cannot infer type for type parameter `T` declared on the associated function `my_function` //! my_function(Some("An argument")); // Works! //! ``` //! //! ## The Solution //! //! ```rust //! # extern crate core; //! # extern crate turbonone; //! # #[macro_use] //! use turbonone::turbonone; //! //! fn my_function<T>(arg: Option<T>) -> &'static str { //! "Works!" //! } //! //! my_function(turbonone!()); // Works! //! my_function(Some("An argument")); // Works! //! ``` #![no_std] #[macro_export] /// ```ignore /// #![no_std] /// #[macro_export] /// macro_rules! turbonone { () => { ::core::option::Option::None::<()> } } /// ``` macro_rules! turbonone { () => { ::core::option::Option::None::<()> } }