-
-
Notifications
You must be signed in to change notification settings - Fork 411
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add a Source::with_path method to set the path on a Source #3941
Conversation
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #3941 +/- ##
==========================================
+ Coverage 47.24% 51.57% +4.32%
==========================================
Files 476 468 -8
Lines 46892 44963 -1929
==========================================
+ Hits 22154 23188 +1034
+ Misses 24738 21775 -2963 ☔ View full report in Codecov by Sentry. |
core/parser/src/source/mod.rs
Outdated
@@ -120,6 +120,14 @@ impl<'path, R: Read> Source<'path, UTF8Input<R>> { | |||
} | |||
|
|||
impl<'path, R> Source<'path, R> { | |||
/// Add a path to the current [`Source`] instance. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: doc might be a bit unclear wording wise. As it's not adding the path to the current Source
, but is creating a new Source
from the combination.
/// Add a path to the current [`Source`] instance. | |
/// Returns a new source from the current [`Source`] instance combined with the provided `Path`. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It takes ownership of the source, so it's used like any with_
method. I can use the same wording as JsError::with_message
; Sets the path of this Source
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ah, I've been dealing with different with_
methods recently with temporal 😆 I guess I'm a bit curious about taking self
vs. mut self
in this instance.
Basically, if I'm reading this correctly, this method could probably be:
// ... impl block
pub fn with_path(mut self, new_path: &'path Path) -> Self {
let _ = self.path.insert(new_path);
self
}
// cont ...
I think the above tends to be more in line with convention, and we also aren't potentially dropping the previous self
, granted maybe rustc optimizes that out and it doesn't matter that much.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@nekevss Uhh I think your method doesn't work in general because it doesn't change the lifetime of Source
to be the same as the lifetime of Path
. It would (probably) work with lifetimes that are sub-lifetimes of 'path
, but we don't want to add that arbitrary restriction.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
True. I think I'm getting caught up on a bit of a bikeshed around the name/behavior of this method.
😕 if we are destroying Source
anyways, then wouldn't it be a bit clearer convention wise for the method to be a to_
(something like to_source_with_path
)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think using with_*
methods that take self
is pretty common e.g. builder types. I don't see a problem with using the same convention for this.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good!
This should allow any path to be added to a Source, even when using
from_bytes
orfrom_reader
.