CStr docs: Fix CStr vs &CStr confusion#148826
Merged
bors merged 2 commits intorust-lang:mainfrom Nov 14, 2025
Merged
Conversation
The CStr docs used to say things about CStr that are only true for &CStr. Also, it's the bytes that are being borrowed, not the reference. One could say that it's the reference that is doing the borrowing, rather than being borrowed.
Collaborator
joboet
requested changes
Nov 11, 2025
Member
There was a problem hiding this comment.
I agree with the motivation, but I'm not convinced that it's a good idea to talk about &CStr only. While currently a &mut CStr isn't particularly useful, we might want to add methods for e.g. ASCII case conversion in the long term. Perhaps the documentation could be rephrased to refer to the actual dynamically-sized CStr type, much like the documentation for slices does?
library/core/src/ffi/c_str.rs
Outdated
| /// The `&CStr` type represents a borrowed C string. | ||
| /// | ||
| /// This type represents a borrowed reference to a nul-terminated | ||
| /// Type `&CStr` represents a reference to a borrowed nul-terminated |
Member
There was a problem hiding this comment.
Suggested change
| /// Type `&CStr` represents a reference to a borrowed nul-terminated | |
| /// The type `&CStr` represents a reference to a borrowed nul-terminated |
Member
|
Great, that reads well, thank you. |
Collaborator
Zalathar
added a commit
to Zalathar/rust
that referenced
this pull request
Nov 13, 2025
CStr docs: Fix CStr vs &CStr confusion The CStr documentation used to say things about CStr that are only true for &CStr. Also, it's the bytes that are being borrowed, not the reference. One could say that it's the reference that is doing the borrowing, rather than being borrowed.
Zalathar
added a commit
to Zalathar/rust
that referenced
this pull request
Nov 13, 2025
CStr docs: Fix CStr vs &CStr confusion The CStr documentation used to say things about CStr that are only true for &CStr. Also, it's the bytes that are being borrowed, not the reference. One could say that it's the reference that is doing the borrowing, rather than being borrowed.
Zalathar
added a commit
to Zalathar/rust
that referenced
this pull request
Nov 13, 2025
CStr docs: Fix CStr vs &CStr confusion The CStr documentation used to say things about CStr that are only true for &CStr. Also, it's the bytes that are being borrowed, not the reference. One could say that it's the reference that is doing the borrowing, rather than being borrowed.
bors
added a commit
that referenced
this pull request
Nov 14, 2025
Rollup of 14 pull requests Successful merges: - #146978 (Emit error when using path-segment keyword as cfg pred) - #148543 (Correctly link to associated trait items in reexports) - #148808 (Some resolve cleanups) - #148812 (coverage: Associate hole spans with expansion tree nodes ) - #148826 (CStr docs: Fix CStr vs &CStr confusion) - #148850 (Implement `Read::read_array`) - #148867 (Refactor `Box::take`) - #148870 (Remove unused LLVMModuleRef argument) - #148878 (error when ABI does not support guaranteed tail calls) - #148901 (Disable rustdoc-test-builder test partially for SGX target.) - #148902 (add missing s390x target feature to std detect test) - #148904 (waffle: stop watching codegen ssa) - #148906 (Expose fmt::Arguments::from_str as unstable.) - #148907 (add assembly test for infinite recursion with `become`) r? `@ghost` `@rustbot` modify labels: rollup
Zalathar
added a commit
to Zalathar/rust
that referenced
this pull request
Nov 14, 2025
CStr docs: Fix CStr vs &CStr confusion The CStr documentation used to say things about CStr that are only true for &CStr. Also, it's the bytes that are being borrowed, not the reference. One could say that it's the reference that is doing the borrowing, rather than being borrowed.
Zalathar
added a commit
to Zalathar/rust
that referenced
this pull request
Nov 14, 2025
CStr docs: Fix CStr vs &CStr confusion The CStr documentation used to say things about CStr that are only true for &CStr. Also, it's the bytes that are being borrowed, not the reference. One could say that it's the reference that is doing the borrowing, rather than being borrowed.
bors
added a commit
that referenced
this pull request
Nov 14, 2025
Rollup of 15 pull requests Successful merges: - #148543 (Correctly link to associated trait items in reexports) - #148808 (Some resolve cleanups) - #148812 (coverage: Associate hole spans with expansion tree nodes ) - #148826 (CStr docs: Fix CStr vs &CStr confusion) - #148850 (Implement `Read::read_array`) - #148867 (Refactor `Box::take`) - #148870 (Remove unused LLVMModuleRef argument) - #148878 (error when ABI does not support guaranteed tail calls) - #148901 (Disable rustdoc-test-builder test partially for SGX target.) - #148902 (add missing s390x target feature to std detect test) - #148904 (waffle: stop watching codegen ssa) - #148906 (Expose fmt::Arguments::from_str as unstable.) - #148907 (add assembly test for infinite recursion with `become`) - #148928 (Move & adjust some `!`-adjacent tests) - #148929 (ignore `build-rust-analyzer` even if it's a symlink) r? `@ghost` `@rustbot` modify labels: rollup
rust-timer
added a commit
that referenced
this pull request
Nov 14, 2025
Rollup merge of #148826 - btj:cstr-docs, r=joboet CStr docs: Fix CStr vs &CStr confusion The CStr documentation used to say things about CStr that are only true for &CStr. Also, it's the bytes that are being borrowed, not the reference. One could say that it's the reference that is doing the borrowing, rather than being borrowed.
github-actions bot
pushed a commit
to model-checking/verify-rust-std
that referenced
this pull request
Nov 30, 2025
CStr docs: Fix CStr vs &CStr confusion The CStr documentation used to say things about CStr that are only true for &CStr. Also, it's the bytes that are being borrowed, not the reference. One could say that it's the reference that is doing the borrowing, rather than being borrowed.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The CStr documentation used to say things about CStr that are only true for &CStr.
Also, it's the bytes that are being borrowed, not the reference. One could say that it's the reference that is doing the borrowing, rather than being borrowed.