I found this syntax in a lib, and I never saw it before...
loop {
let mut buf = vec![0; 1024];
let n = match stdin.read(&mut buf).await {
Err(_) | Ok(0) => break,
Ok(n) => n,
};
buf.truncate(n);
tx.unbounded_send(Message::binary(buf)).unwrap();
}
In patterns, _
matches without binding. So that matches the error variant without binding the value within. Effectively the value is ignored.
If you've seen
let _ = call_that_returns_something_you_want_to_ignore();
It's the same mechanism, only deeper within a pattern.
After reading your other post, I think I misunderstood and you're asking about the pipe. That's an or-pattern. In the example it matches any Err
and Ok(0)
, but not Ok(1)
etc.
1 Like