[−][src]Module druid::lens
Support for lenses, a way of focusing on subfields of data.
Lenses are useful whenever a widget only needs access to a subfield of a larger struct or generally access to part of a larger value.
For example: If one wants to embed a TextBox
in a widget with a Data
type
that is not String
, they need to specify how to access a String
from within the Data
.
use druid::{Data, Lens, Widget, WidgetExt, widget::{TextBox, Flex}}; #[derive(Clone, Debug, Data, Lens)] struct MyState { search_term: String, scale: f64, // ... } fn my_sidebar() -> impl Widget<MyState> { // `TextBox` is of type `Widget<String>` // via `.lens` we get it to be of type `Widget<MyState>`. // `MyState::search_term` is a lens generated by the `derive(Lens)` macro, // that provides access to the search_term field. let searchbar = TextBox::new().lens(MyState::search_term); // ... // We can now use `searchbar` just like any other `Widget<MyState>` Flex::column().with_child(searchbar) }
Structs
Constant | A lens that always gives the same value and discards changes. |
Deref |
|
Field | Lens accessing a member of some type using accessor functions |
Identity | The identity lens: the lens which does nothing, i.e. exposes exactly the original value. |
InArc | A |
Index |
|
Map |
|
Ref |
|
Then |
|
Unit | A |