Trait Lens

Source
pub trait Lens:
    'static
    + Copy
    + Debug {
    type Source;
    type Target;

    // Required method
    fn view<'a>(
        &self,
        source: &'a Self::Source,
    ) -> Option<LensValue<'a, Self::Target>>;

    // Provided method
    fn id(&self) -> StoreId { ... }
}
Expand description

A Lens allows the construction of a reference to a piece of some data, e.g. a field of a struct.

When deriving the Lens trait on a struct, the derive macro constructs a static type which implements the Lens trait for each field. The view() method takes a reference to the struct type as input and outputs a reference to the field. This provides a way to specify a binding to a specific field of some application data.

Required Associated Types§

Required Methods§

Source

fn view<'a>( &self, source: &'a Self::Source, ) -> Option<LensValue<'a, Self::Target>>

Provided Methods§

Source

fn id(&self) -> StoreId

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.

Implementations on Foreign Types§

Source§

impl<T> Lens for &'static T
where T: 'static + Copy + Debug + Hash,

Source§

type Source = ()

Source§

type Target = T

Source§

fn view<'a>( &self, _source: &'a <&'static T as Lens>::Source, ) -> Option<LensValue<'a, <&'static T as Lens>::Target>>

Implementors§

Source§

impl Lens for vizia::environment::environment_derived_lenses::caret_timer

Source§

impl Lens for locale

Source§

type Source = Environment

Source§

type Target = LanguageIdentifier

Source§

impl Lens for vizia::environment::environment_derived_lenses::root

Source§

impl Lens for theme

Source§

impl Lens for app_theme

Source§

impl Lens for vizia::environment::theme_derived_lenses::root

Source§

impl Lens for sys_theme

Source§

impl Lens for vizia::views::badge_derived_lenses::placement

Source§

impl Lens for vizia::views::badge_derived_lenses::root

Source§

impl Lens for on_close

Source§

impl Lens for vizia::views::chip_derived_lenses::root

Source§

impl Lens for vizia::views::collapsible_derived_lenses::is_open

Source§

impl Lens for vizia::views::collapsible_derived_lenses::root

Source§

impl Lens for months

Source§

impl Lens for vizia::views::datepicker_derived_lenses::root

Source§

impl Lens for selected_month

Source§

impl Lens for view_date

Source§

impl Lens for vizia::views::dropdown_derived_lenses::arrow_size

Source§

impl Lens for vizia::views::dropdown_derived_lenses::is_open

Source§

impl Lens for vizia::views::dropdown_derived_lenses::placement

Source§

impl Lens for vizia::views::dropdown_derived_lenses::root

Source§

impl Lens for vizia::views::dropdown_derived_lenses::should_reposition

Source§

impl Lens for vizia::views::dropdown_derived_lenses::show_arrow

Source§

impl Lens for focus_visible

Source§

impl Lens for focused

Source§

impl Lens for horizontal

Source§

impl Lens for list_len

Source§

impl Lens for vizia::views::list_derived_lenses::on_select

Source§

impl Lens for vizia::views::list_derived_lenses::root

Source§

impl Lens for selectable

Source§

impl Lens for vizia::views::list_derived_lenses::selected

Source§

impl Lens for selection_follows_focus

Source§

impl Lens for vizia::views::menu_bar_derived_lenses::is_open

Source§

impl Lens for vizia::views::menu_bar_derived_lenses::root

Source§

impl Lens for vizia::views::menu_button_derived_lenses::root

Source§

impl Lens for vizia::views::pick_list_derived_lenses::is_open

Source§

impl Lens for vizia::views::pick_list_derived_lenses::on_select

Source§

impl Lens for vizia::views::pick_list_derived_lenses::placeholder

Source§

impl Lens for vizia::views::pick_list_derived_lenses::root

Source§

impl Lens for vizia::views::popup_data_derived_lenses::is_open

Source§

impl Lens for vizia::views::popup_data_derived_lenses::root

Source§

impl Lens for vizia::views::popup_derived_lenses::arrow_size

Source§

impl Lens for vizia::views::popup_derived_lenses::placement

Source§

impl Lens for vizia::views::popup_derived_lenses::root

Source§

impl Lens for vizia::views::popup_derived_lenses::should_reposition

Source§

impl Lens for vizia::views::popup_derived_lenses::show_arrow

Source§

impl Lens for max_rating

Source§

impl Lens for vizia::views::rating_derived_lenses::on_change

Source§

impl Lens for rating

Source§

impl Lens for vizia::views::rating_derived_lenses::root

Source§

impl Lens for container_height

Source§

impl Lens for container_width

Source§

impl Lens for inner_height

Source§

impl Lens for inner_width

Source§

impl Lens for vizia::views::scroll_view_derived_lenses::root

Source§

impl Lens for vizia::views::scroll_view_derived_lenses::scroll_to_cursor

Source§

impl Lens for scroll_x

Source§

impl Lens for scroll_y

Source§

impl Lens for show_horizontal_scrollbar

Source§

impl Lens for show_vertical_scrollbar

Source§

impl Lens for icons

Source§

impl Lens for on_decrement

Source§

impl Lens for on_increment

Source§

impl Lens for orientation

Source§

impl Lens for vizia::views::spinbox_derived_lenses::root

Source§

impl Lens for vizia::views::submenu_derived_lenses::is_open

Source§

impl Lens for is_submenu

Source§

impl Lens for open_on_hover

Source§

impl Lens for vizia::views::submenu_derived_lenses::root

Source§

impl Lens for is_vertical

Source§

impl Lens for vizia::views::tab_view_derived_lenses::root

Source§

impl Lens for selected_index

Source§

impl Lens for vizia::views::tooltip_derived_lenses::arrow_size

Source§

impl Lens for vizia::views::tooltip_derived_lenses::placement

Source§

impl Lens for vizia::views::tooltip_derived_lenses::root

Source§

impl Lens for shift

Source§

impl Lens for vizia::views::tooltip_derived_lenses::show_arrow

Source§

impl Lens for vizia::views::virtual_list_derived_lenses::on_change

Source§

impl Lens for vizia::views::virtual_list_derived_lenses::root

Source§

impl Lens for vizia::views::virtual_list_derived_lenses::scroll_to_cursor

Source§

impl<A, B> Lens for Then<A, B>
where A: Lens, B: Lens<Source = <A as Lens>::Target>,

Source§

type Source = <A as Lens>::Source

Source§

type Target = <B as Lens>::Target

Source§

impl<L1, L2> Lens for AndLens<L1, L2>
where L2: Lens<Target = bool>, L1: Lens<Source = <L2 as Lens>::Source, Target = bool>,

Source§

impl<L1, L2> Lens for OrLens<L1, L2>
where L2: Lens<Target = bool>, L1: Lens<Source = <L2 as Lens>::Source, Target = bool>,

Source§

impl<L1, L2> Lens for RatioLens<L1, L2>
where L1: Clone + Lens<Target = f32> + 'static, L2: 'static + Clone + Lens<Target = f32, Source = <L1 as Lens>::Source>,

Source§

impl<L1, L2, T> Lens for filter_text<L1, L2, T>
where L1: Lens<Target = Vec<T>>, L2: Lens<Target = usize>, T: 'static + Data + ToString,

Source§

impl<L1, L2, T> Lens for vizia::views::combo_box_derived_lenses::is_open<L1, L2, T>
where L1: Lens<Target = Vec<T>>, L2: Lens<Target = usize>, T: 'static + Data + ToString,

Source§

type Source = ComboBox<L1, L2, T>

Source§

type Target = bool

Source§

impl<L1, L2, T> Lens for list_lens<L1, L2, T>
where L1: Lens<Target = Vec<T>>, L2: Lens<Target = usize>, T: 'static + Data + ToString,

Source§

type Source = ComboBox<L1, L2, T>

Source§

type Target = L1

Source§

impl<L1, L2, T> Lens for vizia::views::combo_box_derived_lenses::on_select<L1, L2, T>
where L1: Lens<Target = Vec<T>>, L2: Lens<Target = usize>, T: 'static + Data + ToString,

Source§

type Source = ComboBox<L1, L2, T>

Source§

type Target = Option<Box<dyn Fn(&mut EventContext<'_>, usize)>>

Source§

impl<L1, L2, T> Lens for p<L1, L2, T>
where L1: Lens<Target = Vec<T>>, L2: Lens<Target = usize>, T: 'static + Data + ToString,

Source§

impl<L1, L2, T> Lens for vizia::views::combo_box_derived_lenses::placeholder<L1, L2, T>
where L1: Lens<Target = Vec<T>>, L2: Lens<Target = usize>, T: 'static + Data + ToString,

Source§

impl<L1, L2, T> Lens for vizia::views::combo_box_derived_lenses::root<L1, L2, T>
where L1: Lens<Target = Vec<T>>, L2: Lens<Target = usize>, T: 'static + Data + ToString,

Source§

type Source = ComboBox<L1, L2, T>

Source§

type Target = ComboBox<L1, L2, T>

Source§

impl<L1, L2, T> Lens for vizia::views::combo_box_derived_lenses::selected<L1, L2, T>
where L1: Lens<Target = Vec<T>>, L2: Lens<Target = usize>, T: 'static + Data + ToString,

Source§

type Source = ComboBox<L1, L2, T>

Source§

type Target = L2

Source§

impl<L> Lens for internal<L>
where L: Lens,

Source§

impl<L> Lens for is_dragging<L>
where L: Lens,

Source§

impl<L> Lens for vizia::views::slider_derived_lenses::lens<L>
where L: Lens,

Source§

impl<L> Lens for on_changing<L>
where L: Lens,

Source§

type Source = Slider<L>

Source§

type Target = Option<Box<dyn Fn(&mut EventContext<'_>, f32)>>

Source§

impl<L> Lens for vizia::views::slider_derived_lenses::root<L>
where L: Lens,

Source§

impl<L> Lens for vizia::views::textbox_derived_lenses::caret_timer<L>
where L: Lens,

Source§

impl<L> Lens for edit<L>
where L: Lens,

Source§

impl<L> Lens for vizia::views::textbox_derived_lenses::lens<L>
where L: Lens,

Source§

impl<L> Lens for on_blur<L>
where L: Lens,

Source§

type Source = Textbox<L>

Source§

type Target = Option<Box<dyn Fn(&mut EventContext<'_>) + Sync + Send>>

Source§

impl<L> Lens for on_cancel<L>
where L: Lens,

Source§

type Source = Textbox<L>

Source§

type Target = Option<Box<dyn Fn(&mut EventContext<'_>) + Sync + Send>>

Source§

impl<L> Lens for on_edit<L>
where L: Lens,

Source§

impl<L> Lens for on_submit<L>
where L: Lens,

Source§

type Source = Textbox<L>

Source§

type Target = Option<Box<dyn Fn(&mut EventContext<'_>, <L as Lens>::Target, bool) + Sync + Send>>

Source§

impl<L> Lens for vizia::views::textbox_derived_lenses::placeholder<L>
where L: Lens,

Source§

impl<L> Lens for preedit_backup<L>
where L: Lens,

Source§

type Source = Textbox<L>

Source§

type Target = Option<PreeditBackup>

Source§

impl<L> Lens for vizia::views::textbox_derived_lenses::root<L>
where L: Lens,

Source§

impl<L> Lens for selection<L>
where L: Lens,

Source§

type Source = Textbox<L>

Source§

type Target = Selection

Source§

impl<L> Lens for show_caret<L>
where L: Lens,

Source§

impl<L> Lens for show_placeholder<L>
where L: Lens,

Source§

impl<L> Lens for transform<L>
where L: Lens,

Source§

impl<L> Lens for validate<L>
where L: Lens,

Source§

type Source = Textbox<L>

Source§

type Target = Option<Box<dyn Fn(&<L as Lens>::Target) -> bool>>

Source§

impl<L> Lens for Wrapper<L>
where L: Lens,

Source§

type Source = <L as Lens>::Source

Source§

type Target = <L as Lens>::Target

Source§

impl<L, O> Lens for Map<L, O>
where L: Lens, O: 'static,

Source§

type Source = <L as Lens>::Source

Source§

type Target = O

Source§

impl<L, O> Lens for MapRef<L, O>
where L: Lens, O: 'static + Clone,

Source§

type Source = <L as Lens>::Source

Source§

type Target = O

Source§

impl<L, T> Lens for Index<L, T>
where L: Lens, <L as Lens>::Target: Deref<Target = [T]>, T: 'static + Clone,

Source§

type Source = <L as Lens>::Source

Source§

type Target = T

Source§

impl<T> Lens for StaticLens<T>

Source§

impl<T> Lens for UnwrapLens<T>
where T: 'static,

Source§

impl<T, U> Lens for IntoLens<T, U>
where T: 'static + Clone + TryInto<U>, U: 'static,