mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-26 16:54:01 +00:00
39 lines
839 B
Rust
39 lines
839 B
Rust
pub fn will_be_called() -> &'static str {
|
|
let val = "called";
|
|
println!("{}", val);
|
|
val
|
|
}
|
|
|
|
pub fn will_not_be_called() -> bool {
|
|
println!("should not have been called");
|
|
false
|
|
}
|
|
|
|
pub fn print<T>(left: &str, value: T, right: &str)
|
|
where
|
|
T: std::fmt::Display,
|
|
{
|
|
println!("{}{}{}", left, value, right);
|
|
}
|
|
|
|
pub fn wrap_with<F, T>(inner: T, should_wrap: bool, wrapper: F)
|
|
where
|
|
F: FnOnce(&T)
|
|
{
|
|
if should_wrap {
|
|
wrapper(&inner)
|
|
}
|
|
}
|
|
|
|
fn main() {
|
|
let less = 1;
|
|
let more = 100;
|
|
|
|
if less < more {
|
|
wrap_with(will_be_called(), less < more, |inner| print(" ***", inner, "*** "));
|
|
wrap_with(will_be_called(), more < less, |inner| print(" ***", inner, "*** "));
|
|
} else {
|
|
wrap_with(will_not_be_called(), true, |inner| print("wrapped result is: ", inner, ""));
|
|
}
|
|
}
|