-
Notifications
You must be signed in to change notification settings - Fork 12
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
Fix potential issue discovered by new lint suspicious_to_owned #49
Conversation
b71aeda
to
a865499
Compare
@@ -123,7 +123,7 @@ pub extern "C" fn profile_exporter_new( | |||
match || -> anyhow::Result<ProfileExporter> { | |||
let family = unsafe { family.to_utf8_lossy() }.into_owned(); | |||
let converted_endpoint = unsafe { try_to_endpoint(endpoint)? }; | |||
let tags = tags.map(|tags| tags.iter().map(|tag| tag.clone().into_owned()).collect()); |
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.
As it stands right now into_owned()
was a noop, so I think we can remove it completely
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'm not sure why we were doing clone + to_owned. I might be missing something.
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's important that we get a Cow::Owned
version because the tag can come from FFI and we don't know its real lifetime. I don't think clone
will actually work for what we want:
https://doc.rust-lang.org/src/alloc/borrow.rs.html#194-203
That does say it just borrows if it's borrowed, right?
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.
The version before didn't do that though.
the Tag::into_owned
was calling to Cow::to_owned
which comes from the blanket implementation https://doc.rust-lang.org/std/borrow/enum.Cow.html#impl-ToOwned that just calls clone
. So borrowed tags stayed borrowed before.
But I'm not sure why this is an issue, since tag have to be dropped using drop_tag which understands wether the cow is owned or borrowed?
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.
LGTM
Thanks, Pawel. I forgot this was already open when I opened #52, which superseded this one. |
see:
rust-lang/rust-clippy#8984