diff --git a/library/core/src/ffi/c_str.rs b/library/core/src/ffi/c_str.rs
index 09d9b160700ca..9a35ed07b89ac 100644
--- a/library/core/src/ffi/c_str.rs
+++ b/library/core/src/ffi/c_str.rs
@@ -15,18 +15,18 @@ use crate::{fmt, ops, slice, str};
// actually reference libstd or liballoc in intra-doc links. so, the best we can do is remove the
// links to `CString` and `String` for now until a solution is developed
-/// Representation of a borrowed C string.
+/// A dynamically-sized view of a C string.
///
-/// This type represents a borrowed reference to a nul-terminated
+/// The type `&CStr` represents a reference to a borrowed nul-terminated
/// array of bytes. It can be constructed safely from a &[[u8]]
/// slice, or unsafely from a raw `*const c_char`. It can be expressed as a
/// literal in the form `c"Hello world"`.
///
-/// The `CStr` can then be converted to a Rust &[str] by performing
+/// The `&CStr` can then be converted to a Rust &[str] by performing
/// UTF-8 validation, or into an owned `CString`.
///
/// `&CStr` is to `CString` as &[str] is to `String`: the former
-/// in each pair are borrowed references; the latter are owned
+/// in each pair are borrowing references; the latter are owned
/// strings.
///
/// Note that this structure does **not** have a guaranteed layout (the `repr(transparent)`