Struct stdio::KeyEventReadGuard
source · pub struct KeyEventReadGuard { /* private fields */ }Expand description
A structure that allows applications to access keyboard events directly.
When it gets instantiated, it takes the reader of the KeyEventQueue away from the shell,
or whichever entity previously owned the queue.
When it goes out of the scope, the taken reader will be automatically returned
back to the shell or the original owner in its Drop routine.
Implementations§
source§impl KeyEventReadGuard
impl KeyEventReadGuard
sourcepub fn new(
reader: KeyEventQueueReader,
closure: Box<dyn Fn(&mut Option<KeyEventQueueReader>)>
) -> KeyEventReadGuard
pub fn new( reader: KeyEventQueueReader, closure: Box<dyn Fn(&mut Option<KeyEventQueueReader>)> ) -> KeyEventReadGuard
Create a new KeyEventReadGuard. This function takes a reader
to KeyEventQueue. Thus, the reader will never be None until the
drop() method.
Methods from Deref<Target = Option<KeyEventQueueReader>>§
1.0.0 · sourcepub fn as_ref(&self) -> Option<&T>
pub fn as_ref(&self) -> Option<&T>
Converts from &Option<T> to Option<&T>.
Examples
Calculates the length of an Option<String> as an Option<usize>
without moving the String. The map method takes the self argument by value,
consuming the original, so this technique uses as_ref to first take an Option to a
reference to the value inside the original.
let text: Option<String> = Some("Hello, world!".to_string());
// First, cast `Option<String>` to `Option<&String>` with `as_ref`,
// then consume *that* with `map`, leaving `text` on the stack.
let text_length: Option<usize> = text.as_ref().map(|s| s.len());
println!("still can print text: {text:?}");1.75.0-nightly · sourcepub fn as_slice(&self) -> &[T]
pub fn as_slice(&self) -> &[T]
Returns a slice of the contained value, if any. If this is None, an
empty slice is returned. This can be useful to have a single type of
iterator over an Option or slice.
Note: Should you have an Option<&T> and wish to get a slice of T,
you can unpack it via opt.map_or(&[], std::slice::from_ref).
Examples
assert_eq!(
[Some(1234).as_slice(), None.as_slice()],
[&[1234][..], &[][..]],
);The inverse of this function is (discounting
borrowing) [_]::first:
for i in [Some(1234_u16), None] {
assert_eq!(i.as_ref(), i.as_slice().first());
}1.40.0 · sourcepub fn as_deref(&self) -> Option<&<T as Deref>::Target>where
T: Deref,
pub fn as_deref(&self) -> Option<&<T as Deref>::Target>where T: Deref,
Converts from Option<T> (or &Option<T>) to Option<&T::Target>.
Leaves the original Option in-place, creating a new one with a reference
to the original one, additionally coercing the contents via Deref.
Examples
let x: Option<String> = Some("hey".to_owned());
assert_eq!(x.as_deref(), Some("hey"));
let x: Option<String> = None;
assert_eq!(x.as_deref(), None);