Skip to content

Fix potential issue discovered by new lint suspicious_to_owned#49

Closed
pawelchcki wants to merge 4 commits into
mainfrom
pawel/fix_to_owned
Closed

Fix potential issue discovered by new lint suspicious_to_owned#49
pawelchcki wants to merge 4 commits into
mainfrom
pawel/fix_to_owned

Conversation

@pawelchcki

Copy link
Copy Markdown
Contributor

@pawelchcki pawelchcki requested a review from a team as a code owner September 5, 2022 15:28
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());

Copy link
Copy Markdown
Contributor Author

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

Copy link
Copy Markdown
Contributor

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.

Copy link
Copy Markdown
Contributor

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?

Copy link
Copy Markdown
Contributor

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?

@r1viollet r1viollet left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@morrisonlevi

Copy link
Copy Markdown
Contributor

Thanks, Pawel. I forgot this was already open when I opened #52, which superseded this one.

@bantonsson bantonsson deleted the pawel/fix_to_owned branch March 7, 2024 07:15
ivoanjo added a commit that referenced this pull request Jun 18, 2025
Co-authored-by: Ivo Anjo <ivo.anjo@datadoghq.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants