pub struct IconSpec {
pub glyph: Cow<'static, str>,
pub font: Option<Font>,
pub size: Option<f32>,
}Expand description
Description of how to render an icon for a particular
IconRole.
Constructed by an IconTheme. The widget takes the spec and
emits an iced text element using glyph, optionally setting
the specified font and size. When font is None, the
glyph renders in the default iced font. When size is None,
the widget picks its own default (currently 14).
Use IconSpec::new + IconSpec::with_font / IconSpec::with_size
for ergonomic construction:
let spec = IconSpec::new("\u{E89C}").with_size(16.0);
assert_eq!(spec.glyph.as_ref(), "\u{E89C}");Fields are pub so const themes can construct specs
literally — but note that adding fields here is a breaking
change, so we don’t expect to add new fields before a
hypothetical 2.0.
Fields§
§glyph: Cow<'static, str>The text to render. A single char for typical icons;
longer strings are supported (e.g. ligatures, emoji
sequences, labels like "DIR").
Cow<'static, str> so themes can use &'static str
literals at no allocation cost, while still accepting
owned Strings for dynamically constructed glyphs.
font: Option<Font>The font to render glyph in, or None for the iced
default. Themes using icon-font packs
(lucide-icons,
Material Design Icons,
…) must set this or the glyph codepoints will render
as tofu.
size: Option<f32>The point size to render at, or None to let the widget
pick (currently 14). Themes using larger/smaller glyphs
than the default can set this to match their intended
visual balance.
Implementations§
Source§impl IconSpec
impl IconSpec
Sourcepub fn new(glyph: impl Into<Cow<'static, str>>) -> Self
pub fn new(glyph: impl Into<Cow<'static, str>>) -> Self
Build a spec from a glyph string. Font and size are None
by default — the widget will render in the iced default
font at its default size.
Examples found in repository?
39 fn glyph(&self, role: IconRole) -> IconSpec {
40 // External theme → include a `_ =>` fallback for future
41 // variants added in a minor release.
42 let s: &'static str = match role {
43 IconRole::FolderClosed => "[D]",
44 IconRole::FolderOpen => "[O]",
45 IconRole::File => "[F]",
46 IconRole::Error => "[!]",
47 IconRole::CaretRight => ">",
48 IconRole::CaretDown => "v",
49 _ => "?",
50 };
51 IconSpec::new(s)
52 }
53}
54
55/// Custom theme: ultra-compact ASCII. Shows that a theme doesn't
56/// need to pull in an icon font — plain text works fine if the
57/// glyphs exist in the default system font.
58#[derive(Debug)]
59struct AsciiTheme;
60
61impl IconTheme for AsciiTheme {
62 fn glyph(&self, role: IconRole) -> IconSpec {
63 let s: &'static str = match role {
64 IconRole::FolderClosed => "+",
65 IconRole::FolderOpen => "-",
66 IconRole::File => ".",
67 IconRole::Error => "!",
68 IconRole::CaretRight => ">",
69 IconRole::CaretDown => "v",
70 _ => "?",
71 };
72 IconSpec::new(s)
73 }Trait Implementations§
impl StructuralPartialEq for IconSpec
Auto Trait Implementations§
impl Freeze for IconSpec
impl RefUnwindSafe for IconSpec
impl Send for IconSpec
impl Sync for IconSpec
impl Unpin for IconSpec
impl UnsafeUnpin for IconSpec
impl UnwindSafe for IconSpec
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<State, Message> IntoBoot<State, Message> for State
impl<State, Message> IntoBoot<State, Message> for State
Source§fn into_boot(self) -> (State, Task<Message>)
fn into_boot(self) -> (State, Task<Message>)
Application.Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more