[Playground Example](https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=8e009e18864839ea976c5d15543eb462) ```rust use std::borrow::ToOwned; #[derive(Copy, Clone)] struct S1; #[derive(Copy, Clone)] struct S2; trait T {} impl<R> T for R where R: ToOwned<Owned = S1> {} impl<R> T for R where R: ToOwned<Owned = S2> {} ```