Trait Lens

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§

type Source

type Target

Required Methods§

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

Provided Methods§

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§

§

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

§

type Source = ()

§

type Target = T

§

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

Implementors§

§

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

§

impl Lens for locale

§

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

§

impl Lens for theme

§

impl Lens for app_theme

§

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

§

impl Lens for sys_theme

§

impl Lens for vizia::prelude::badge_derived_lenses::placement

§

impl Lens for vizia::prelude::badge_derived_lenses::root

§

impl Lens for on_close

§

type Source = Chip

§

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

§

impl Lens for vizia::prelude::chip_derived_lenses::root

§

type Source = Chip

§

type Target = Chip

§

impl Lens for vizia::prelude::collapsible_derived_lenses::is_open

§

impl Lens for vizia::prelude::collapsible_derived_lenses::root

§

impl Lens for months

§

impl Lens for vizia::prelude::datepicker_derived_lenses::root

§

impl Lens for selected_month

§

impl Lens for view_date

§

impl Lens for vizia::prelude::dropdown_derived_lenses::arrow_size

§

impl Lens for vizia::prelude::dropdown_derived_lenses::is_open

§

impl Lens for vizia::prelude::dropdown_derived_lenses::placement

§

impl Lens for vizia::prelude::dropdown_derived_lenses::root

§

impl Lens for vizia::prelude::dropdown_derived_lenses::should_reposition

§

impl Lens for vizia::prelude::dropdown_derived_lenses::show_arrow

§

impl Lens for vizia::prelude::list_derived_lenses::focused

§

impl Lens for vizia::prelude::list_derived_lenses::num_items

§

impl Lens for vizia::prelude::list_derived_lenses::orientation

§

impl Lens for vizia::prelude::list_derived_lenses::root

§

type Source = List

§

type Target = List

§

impl Lens for vizia::prelude::list_derived_lenses::scroll_to_cursor

§

type Source = List

§

type Target = bool

§

impl Lens for vizia::prelude::list_derived_lenses::scroll_x

§

type Source = List

§

type Target = f32

§

impl Lens for vizia::prelude::list_derived_lenses::scroll_y

§

type Source = List

§

type Target = f32

§

impl Lens for vizia::prelude::list_derived_lenses::selectable

§

impl Lens for vizia::prelude::list_derived_lenses::selected

§

impl Lens for vizia::prelude::list_derived_lenses::selection_follows_focus

§

type Source = List

§

type Target = bool

§

impl Lens for vizia::prelude::list_derived_lenses::show_horizontal_scrollbar

§

type Source = List

§

type Target = bool

§

impl Lens for vizia::prelude::list_derived_lenses::show_vertical_scrollbar

§

type Source = List

§

type Target = bool

§

impl Lens for vizia::prelude::menu_bar_derived_lenses::is_open

§

impl Lens for vizia::prelude::menu_bar_derived_lenses::root

§

impl Lens for vizia::prelude::menu_button_derived_lenses::root

§

impl Lens for vizia::prelude::pick_list_derived_lenses::is_open

§

impl Lens for vizia::prelude::pick_list_derived_lenses::on_select

§

type Source = PickList

§

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

§

impl Lens for vizia::prelude::pick_list_derived_lenses::placeholder

§

impl Lens for vizia::prelude::pick_list_derived_lenses::root

§

impl Lens for vizia::prelude::popup_data_derived_lenses::is_open

§

impl Lens for vizia::prelude::popup_data_derived_lenses::root

§

impl Lens for vizia::prelude::popup_derived_lenses::arrow_size

§

impl Lens for vizia::prelude::popup_derived_lenses::placement

§

impl Lens for vizia::prelude::popup_derived_lenses::root

§

impl Lens for vizia::prelude::popup_derived_lenses::should_reposition

§

impl Lens for vizia::prelude::popup_derived_lenses::show_arrow

§

impl Lens for max_rating

§

impl Lens for vizia::prelude::rating_derived_lenses::on_change

§

type Source = Rating

§

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

§

impl Lens for rating

§

impl Lens for vizia::prelude::rating_derived_lenses::root

§

impl Lens for direction

§

impl Lens for vizia::prelude::resizable_stack_derived_lenses::is_dragging

§

impl Lens for offset

§

impl Lens for on_drag

§

type Source = ResizableStack

§

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

§

impl Lens for on_reset

§

impl Lens for vizia::prelude::resizable_stack_derived_lenses::root

§

impl Lens for container_height

§

impl Lens for container_width

§

impl Lens for inner_height

§

impl Lens for inner_width

§

impl Lens for vizia::prelude::scroll_view_derived_lenses::root

§

impl Lens for vizia::prelude::scroll_view_derived_lenses::scroll_to_cursor

§

impl Lens for vizia::prelude::scroll_view_derived_lenses::scroll_x

§

impl Lens for vizia::prelude::scroll_view_derived_lenses::scroll_y

§

impl Lens for vizia::prelude::scroll_view_derived_lenses::show_horizontal_scrollbar

§

impl Lens for vizia::prelude::scroll_view_derived_lenses::show_vertical_scrollbar

§

impl Lens for icons

§

impl Lens for on_decrement

§

type Source = Spinbox

§

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

§

impl Lens for on_increment

§

type Source = Spinbox

§

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

§

impl Lens for vizia::prelude::spinbox_derived_lenses::orientation

§

impl Lens for vizia::prelude::spinbox_derived_lenses::root

§

impl Lens for vizia::prelude::submenu_derived_lenses::is_open

§

impl Lens for is_submenu

§

impl Lens for open_on_hover

§

impl Lens for vizia::prelude::submenu_derived_lenses::root

§

impl Lens for is_vertical

§

impl Lens for vizia::prelude::tab_view_derived_lenses::root

§

impl Lens for selected_index

§

impl Lens for vizia::prelude::tooltip_derived_lenses::arrow_size

§

impl Lens for vizia::prelude::tooltip_derived_lenses::placement

§

impl Lens for vizia::prelude::tooltip_derived_lenses::root

§

impl Lens for shift

§

impl Lens for vizia::prelude::tooltip_derived_lenses::show_arrow

§

impl Lens for vizia::prelude::virtual_list_derived_lenses::focused

§

impl Lens for item_height

§

impl Lens for vizia::prelude::virtual_list_derived_lenses::num_items

§

impl Lens for on_scroll

§

type Source = VirtualList

§

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

§

impl Lens for vizia::prelude::virtual_list_derived_lenses::root

§

impl Lens for vizia::prelude::virtual_list_derived_lenses::scroll_to_cursor

§

impl Lens for vizia::prelude::virtual_list_derived_lenses::scroll_x

§

impl Lens for vizia::prelude::virtual_list_derived_lenses::scroll_y

§

impl Lens for vizia::prelude::virtual_list_derived_lenses::selectable

§

impl Lens for vizia::prelude::virtual_list_derived_lenses::selected

§

impl Lens for vizia::prelude::virtual_list_derived_lenses::selection_follows_focus

§

impl Lens for vizia::prelude::virtual_list_derived_lenses::show_horizontal_scrollbar

§

impl Lens for vizia::prelude::virtual_list_derived_lenses::show_vertical_scrollbar

§

impl Lens for visible_range

§

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

§

type Source = <A as Lens>::Source

§

type Target = <B as Lens>::Target

§

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

§

type Source = <L1 as Lens>::Source

§

type Target = bool

§

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

§

type Source = <L1 as Lens>::Source

§

type Target = bool

§

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>,

§

type Source = <L1 as Lens>::Source

§

type Target = f32

§

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,

§

type Source = ComboBox<L1, L2, T>

§

type Target = String

§

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

§

type Source = ComboBox<L1, L2, T>

§

type Target = bool

§

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,

§

type Source = ComboBox<L1, L2, T>

§

type Target = L1

§

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

§

type Source = ComboBox<L1, L2, T>

§

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

§

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

§

type Source = ComboBox<L1, L2, T>

§

type Target = PhantomData<T>

§

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

§

type Source = ComboBox<L1, L2, T>

§

type Target = String

§

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

§

type Source = ComboBox<L1, L2, T>

§

type Target = ComboBox<L1, L2, T>

§

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

§

type Source = ComboBox<L1, L2, T>

§

type Target = L2

§

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

§

impl<L> Lens for vizia::prelude::slider_derived_lenses::is_dragging<L>
where L: Lens,

§

type Source = Slider<L>

§

type Target = bool

§

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

§

type Source = Slider<L>

§

type Target = L

§

impl<L> Lens for vizia::prelude::slider_derived_lenses::on_change<L>
where L: Lens,

§

type Source = Slider<L>

§

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

§

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

§

type Source = Slider<L>

§

type Target = Slider<L>

§

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

§

type Source = <L as Lens>::Source

§

type Target = <L as Lens>::Target

§

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

§

type Source = Textbox<L>

§

type Target = Timer

§

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

§

type Source = Textbox<L>

§

type Target = bool

§

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

§

type Source = Textbox<L>

§

type Target = L

§

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

§

type Source = Textbox<L>

§

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

§

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

§

type Source = Textbox<L>

§

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

§

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

§

type Source = Textbox<L>

§

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

§

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

§

type Source = Textbox<L>

§

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

§

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

§

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

§

type Source = Textbox<L>

§

type Target = Option<PreeditBackup>

§

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

§

type Source = Textbox<L>

§

type Target = Textbox<L>

§

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

§

type Source = Textbox<L>

§

type Target = Selection

§

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

§

type Source = Textbox<L>

§

type Target = bool

§

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

§

type Source = Textbox<L>

§

type Target = bool

§

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

§

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

§

type Source = Textbox<L>

§

type Target = Rc<RefCell<(f32, f32)>>

§

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

§

type Source = Textbox<L>

§

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

§

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

§

type Source = <L as Lens>::Source

§

type Target = O

§

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

§

type Source = <L as Lens>::Source

§

type Target = O

§

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

§

type Source = <L as Lens>::Source

§

type Target = T

§

impl<T> Lens for StaticLens<T>

§

type Source = ()

§

type Target = T

§

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

§

type Source = Option<T>

§

type Target = T

§

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

§

type Source = T

§

type Target = U