error[E0605]: non-primitive cast: `Foo` as `isize` --> $DIR/nonscalar-cast.rs:15:20 | LL | println!("{}", Foo { x: 1 } as isize); | ^^^^^^^^^^^^^^^^^^^^^ an `as` expression can only be used to convert between primitive types or to coerce to a specific trait object | help: consider using the `From` trait instead | LL - println!("{}", Foo { x: 1 } as isize); LL + println!("{}", isize::from(Foo { x: 1 })); | error: aborting due to 1 previous error For more information about this error, try `rustc --explain E0605`.