I believe it should be possible to emit a warning, using proc_macro::Diagnostic. With that in mind, I believe it'd be preferable to have the default behavior be to warn, and then opt in to it being an error.
This also helps with #1, because when a dependency emits a warning Cargo silently ignores it.