# Struct std::heap::System [−]

    pub struct System;

🔬 This is a nightly-only experimental API. (`allocator_api` #32838)

## Trait Implementations

### `impl Alloc for System`

#### `unsafe fn alloc(&mut self, layout: Layout) -> Result<*mut u8, AllocErr>`

🔬 This is a nightly-only experimental API. (`allocator_api` #32838)

the precise API and guarantees it provides may be tweaked slightly, especially to possibly take into account the types being stored to make room for a future tracing garbage collector

Returns a pointer meeting the size and alignment guarantees of `layout`. Read more

#### `unsafe fn alloc_zeroed(&mut self, layout: Layout) -> Result<*mut u8, AllocErr>`

🔬 This is a nightly-only experimental API. (`allocator_api` #32838)

the precise API and guarantees it provides may be tweaked slightly, especially to possibly take into account the types being stored to make room for a future tracing garbage collector

Behaves like `alloc`, but also ensures that the contents are set to zero before being returned. Read more

#### `unsafe fn dealloc(&mut self, ptr: *mut u8, layout: Layout)`

🔬 This is a nightly-only experimental API. (`allocator_api` #32838)

the precise API and guarantees it provides may be tweaked slightly, especially to possibly take into account the types being stored to make room for a future tracing garbage collector

Deallocate the memory referenced by `ptr`. Read more

#### `unsafe fn realloc(
&mut self,
ptr: *mut u8,
old_layout: Layout,
new_layout: Layout
) -> Result<*mut u8, AllocErr>`

🔬 This is a nightly-only experimental API. (`allocator_api` #32838)

the precise API and guarantees it provides may be tweaked slightly, especially to possibly take into account the types being stored to make room for a future tracing garbage collector

Returns a pointer suitable for holding data described by `new_layout`, meeting its size and alignment guarantees. To accomplish this, this may extend or shrink the allocation referenced by `ptr` to fit `new_layout`. Read more

#### `fn oom(&mut self, err: AllocErr) -> !`

🔬 This is a nightly-only experimental API. (`allocator_api` #32838)

the precise API and guarantees it provides may be tweaked slightly, especially to possibly take into account the types being stored to make room for a future tracing garbage collector

Allocator-specific method for signalling an out-of-memory condition. Read more

#### `fn usable_size(&self, layout: &Layout) -> (usize, usize)`

🔬 This is a nightly-only experimental API. (`allocator_api` #32838)

the precise API and guarantees it provides may be tweaked slightly, especially to possibly take into account the types being stored to make room for a future tracing garbage collector

Returns bounds on the guaranteed usable size of a successful allocation created with the specified `layout`. Read more

#### `unsafe fn alloc_excess(&mut self, layout: Layout) -> Result<Excess, AllocErr>`

🔬 This is a nightly-only experimental API. (`allocator_api` #32838)

the precise API and guarantees it provides may be tweaked slightly, especially to possibly take into account the types being stored to make room for a future tracing garbage collector

Behaves like `alloc`, but also returns the whole size of the returned block. For some `layout` inputs, like arrays, this may include extra storage usable for additional data. Read more

#### `unsafe fn realloc_excess(
&mut self,
ptr: *mut u8,
layout: Layout,
new_layout: Layout
) -> Result<Excess, AllocErr>`

🔬 This is a nightly-only experimental API. (`allocator_api` #32838)

the precise API and guarantees it provides may be tweaked slightly, especially to possibly take into account the types being stored to make room for a future tracing garbage collector

Behaves like `realloc`, but also returns the whole size of the returned block. For some `layout` inputs, like arrays, this may include extra storage usable for additional data. Read more

#### `unsafe fn grow_in_place(
&mut self,
ptr: *mut u8,
layout: Layout,
new_layout: Layout
) -> Result<(), CannotReallocInPlace>`

🔬 This is a nightly-only experimental API. (`allocator_api` #32838)

the precise API and guarantees it provides may be tweaked slightly, especially to possibly take into account the types being stored to make room for a future tracing garbage collector

Attempts to extend the allocation referenced by `ptr` to fit `new_layout`. Read more

#### `unsafe fn shrink_in_place(
&mut self,
ptr: *mut u8,
layout: Layout,
new_layout: Layout
) -> Result<(), CannotReallocInPlace>`

🔬 This is a nightly-only experimental API. (`allocator_api` #32838)

the precise API and guarantees it provides may be tweaked slightly, especially to possibly take into account the types being stored to make room for a future tracing garbage collector

Attempts to shrink the allocation referenced by `ptr` to fit `new_layout`. Read more

#### `fn alloc_one<T>(&mut self) -> Result<Unique<T>, AllocErr>`
[src]

🔬 This is a nightly-only experimental API. (`allocator_api` #32838)

the precise API and guarantees it provides may be tweaked slightly, especially to possibly take into account the types being stored to make room for a future tracing garbage collector

Allocates a block suitable for holding an instance of `T`. Read more

#### `unsafe fn dealloc_one<T>(&mut self, ptr: Unique<T>)`
[src]

🔬 This is a nightly-only experimental API. (`allocator_api` #32838)

the precise API and guarantees it provides may be tweaked slightly, especially to possibly take into account the types being stored to make room for a future tracing garbage collector

Deallocates a block suitable for holding an instance of `T`. Read more

#### `fn alloc_array<T>(&mut self, n: usize) -> Result<Unique<T>, AllocErr>`
[src]

🔬 This is a nightly-only experimental API. (`allocator_api` #32838)

the precise API and guarantees it provides may be tweaked slightly, especially to possibly take into account the types being stored to make room for a future tracing garbage collector

Allocates a block suitable for holding `n` instances of `T`. Read more

#### `unsafe fn realloc_array<T>(
&mut self,
ptr: Unique<T>,
n_old: usize,
n_new: usize
) -> Result<Unique<T>, AllocErr>`
[src]

🔬 This is a nightly-only experimental API. (`allocator_api` #32838)

the precise API and guarantees it provides may be tweaked slightly, especially to possibly take into account the types being stored to make room for a future tracing garbage collector

Reallocates a block previously suitable for holding `n_old` instances of `T`, returning a block suitable for holding `n_new` instances of `T`. Read more

#### `unsafe fn dealloc_array<T>(
&mut self,
ptr: Unique<T>,
n: usize
) -> Result<(), AllocErr>`
[src]

🔬 This is a nightly-only experimental API. (`allocator_api` #32838)

the precise API and guarantees it provides may be tweaked slightly, especially to possibly take into account the types being stored to make room for a future tracing garbage collector

Deallocates a block suitable for holding `n` instances of `T`. Read more

### `impl<'a> Alloc for &'a System`

#### `unsafe fn alloc(&mut self, layout: Layout) -> Result<*mut u8, AllocErr>`

🔬 This is a nightly-only experimental API. (`allocator_api` #32838)

the precise API and guarantees it provides may be tweaked slightly, especially to possibly take into account the types being stored to make room for a future tracing garbage collector

Returns a pointer meeting the size and alignment guarantees of `layout`. Read more

#### `unsafe fn alloc_zeroed(&mut self, layout: Layout) -> Result<*mut u8, AllocErr>`

🔬 This is a nightly-only experimental API. (`allocator_api` #32838)

the precise API and guarantees it provides may be tweaked slightly, especially to possibly take into account the types being stored to make room for a future tracing garbage collector

Behaves like `alloc`, but also ensures that the contents are set to zero before being returned. Read more

#### `unsafe fn dealloc(&mut self, ptr: *mut u8, _layout: Layout)`

🔬 This is a nightly-only experimental API. (`allocator_api` #32838)

the precise API and guarantees it provides may be tweaked slightly, especially to possibly take into account the types being stored to make room for a future tracing garbage collector

Deallocate the memory referenced by `ptr`. Read more

#### `unsafe fn realloc(
&mut self,
ptr: *mut u8,
old_layout: Layout,
new_layout: Layout
) -> Result<*mut u8, AllocErr>`

🔬 This is a nightly-only experimental API. (`allocator_api` #32838)

the precise API and guarantees it provides may be tweaked slightly, especially to possibly take into account the types being stored to make room for a future tracing garbage collector

Returns a pointer suitable for holding data described by `new_layout`, meeting its size and alignment guarantees. To accomplish this, this may extend or shrink the allocation referenced by `ptr` to fit `new_layout`. Read more

#### `fn oom(&mut self, err: AllocErr) -> !`

🔬 This is a nightly-only experimental API. (`allocator_api` #32838)

the precise API and guarantees it provides may be tweaked slightly, especially to possibly take into account the types being stored to make room for a future tracing garbage collector

Allocator-specific method for signalling an out-of-memory condition. Read more

#### `fn usable_size(&self, layout: &Layout) -> (usize, usize)`
[src]

🔬 This is a nightly-only experimental API. (`allocator_api` #32838)

the precise API and guarantees it provides may be tweaked slightly, especially to possibly take into account the types being stored to make room for a future tracing garbage collector

Returns bounds on the guaranteed usable size of a successful allocation created with the specified `layout`. Read more

#### `unsafe fn alloc_excess(&mut self, layout: Layout) -> Result<Excess, AllocErr>`
[src]

🔬 This is a nightly-only experimental API. (`allocator_api` #32838)

the precise API and guarantees it provides may be tweaked slightly, especially to possibly take into account the types being stored to make room for a future tracing garbage collector

Behaves like `alloc`, but also returns the whole size of the returned block. For some `layout` inputs, like arrays, this may include extra storage usable for additional data. Read more

#### `unsafe fn realloc_excess(
&mut self,
ptr: *mut u8,
layout: Layout,
new_layout: Layout
) -> Result<Excess, AllocErr>`
[src]

🔬 This is a nightly-only experimental API. (`allocator_api` #32838)

the precise API and guarantees it provides may be tweaked slightly, especially to possibly take into account the types being stored to make room for a future tracing garbage collector

Behaves like `realloc`, but also returns the whole size of the returned block. For some `layout` inputs, like arrays, this may include extra storage usable for additional data. Read more

#### `unsafe fn grow_in_place(
&mut self,
ptr: *mut u8,
layout: Layout,
new_layout: Layout
) -> Result<(), CannotReallocInPlace>`
[src]

🔬 This is a nightly-only experimental API. (`allocator_api` #32838)

the precise API and guarantees it provides may be tweaked slightly, especially to possibly take into account the types being stored to make room for a future tracing garbage collector

Attempts to extend the allocation referenced by `ptr` to fit `new_layout`. Read more

#### `unsafe fn shrink_in_place(
&mut self,
ptr: *mut u8,
layout: Layout,
new_layout: Layout
) -> Result<(), CannotReallocInPlace>`
[src]

🔬 This is a nightly-only experimental API. (`allocator_api` #32838)

the precise API and guarantees it provides may be tweaked slightly, especially to possibly take into account the types being stored to make room for a future tracing garbage collector

Attempts to shrink the allocation referenced by `ptr` to fit `new_layout`. Read more

#### `fn alloc_one<T>(&mut self) -> Result<Unique<T>, AllocErr>`
[src]

🔬 This is a nightly-only experimental API. (`allocator_api` #32838)

the precise API and guarantees it provides may be tweaked slightly, especially to possibly take into account the types being stored to make room for a future tracing garbage collector

Allocates a block suitable for holding an instance of `T`. Read more

#### `unsafe fn dealloc_one<T>(&mut self, ptr: Unique<T>)`
[src]

🔬 This is a nightly-only experimental API. (`allocator_api` #32838)

the precise API and guarantees it provides may be tweaked slightly, especially to possibly take into account the types being stored to make room for a future tracing garbage collector

Deallocates a block suitable for holding an instance of `T`. Read more

#### `fn alloc_array<T>(&mut self, n: usize) -> Result<Unique<T>, AllocErr>`
[src]

🔬 This is a nightly-only experimental API. (`allocator_api` #32838)

the precise API and guarantees it provides may be tweaked slightly, especially to possibly take into account the types being stored to make room for a future tracing garbage collector

Allocates a block suitable for holding `n` instances of `T`. Read more

#### `unsafe fn realloc_array<T>(
&mut self,
ptr: Unique<T>,
n_old: usize,
n_new: usize
) -> Result<Unique<T>, AllocErr>`
[src]

🔬 This is a nightly-only experimental API. (`allocator_api` #32838)

the precise API and guarantees it provides may be tweaked slightly, especially to possibly take into account the types being stored to make room for a future tracing garbage collector

Reallocates a block previously suitable for holding `n_old` instances of `T`, returning a block suitable for holding `n_new` instances of `T`. Read more

#### `unsafe fn dealloc_array<T>(
&mut self,
ptr: Unique<T>,
n: usize
) -> Result<(), AllocErr>`
[src]

🔬 This is a nightly-only experimental API. (`allocator_api` #32838)

the precise API and guarantees it provides may be tweaked slightly, especially to possibly take into account the types being stored to make room for a future tracing garbage collector

Deallocates a block suitable for holding `n` instances of `T`. Read more

# Help

## Keyboard Shortcuts

?
  Show this help dialog
S
  Focus the search field
⇤
  Move up in search results
⇥
  Move down in search results
⏎
  Go to active search result
+
  Collapse/expand all sections

## Search Tricks

Prefix searches with a type followed by a colon (e.g. `fn:`) to restrict the search to a given type.

Accepted types are: `fn`, `mod`, `struct`, `enum`, `trait`, `type`, `macro`, and `const`.

Search functions by type signature (e.g. `vec -> usize` or `* -> vec`)