dope_runtime/topology/lending/root.rs
1use std::pin;
2
3use crate::client;
4
5/// Projects the unique client provider embedded in a pinned owner.
6pub trait Root<'d> {
7 type Provider: client::Provider<'d> + ?Sized;
8
9 fn provider(self: pin::Pin<&Self>) -> pin::Pin<&Self::Provider>;
10}
11
12impl<'d, P> Root<'d> for P
13where
14 P: client::Provider<'d>,
15{
16 type Provider = P;
17
18 fn provider(self: pin::Pin<&Self>) -> pin::Pin<&Self::Provider> {
19 self
20 }
21}