Well, normally you wouldn't put stuff that needs to be always included behind a feature gate.
I personally wouldn't be two concerned about users breaking your library with default-features = false though. That's something that can happen. In async-land you often have to enable either tokio or async-std features to change the runtime, one being enabled by default. If you disable the default features without adding a certain non-default feature (i.e. async-std if the hypothetical crate enables the tokio feature per default), building that library would fail. Happened to me before.
I get this error:
error: failed to parse manifest at C:\Users\ano31\Rust\RustWeb2\Cargo.toml
feature mt-tokio includes tokio?/rt-multi-thread with a ?, but tokio is not an optional dependency
A non-optional dependency of the same name is defined; consider removing the ? or changing the dependency to be optional