Why this code call T1 method

⚓ Rust    📅 2025-04-29    👤 surdeus    👁️ 5      

surdeus

Warning

This post was published 114 days ago. The information described in this article may have changed.
trait T1{
    fn say1(&self);
}
struct ATYPE;
impl T1 for ATYPE{
    fn say1(&self) {
        println!("T1 called");
    }
}
trait T2{
    fn say2(&self);
}
impl T2 for ATYPE{
    fn say2(&self) {
        println!("T2 called");
    }
}
fn main() {
    let a: Box<dyn T1> = Box::new(ATYPE);
    let b: Box<dyn T2> = unsafe{
        std::mem::transmute(a)
    };
    b.say2();
    
}
cargo r                         
   Compiling trait2trait v0.1.0 (/workspace/trait2trait)
warning: method `say1` is never used
  --> src/main.rs:34:8
   |
33 | trait T1{
   |       -- method in this trait
34 |     fn say1(&self);
   |        ^^^^
   |
   = note: `#[warn(dead_code)]` on by default

warning: `trait2trait` (bin "trait2trait") generated 1 warning
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.08s
     Running `target/debug/trait2trait`
T1 called

1 post - 1 participant

Read full topic

🏷️ rust_feed