You can add peek steps in pipelines and inspect the in between results. Not really any different from normal function call debugging imo.
It's not like you lose that much readability from
foo(bar(baz(c)))
c |> baz |> bar |> foo
c.baz().bar().foo()
t = c.baz()
t = t.bar()
t = t.foo() fn get_ids(data: Vec<Widget>) -> Vec<Id> {
data.iter()
.filter(|w| w.alive)
.map(|w| w.id)
.collect()
}
It sounds to me like you're asking for linebreaks. Chaining doesn't seem to be the issue here.But you could in many cases easily infer from the execution plan what a query would look like and fetch an intermediate set separately.
(-> c baz bar foo)
But people usually put it on separate lines: (-> c
baz
bar
foo)