The error message for a trait with an unused parameter recommends the use of PhantomFn even though it's deprecated. It should presumably recommend PhantomData instead, and the documentation on PhantomData should be updated to include an example of how to use it with a trait.
Example (play):
trait Foo<T> {
fn foo(&self);
}
yields
<anon>:1:11: 1:12 error: parameter `T` is never used
<anon>:1 trait Foo<T> {
^
<anon>:1:12: 1:12 help: consider removing `T` or using a marker such as `core::marker::PhantomFn`
error: aborting due to previous error
You also get the same error today (suggesting PhantomFn) when using a "marker-like" trait with no functions, which is filed as #22598 (it needs a better error message).
The error message for a trait with an unused parameter recommends the use of
PhantomFneven though it's deprecated. It should presumably recommendPhantomDatainstead, and the documentation onPhantomDatashould be updated to include an example of how to use it with a trait.Example (play):
yields
You also get the same error today (suggesting
PhantomFn) when using a "marker-like" trait with no functions, which is filed as #22598 (it needs a better error message).