Convert struct FromBytesWithNulError into enum - #134143
Conversation
commented
Dec 25, 2024
|
@tgross35 I thought this proposal has already passed - see rust-lang/libs-team#493 |
commented
Dec 26, 2024
|
The meeting was a preliminary thumbs up, but the actual FCP process still needs to happen for anything that changes stable API. |
commented
Dec 26, 2024
|
@tgross35 thx, any links on anything I need to do? Or is this rust-team internal? |
commented
Dec 26, 2024
|
Nothing internal and nothing for you to do, a lot of rust-lang just slows down around this time of year. Somebody from the libs-api team will need to propose FCP, Amanieu can do that and is already assigned. |
commented
Dec 26, 2024
|
This is insta-stable since this is turned into a @rfcbot merge |
|
Team member @Amanieu has proposed to merge this. The next step is review by the rest of the tagged team members: No concerns currently listed. Once a majority of reviewers approve (and at most 2 approvals are outstanding), this will enter its final comment period. If you spot a major issue that hasn't been raised at any point in this process, please speak up! See this document for info about what commands tagged team members can give me. |
This comment has been minimized.
This comment has been minimized.
commented
Jan 5, 2025
|
🔔 This is now entering its final comment period, as per the review above. 🔔 |
commented
Jan 5, 2025
|
I believe that this can potentially break existing code, so this needs at the very least a crater run. See rust-lang/rfcs#3753 |
commented
Jan 5, 2025
|
@bors try |
commented
Jan 5, 2025
commented
Jan 5, 2025
|
☀️ Try build successful - checks-actions |
commented
Jan 5, 2025
|
I was about to start a crater run but checked for use in the wild first, from a quick search I don't see any cases of the potentially breaking pattern mentioned in the ACP https://github.com/search?q=lang%3Arust+%2FFromBytesWithNulError+%3F%5C%7B+%3F%5C.%5C.%2F&type=code. So the beta crater runs are probably sufficient to cover anything here, unless there are other patterns that also break. |
commented
Jan 15, 2025
|
@bors r+ |
commented
Jan 15, 2025
commented
Jan 15, 2025
|
@rustbot label: +relnotes |
This PR renames the former
kindenum fromFromBytesWithNulErrorKindtoFromBytesWithNulError, and removes the original struct.See rust-lang/libs-team#493
Possible Changes - TBD
enum FromBytesWithNulErrorderiveCopy?Problem
One of
CStrconstructors,CStr::from_bytes_with_nul(bytes: &[u8])handles 3 cases:byteshas one NULL as the last value - creates CStrbyteshas no NULL - errorbyteshas a NULL in some other position - errorThe 3rd case is error that may require lossy conversion, but the 2nd case can easily be handled by the user code. Unfortunately, this function returns an opaque
FromBytesWithNulErrorerror in both 2nd and 3rd case, so the user cannot detect just the 2nd case - having to re-implement the entire function and bring in thememchrdependency.Motivating examples or use cases
In this code, my FFI code needs to copy user's
&[u8]into a C-allocated memory blob in a NUL-terminatedCStrformat. My code must first validate if&[u8]has a trailing NUL (case 1), no NUL (adds one on the fly - case 2), or NUL in the middle (3rd case - error). I had to re-implementfrom_bytes_with_nuland addmemchrdependency just to handle the 2nd case.r? @Amanieu