面试题答案
一键面试macro_rules! assert_float_within_error {
($actual:expr, $expected:expr, $error:expr) => {
let diff = ($actual - $expected).abs();
if diff > $error {
panic!(
"assertion failed: `(left within right)`\n left: `{}`,\n right: `{}`,\n error: `{}`",
$actual,
$expected,
$error
);
}
};
}
你可以这样使用这个宏:
fn main() {
assert_float_within_error!(1.05, 1.0, 0.1);
assert_float_within_error!(1.2, 1.0, 0.1); // 这一行会导致panic
}