diff --git a/library/core/src/ffi/c_str.rs b/library/core/src/ffi/c_str.rs
index 8923f548adf..15dd9ea7e80 100644
--- a/library/core/src/ffi/c_str.rs
+++ b/library/core/src/ffi/c_str.rs
@@ -13,9 +13,9 @@
/// array of bytes. It can be constructed safely from a &[[u8]]
/// slice, or unsafely from a raw `*const c_char`. It can then be
/// converted to a Rust &[str]
by performing UTF-8 validation, or
-/// into an owned `CString`.
+/// into an owned [`CString`].
///
-/// `&CStr` is to `CString` as &[str]
is to `String`: the former
+/// `&CStr` is to [`CString`] as &[str]
is to [`String`]: the former
/// in each pair are borrowed references; the latter are owned
/// strings.
///
@@ -24,6 +24,9 @@
/// functions may leverage the unsafe [`CStr::from_ptr`] constructor to provide
/// a safe interface to other consumers.
///
+/// [`CString`]: ../../std/ffi/struct.CString.html
+/// [`String`]: ../../std/string/struct.String.html
+///
/// # Examples
///
/// Inspecting a foreign C string: