mirror of
https://github.com/rust-lang/rust
synced 2024-09-05 16:57:03 +00:00
32 lines
606 B
Rust
32 lines
606 B
Rust
//@ run-pass
|
|
#![allow(dead_code)]
|
|
#![allow(unused_variables)]
|
|
// Testing creating two vtables with the same self type, but different
|
|
// traits.
|
|
|
|
use std::any::Any;
|
|
|
|
trait Wrap {
|
|
fn get(&self) -> isize;
|
|
fn wrap(self: Box<Self>) -> Box<dyn Any+'static>;
|
|
}
|
|
|
|
impl Wrap for isize {
|
|
fn get(&self) -> isize {
|
|
*self
|
|
}
|
|
fn wrap(self: Box<isize>) -> Box<dyn Any+'static> {
|
|
self as Box<dyn Any+'static>
|
|
}
|
|
}
|
|
|
|
fn is<T:Any>(x: &dyn Any) -> bool {
|
|
x.is::<T>()
|
|
}
|
|
|
|
fn main() {
|
|
let x = Box::new(22isize) as Box<dyn Wrap>;
|
|
println!("x={}", x.get());
|
|
let y = x.wrap();
|
|
}
|