Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
guinea on iced: Elm inside a node, actors between nodes.
The other four backends are told what to draw and have no opinion about
where a click goes. iced does: it is Elm, so every interaction is a value
of one Message type that comes back to one update. That is the whole
reason this adapter exists - it is the one that has to say what happens
when a route tree of independent nodes meets a toolkit that wants a single
message type at the top.
The answer is that a node keeps its own State, its own Message and its
own update, all on the one trait that puts it in the route tree, and
nothing above it ever names any of them. A parent does not wrap a child's
messages, so adding a page costs no edit anywhere else - the composition
tax Elm normally charges (a variant, a match arm, a map, per child, per
level) is not paid at all. What the toolkit sees is [Envelope]: an opaque
carrier holding the message, the node's own delivery function, and where in
the chain that node sits.
What is left over is the part Elm has no answer for: two pieces of state
that reference each other rather than nest - a selected row and a list an
actor replaces. That is cx.on, and it is a translation, not a mutation:
it turns what happened elsewhere into this node's own message, so there is
still exactly one place the node's state changes.
#[page]
impl Page for Processes {
type Params = ProcessesParams;
type Message = Msg;
fn observes(cx: &Observing<'_, Msg>) { cx.on::<ProcessesReducer>(list_replaced); }
fn update(&mut self, message: Msg, cx: &mut UpdateCx<'_, Self>) { .. }
fn view(&self, cx: &PageCx<'_, Self>) -> Element<'_, Msg> { .. }
}