rust-lang / rust-lang/libs-team
std::slice::from_raw_parts alternative that would accept a null pointer if len == 0 by returning an empty slice
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 178
- Forks
- 28
- Avg merge
- 15m
- Merged PRs (30d)
- 1
Description
Proposal
Problem statement
Currently, it's not allowed to pass a NULL pointer to std::slice::from_raw_parts, but
I have a pointer that comes from a C function that can be either:
A) A non-NULL with a len > 0
B) A NULL with a len == 0
Solution sketch
It would be neat if it was possible to just write something like:
let values = unsafe { std::slice::from_raw_parts_or_empty(c_ptr_to_values, len) }; // Still panic if c_ptr_to_values == NULL and len > 0.
for value in values {
// This can be skipped if values is an empty slice when c_ptr_to_values == NULL and len == 0.
// Or values can be iterated when c_ptr_to_values != NULL and len > 0.
}
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reading the documented behavior of std::slice::from_raw_parts and the proposal's two C-pointer cases. The issue names no files or tests; done would require a settled library API design for producing an empty slice when the pointer is null and len is zero while rejecting the other null-pointer case.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- backend-api-design
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Clearly specified
- Newbie friendliness
- 30/100