Open
Description
Feature gate: #![feature(location_file_nul)]
This is a tracking issue for Location::file_with_nul
.
This feature allows you to obtain NUL-terminated file names from core::panic::Location
when using #[track_caller]
. This allows for better error messages in projects performing interop with C/C++.
Public API
// core::panic
pub struct Location;
impl Location {
pub const fn file_with_nul(&self) -> &CStr;
}
Steps / History
(Remember to update the S-tracking-*
label when checking boxes.)
- Accept ACP: ACP: Add nul-terminated version of
core::panic::Location::file
libs-team#466 - Implementation:
- Final comment period (FCP)1
- Stabilization PR
Related PRs:
- Add nul-terminated filename for #[track_caller] #131828
- Add unstable option to nul-terminate location strings #135240
- Null terminate
core::panic::Location
file strings #117431
Unresolved Questions
It's still unresolved whether the above API is preferred over returning a raw pointer:
// core::panic
pub struct Location;
impl Location {
pub const fn file_ptr(&self) -> *const c_char;
}
Although this solution is less safe to use, it has the advantage that if we change Location
to not store the length, then you can call Location::file_ptr
without having to invoke strlen
to construct a &CStr
.
Footnotes
Metadata
Metadata
Assignees
Labels
Area: Panicking machineryRelevant for the Rust-for-Linux projectCategory: An issue tracking the progress of sth. like the implementation of an RFCStatus: The implementation is incomplete.Relevant to the compiler team, which will review and decide on the PR/issue.Relevant to the library team, which will review and decide on the PR/issue.Relevant to the library API team, which will review and decide on the PR/issue.