pub trait IntoElement: Sized {
type ElementType: Element;
// Required method
fn into_element(self) -> Self::ElementType;
// Provided methods
fn fixed_width(self, width: usize) -> FixedWidth<Self::ElementType> { ... }
fn with_style(self, style: Style) -> Styled<Self::ElementType> { ... }
}Expand description
A type that can be converted into an element.
Required Associated Types§
Sourcetype ElementType: Element
type ElementType: Element
The element type to be converted into.
Required Methods§
Sourcefn into_element(self) -> Self::ElementType
fn into_element(self) -> Self::ElementType
Converts this type into an Element.
Provided Methods§
Sourcefn fixed_width(self, width: usize) -> FixedWidth<Self::ElementType>
fn fixed_width(self, width: usize) -> FixedWidth<Self::ElementType>
Convenience function to wrap this element in a FixedWidth.
Examples found in repository?
examples/input.rs (line 25)
13fn main() -> std::io::Result<()> {
14 let stdout = std::io::stdout().into_raw_mode()?;
15 let mut r = Renderer::new(stdout);
16
17 let mut name = String::new();
18
19 let mut events = std::io::stdin().events();
20 loop {
21 r.reset()?
22 .render((
23 "Enter your name: ".into_element(),
24 (name.into_element(), Cursor, Gap(1))
25 .fixed_width(20)
26 .truncated(Direction::Left)
27 .with_style(Style::bg(240)),
28 ))?
29 .finish()?;
30
31 let Some(event) = events.next().transpose()? else {
32 break;
33 };
34 match event {
35 Event::Key(Key::Char(ch)) if !ch.is_ascii_control() => name.push(ch),
36 Event::Key(Key::Char('\n' | '\r')) => break,
37 Event::Key(Key::Backspace) => {
38 name.pop();
39 }
40 _ => {}
41 }
42 }
43
44 r.clear()?;
45 drop(r);
46 println!("Your name is {name:?}");
47 Ok(())
48}Sourcefn with_style(self, style: Style) -> Styled<Self::ElementType>
fn with_style(self, style: Style) -> Styled<Self::ElementType>
Convenience function to wrap this element in a Styled.
Examples found in repository?
More examples
examples/input.rs (line 27)
13fn main() -> std::io::Result<()> {
14 let stdout = std::io::stdout().into_raw_mode()?;
15 let mut r = Renderer::new(stdout);
16
17 let mut name = String::new();
18
19 let mut events = std::io::stdin().events();
20 loop {
21 r.reset()?
22 .render((
23 "Enter your name: ".into_element(),
24 (name.into_element(), Cursor, Gap(1))
25 .fixed_width(20)
26 .truncated(Direction::Left)
27 .with_style(Style::bg(240)),
28 ))?
29 .finish()?;
30
31 let Some(event) = events.next().transpose()? else {
32 break;
33 };
34 match event {
35 Event::Key(Key::Char(ch)) if !ch.is_ascii_control() => name.push(ch),
36 Event::Key(Key::Char('\n' | '\r')) => break,
37 Event::Key(Key::Backspace) => {
38 name.pop();
39 }
40 _ => {}
41 }
42 }
43
44 r.clear()?;
45 drop(r);
46 println!("Your name is {name:?}");
47 Ok(())
48}Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.