linkerd2-proxy/lib/stack
Oliver Gould 4e0a1f0100
refactor: Build stacks from bottom-to-top (#111)
Previously, stacks were built with `Layer::and_then`. This pattern
severely impacts compile-times as stack complexity grows.

In order to ameliorate this, `app::main` has been changed to build
stacks from the "bottom" (endpoint client) to "top" (serverside
connection) by _push_-ing Layers onto a concrete stack, i.e. and not
composing layers for an abstract stack.

While doing this, we take the oppportunity to remove a ton of
now-unnecessary `PhantomData`. A new, dedicated `phantom_data` stack
module can be used to aid type inference as needed.

Other stack utilities like `map_target` and `map_err` have been
introduced to assist this transition.

Furthermore, all instances of `Layer::new` have been changed to a free
`fn layer` to improve readability.

This change sets up two upcoming changes: a stack-oriented `controller`
client and, subsequently, service-profile-based routing.
2018-10-29 14:02:42 -07:00
..
src refactor: Build stacks from bottom-to-top (#111) 2018-10-29 14:02:42 -07:00
Cargo.toml refactor: Structure the proxy in terms of `Stack` (#100) 2018-10-11 11:25:03 -07:00