I recently found myself doing something like this to get method call syntax:
pub trait Test {
fn mk_pair(self) -> (Self, Self)
where
Self: Sized + Clone,
{
(self.clone(), self)
}
}
impl<T> Test for T {}
pub fn testy<T>(x: T) -> (T, T)
where
T: Clone,
{
x.mk_pair()
}
Silly example but as you can see I can now call x.mk_pair()
instead of mk_pair(x)
. Probably doesn't matter much in this case but some find method call syntax nice in some cases.
Question is, is this the minimum boilerplate required? The global impl seems a bit hacky. Is there a nicer way to give a function method call syntax without as much trait/impl tomfoolery?