]>
git.proxmox.com Git - rustc.git/blob - vendor/macro-utils/src/tern_python.rs
3 // Copyright (c) 2018 Guillaume Gomez
5 // Permission is hereby granted, free of charge, to any person obtaining a copy
6 // of this software and associated documentation files (the "Software"), to deal
7 // in the Software without restriction, including without limitation the rights
8 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 // copies of the Software, and to permit persons to whom the Software is
10 // furnished to do so, subject to the following conditions:
12 // The above copyright notice and this permission notice shall be included in all
13 // copies or substantial portions of the Software.
15 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23 /// You miss Python-like ternary conditions? Why not having them in Rust then?
26 /// # #[macro_use] extern crate macro_utils;
28 /// let x = tern_python! { { "it's even" } if (y & 1 == 0) else { "it's odd" } };
30 /// println!("{} is {}", y, x);
33 macro_rules
! tern_python
{
34 ({ $if_expr:expr }
if ($cond
:expr
) else { $else_expr:expr }
) => {
43 /// The same as [`tern_python`] macro but shorter:
46 /// # #[macro_use] extern crate macro_utils;
48 /// let x = tern_py! { { "it's even" } if (y & 1 == 0) else { "it's odd" } };
50 /// println!("{} is {}", y, x);
53 /// [`tern_python`]: macro.tern_python.html
55 macro_rules
! tern_py
{
56 ({ $if_expr:expr }
if ($cond
:expr
) else { $else_expr:expr }
) => {
68 let x
= tern_python
! { { "it's even" }
if (y
& 1 == 0) else { "it's odd" }
};
70 assert_eq
!(x
, "it's even");
72 let x
= tern_py
! { { "it's even" }
if (y
& 1 == 0) else { "it's odd" }
};
74 assert_eq
!(x
, "it's even");