Document that Vec::from_raw_parts[_in] must be given a pointer from the correct allocator.

This commit is contained in:
Kevin Reid 2023-01-07 15:56:36 -08:00
parent ee0412d1ef
commit 288e89bf76

View File

@ -490,6 +490,8 @@ impl<T> Vec<T> {
/// This is highly unsafe, due to the number of invariants that aren't /// This is highly unsafe, due to the number of invariants that aren't
/// checked: /// checked:
/// ///
/// * `ptr` must have been allocated using the global allocator, such as via
/// the [`alloc::alloc`] function.
/// * `T` needs to have the same alignment as what `ptr` was allocated with. /// * `T` needs to have the same alignment as what `ptr` was allocated with.
/// (`T` having a less strict alignment is not sufficient, the alignment really /// (`T` having a less strict alignment is not sufficient, the alignment really
/// needs to be equal to satisfy the [`dealloc`] requirement that memory must be /// needs to be equal to satisfy the [`dealloc`] requirement that memory must be
@ -526,6 +528,7 @@ impl<T> Vec<T> {
/// function. /// function.
/// ///
/// [`String`]: crate::string::String /// [`String`]: crate::string::String
/// [`alloc::alloc`]: crate::alloc::alloc
/// [`dealloc`]: crate::alloc::GlobalAlloc::dealloc /// [`dealloc`]: crate::alloc::GlobalAlloc::dealloc
/// ///
/// # Examples /// # Examples
@ -681,6 +684,7 @@ impl<T, A: Allocator> Vec<T, A> {
/// This is highly unsafe, due to the number of invariants that aren't /// This is highly unsafe, due to the number of invariants that aren't
/// checked: /// checked:
/// ///
/// * `ptr` must be [*currently allocated*] via the given allocator `alloc`.
/// * `T` needs to have the same alignment as what `ptr` was allocated with. /// * `T` needs to have the same alignment as what `ptr` was allocated with.
/// (`T` having a less strict alignment is not sufficient, the alignment really /// (`T` having a less strict alignment is not sufficient, the alignment really
/// needs to be equal to satisfy the [`dealloc`] requirement that memory must be /// needs to be equal to satisfy the [`dealloc`] requirement that memory must be
@ -714,6 +718,7 @@ impl<T, A: Allocator> Vec<T, A> {
/// ///
/// [`String`]: crate::string::String /// [`String`]: crate::string::String
/// [`dealloc`]: crate::alloc::GlobalAlloc::dealloc /// [`dealloc`]: crate::alloc::GlobalAlloc::dealloc
/// [*currently allocated*]: crate::alloc::Allocator#currently-allocated-memory
/// [*fit*]: crate::alloc::Allocator#memory-fitting /// [*fit*]: crate::alloc::Allocator#memory-fitting
/// ///
/// # Examples /// # Examples