Does this mean that it is impossible to use mutable methods for any of the Iterator methods ( find, filteretc.)?
, F: Fn*(&Self::Item), . , (&mut) (&). :
let mut x = vec![10];
(&mut x)[0] = 20;
(&mut (&mut x))[0] = 20;
, auto deref.
Iterator F: Fn*(Self::Item), map, filter_map .. , .
: Fn*(&Self::Item) Fn*(Self::item)?
, , filter ( , true), Self::Item , , . filter &Self::Item, .
, , map filter_map, , ( ), Self::Item.
, filter_map filter , , :
extern crate libusb;
fn main() {
let mut context = libusb::Context::new().expect("context creation");
let mut filtered: Vec<_> = context.devices()
.expect("devices list")
.iter()
.filter_map(|mut r| {
if let Ok(d) = r.device_descriptor() {
if d.vendor_id() == 7531 {
return Some(r);
}
}
None
})
.collect();
for d in &mut filtered {
// same as: for d in filtered.iter_mut()
println!("{:?}", d.device_descriptor());
}
}
filter_map None Some s.