pub struct Placeholder;
Expand description
Placeholder type to be used when constructing a
PoloniusResult::Owned
.
Since there is no access to the original input_borrow
yet (due to the
very polonius limitation that makes this crate necessary), this
Placeholder
is used in its stead.
use ::polonius_the_crab::*;
type StringRef = ForLt!(&str);
let map: &mut ::std::collections::HashMap<i32, String> = // ...
match polonius::<_, _, StringRef>(map, |map| match map.get(&22) {
| Some(ret) => PoloniusResult::Borrowing(ret),
| None => PoloniusResult::Owned {
value: 42,
input_borrow: /* WHAT TO PUT HERE?? */ Placeholder, // 👈👈
},
}) {
// `polonius` magic
| PoloniusResult::Borrowing(dependent_entry) => {
// ...
stuff(dependent_entry);
},
| PoloniusResult::Owned {
value,
input_borrow: map, // we got our `map` borrow back! 🙌
} => {
assert_eq!(value, 42);
stuff(map);
},
}
Note that despite intellectually interesting w.r.t properly understanding
the API, providing that input_borrow: Placeholder
does not provide any
valuable information to the call, and is thus rather noisy.
Hence the PoloniusResult::Owned()
constructor shorthand,
so as to be able to write:
PoloniusResult::Owned(42)
// is just a shorthand for:
PoloniusResult::Owned {
value: 42,
input_borrow: /* WHAT TO PUT HERE?? */ Placeholder, // 👈👈
}
Auto Trait Implementations§
impl Freeze for Placeholder
impl RefUnwindSafe for Placeholder
impl Send for Placeholder
impl Sync for Placeholder
impl Unpin for Placeholder
impl UnwindSafe for Placeholder
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more