Expand description
Implementations of Lens, 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)
}Most of the time, if you want to create your own lenses, you need to use
#[derive(Lens)].
Structs
- A lens that always gives the same value and discards changes.
Lensfor invokingDerefandDerefMuton a type.- Lens accessing a member of some type using accessor functions
- The identity lens: the lens which does nothing, i.e. exposes exactly the original value.
- A
Lensthat exposes data within anArcwith copy-on-write semantics Lensfor indexing containersLensbuilt from a getter and a setterLenscomposed of two lenses joined together- A
Lensthat always yields ().
Traits
- A lens is a datatype that gives access to a part of a larger data structure.
- Helpers for manipulating
Lenses