extern crate bar;
use std::convert::From;
use bar::MyFrom2;
struct MyVec(Vec<u8>);
impl<'a> From<&'a [u8]> for MyVec {
fn from(s: &[u8]) -> MyVec {
MyVec(s.to_owned())
}
}
trait MyFrom<T> {
fn my_from(T) -> Self;
}
impl<'a> MyFrom<&'a [u8]> for MyVec {
fn my_from(s: &[u8]) -> MyVec {
MyVec(s.to_owned())
}
}
impl<'a> MyFrom2<&'a [u8]> for MyVec {
fn my_from2(s: &[u8]) -> MyVec {
MyVec(s.to_owned())
}
}
impl<'a> MyFrom2<&'a [u8; 3]> for MyVec {
fn my_from2(s: &[u8; 3]) -> MyVec {
MyVec(s[..].to_owned())
}
}
fn make(s: &[u8]) -> MyVec {
MyVec(s.to_owned())
}
fn main() {
let _v = MyVec::from(&b"123"[..]);
let _v = MyVec::my_from(&b"123"[..]);
let _v = MyVec::my_from(b"123");
let _v = MyVec::my_from2(&b"123"[..]);
let _v = MyVec::my_from2(b"123");
let _v = make(b"123");
}