Hi, I am reading "Programming Rust", and there is |_|, does it mean one argument that I don't care? And can I write |_,_| ?
let mut router = BasicRouter::new();
router.add_route("/", |_| get_form_response());
Hi, I am reading "Programming Rust", and there is |_|, does it mean one argument that I don't care? And can I write |_,_| ?
let mut router = BasicRouter::new();
router.add_route("/", |_| get_form_response());
Correct, it means one argument, and that you're not using it so you didn't give it a name. The _
name is exempt from various unused-symbol lints and warnings.
You can't omit the argument entirely because || ...
and |_| ...
have incompatible signatures. The former is specifically a zero-argument function; the latter is a one-argument function that happens not to use its argument. You can use |_, _| ...
where you need a two-argument function and use neither argument, or combinations like |_, b| ...
or |a, _| ...
if you only use one of the two arguments.
If you used normal name, example item
, compiler will give you a warning about unused variables.
You have two ways to shut this down:
#[warn(unused_variables)]
annotation to ignore this kind of warning.You can find more in this answer
This topic was automatically closed 90 days after the last reply. We invite you to open a new topic if you have further questions or comments.