87 } |
87 } |
88 |
88 |
89 /// Helper trait for functions to work with either owned values or references to either the |
89 /// Helper trait for functions to work with either owned values or references to either the |
90 /// “principal type” `X` or types some present a subset of `X`. In the latter sense, this |
90 /// “principal type” `X` or types some present a subset of `X`. In the latter sense, this |
91 /// generalises [`std::borrow::ToOwned`], [`std::borrow::Borrow`], and [`std::borrow::Cow`]. |
91 /// generalises [`std::borrow::ToOwned`], [`std::borrow::Borrow`], and [`std::borrow::Cow`]. |
|
92 /// |
|
93 /// This is used, for example, by [`crate::mapping::Mapping::apply`]. |
92 pub trait Instance<X : Space, D = <X as Space>::Decomp> : Sized where D : Decomposition<X> { |
94 pub trait Instance<X : Space, D = <X as Space>::Decomp> : Sized where D : Decomposition<X> { |
93 /// Decomposes self according to `decomposer`. |
95 /// Decomposes self according to `decomposer`. |
94 fn decompose<'b>(self) -> D::Decomposition<'b> |
96 fn decompose<'b>(self) -> D::Decomposition<'b> |
95 where Self : 'b, X : 'b; |
97 where Self : 'b, X : 'b; |
96 |
98 |