Skip to content

doc(std): clarify NonZero<T> usage limitation in doc comment #143130

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion library/core/src/num/nonzero.rs
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,12 @@ impl_zeroable_primitive!(
/// ```
///
/// [null pointer optimization]: crate::option#representation
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

shouldn't this be below any textual comments?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I seem to remember this as long as it's below the text being rendered.

///
/// **Note:** `NonZero<T>` can only be used with standard library primitive integer
/// types (such as u8, i32, etc.). The type parameter T must implement the internal
/// trait `ZeroablePrimitive`, which is currently permanently unstable and cannot be
/// implemented by users. Therefore, you cannot use `NonZero<T>` with your own types,
/// nor can you implement traits for all `NonZero<T>`, only for concrete types.
#[stable(feature = "generic_nonzero", since = "1.79.0")]
#[repr(transparent)]
#[rustc_nonnull_optimization_guaranteed]
Expand Down Expand Up @@ -1472,7 +1478,7 @@ macro_rules! nonzero_integer_signedness_dependent_methods {

/// Returns the smallest power of two greater than or equal to `self`.
/// Checks for overflow and returns [`None`]
/// if the next power of two is greater than the types maximum value.
/// if the next power of two is greater than the type's maximum value.
/// As a consequence, the result cannot wrap to zero.
///
/// # Examples
Expand Down
Loading