Skip to content

CStr should have a function like from_bytes_with_nul() that reads until the first '\0' #49107

Closed
@Boscop

Description

@Boscop

When dealing with FFI (fixed char buffers in file formats that represent strings and passing fixed char buffers to C code to write chars to them up to a given max len) I often find myself doing this:

let end = s.iter().position(|&b| b == 0).map_or(0, |i| i + 1);
CStr::from_bytes_with_nul(&s[..end])

Because if I pass the whole slice to it, it returns a FromBytesWithNulError.
There should be a function that combines both lines and read until the first '\0' byte in the slice.

Something like:

CStr::from_bytes_until_nul(slice)

And yes, I did write my own function for my use case but I find myself copying these two lines around into different projects dealing with FFI and I think it would make sense to have this (arguably) "basic functionality" in std's CStr :)

Metadata

Metadata

Assignees

No one assigned

    Labels

    C-feature-requestCategory: A feature request, i.e: not implemented / a PR.T-libs-apiRelevant to the library API team, which will review and decide on the PR/issue.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions