Add Path::with_replaced_extension
as a alias of Path::with_extension
and deprecate Path::with_extension
for cleaner function name
#515
Labels
Proposal
Problem statement
The
Path::with_extension
has unclear name if the function will replace the extension of the path or add the extension to the path.This is because both adding and replacing the extension is likely, and "with" preposition can be used to express replace / substitute and addition.
Motivating examples or use cases
In real world, there are some bug cases that used
with_extension
to add an extension to the path by mistake.Solution sketch
Add
Path::with_replaced_extension
as a alias ofPath::with_extension
and deprecatePath::with_extension
in the later version.Alternatives
Keep
Path::with_extension
as is.With
Path::with_added_extension
added (tracked in rust-lang/rust#127292), IDE will suggest bothPath::with_extension
andPath::with_added_extension
when user typesPath::with_ext
so it will be easier to choose the right function, but this doesn't solve the problem on reading the source code.Just add
Path::with_replaced_extension
without deprecatingPath::with_extension
, but this may confuse the user on which function to use.Links and related work
Path::with_added_extension
Tracking Issue for PathBuf::add_extension and Path::with_added_extension rust#127292Path::with_added_extension
Tracking Issue for PathBuf::add_extension and Path::with_added_extension rust#127292 (comment)Path::with_replaced_extension
feat: add with_replaced_extension as a alias of with_extension rust#134676Possible Drawbacks
With the deprecation of
Path::with_extension
, tons of existing code will face the deprecation warning and needs to be replaced withPath::with_replaced_extension
.However, with the deprecation people may found some other places should use
Path::with_added_extension
instead ofPath::with_extension
so it may be a good opportunity to fix the issue.What happens now?
This issue contains an API change proposal (or ACP) and is part of the libs-api team feature lifecycle. Once this issue is filed, the libs-api team will review open proposals as capability becomes available. Current response times do not have a clear estimate, but may be up to several months.
Possible responses
The libs team may respond in various different ways. First, the team will consider the problem (this doesn't require any concrete solution or alternatives to have been proposed):
Second, if there's a concrete solution:
The text was updated successfully, but these errors were encountered: