std::ops::Place

Trait std::ops::Place

pub trait Place<Data> where    Data: ?Sized, {
    fn pointer(&mut self) -> *mut Data;
}
???? This is a nightly-only experimental API. (placement_new_protocol #27779)

Both PLACE <- EXPR and box EXPR desugar into expressions that allocate an intermediate "place" that holds uninitialized state. The desugaring evaluates EXPR, and writes the result at the address returned by the pointer method of this trait.

A Place can be thought of as a special representation for a hypothetical &uninit reference (which Rust cannot currently express directly). That is, it represents a pointer to uninitialized storage.

The client is responsible for two steps: First, initializing the payload (it can access its address via pointer). Second, converting the agent to an instance of the owning pointer, via the appropriate finalize method (see the InPlace.

If evaluating EXPR fails, then it is up to the destructor for the implementation of Place to clean up any intermediate state (e.g. deallocate box storage, pop a stack, etc).

Required Methods

???? This is a nightly-only experimental API. (placement_new_protocol #27779)

Returns the address where the input value will be written. Note that the data at this address is generally uninitialized, and thus one should use ptr::write for initializing it.

Implementors

© 2010 The Rust Project Developers
Licensed under the Apache License, Version 2.0 or the MIT license, at your option.
https://doc.rust-lang.org/std/ops/trait.Place.html

在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号

意见反馈
返回顶部