about summary refs log tree commit diff
diff options
context:
space:
mode:
authorWilliam Woodruff <william@trailofbits.com>2020-12-10 17:47:28 -0500
committerWilliam Woodruff <william@trailofbits.com>2020-12-10 17:47:28 -0500
commit9cf2516251c5379d3e8429342e8a392df81b9aaa (patch)
treec8cbb1c0e24fbaf766e25621594e7919103003f6
parentd32c320d7eee56706486fef6be778495303afe9e (diff)
downloadrust-9cf2516251c5379d3e8429342e8a392df81b9aaa.tar.gz
rust-9cf2516251c5379d3e8429342e8a392df81b9aaa.zip
doc(array,vec): add notes about side effects when empty-initializing
-rw-r--r--library/alloc/src/macros.rs3
-rw-r--r--library/std/src/primitive_docs.rs3
2 files changed, 6 insertions, 0 deletions
diff --git a/library/alloc/src/macros.rs b/library/alloc/src/macros.rs
index a992d768d63..bbff1d3dc4d 100644
--- a/library/alloc/src/macros.rs
+++ b/library/alloc/src/macros.rs
@@ -29,6 +29,9 @@
 /// to the same boxed integer value, not five references pointing to independently
 /// boxed integers.
 ///
+/// Also, note that `[T; 0]` is a valid initializer. This will initialize (or call)
+/// `T` but not populate the vector with it, so be mindful of side effects.
+///
 /// [`Vec`]: crate::vec::Vec
 #[cfg(not(test))]
 #[macro_export]
diff --git a/library/std/src/primitive_docs.rs b/library/std/src/primitive_docs.rs
index 55171ef2292..b22adbbe3d3 100644
--- a/library/std/src/primitive_docs.rs
+++ b/library/std/src/primitive_docs.rs
@@ -489,6 +489,9 @@ mod prim_pointer {}
 /// * A repeat expression `[x; N]`, which produces an array with `N` copies of `x`.
 ///   The type of `x` must be [`Copy`].
 ///
+/// Note that `[x; 0]` is a valid repeat expression. This will produce an empty array
+/// but will also initialize (or call) `x`, which may produce side effects.
+///
 /// Arrays of *any* size implement the following traits if the element type allows it:
 ///
 /// - [`Copy`]