Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- trait Blanket {
- fn blanket(&self) -> &'static str;
- }
- struct StringBlanket<'a>(&'a String);
- impl<'a> Blanket for StringBlanket<'a> {
- fn blanket(&self) -> &'static str {
- "string"
- }
- }
- struct CloneBlanket<T: Clone>(T);
- impl<T: Clone> Blanket for CloneBlanket<T> {
- fn blanket(&self) -> &'static str {
- "clone"
- }
- }
- impl<'a> Into<StringBlanket<'a>> for &'a String {
- fn into(self) -> StringBlanket<'a> {
- StringBlanket(self)
- }
- }
- fn blanket<B: Blanket, T: Into<B>>(b: T) {
- let b = b.into();
- println!("{}", b.blanket());
- }
- fn main() {
- blanket::<StringBlanket<'_>, _>(&"123".to_string());
- blanket(123);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement