Improve wording of the `drop_bounds` lint by FabianWolff · Pull Request #86747 ·...
source link: https://github.com/rust-lang/rust/pull/86747
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
This PR addresses #86653. The issue is sort of a false positive of the drop_bounds
lint, but I would argue that the best solution for #86653 is simply a rewording of the warning message and lint description, because even if the lint is technically wrong, it still forces the programmer to think about what they are doing, and they can always use #[allow(drop_bounds)]
if they think that they really need the Drop
bound.
There are two issues with the current warning message and lint description:
- First, it says that
Drop
bounds are "useless", which is technically incorrect because they actually do have the effect of allowing you e.g. to call methods that also have aDrop
bound on their generic arguments for some reason. I have changed the wording to emphasize not that the bound is "useless", but that it is most likely not what was intended. - Second, it claims that
std::mem::needs_drop
detects whether a type has a destructor. But I think this is also technically wrong: TheDrop
bound says whether the type has a destructor or not, whereasstd::mem::needs_drop
also takes nested types with destructors into account, even if the top-level type does not itself have one (although I'm not 100% sure about the exact terminology here, i.e. whether the "drop glue" of the top-level type counts as a destructor or not).
cc @jonhoo, does this solve the issue for you?
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK