Auto merge of #68529 - TimDiekmann:rename-alloc, r=Amanieu
Rename `Alloc` to `AllocRef` The allocator-wg has decided to merge this change upstream in https://github.com/rust-lang/wg-allocators/issues/8#issuecomment-577122958. This renames `Alloc` to `AllocRef` because types that implement `Alloc` are a reference, smart pointer, or ZSTs. It is not possible to have an allocator like `MyAlloc([u8; N])`, that owns the memory and also implements `Alloc`, since that would mean, that moving a `Vec<T, MyAlloc>` would need to correct the internal pointer, which is not possible as we don't have move constructors. For further explanation please see https://github.com/rust-lang/wg-allocators/issues/8#issuecomment-489464843 and the comments after that one. Additionally it clarifies the semantics of `Clone` on an allocator. In the case of `AllocRef`, it is clear that the cloned handle still points to the same allocator instance, and that you can free data allocated from one handle with another handle. The initial proposal was to rename `Alloc` to `AllocHandle`, but `Ref` expresses the semantics better than `Handle`. Also, the only appearance of `Handle` in `std` are for windows specific resources, which might be confusing. Blocked on https://github.com/rust-lang/miri/pull/1160
This commit is contained in:
commit
b181835a6b
16 changed files with 60 additions and 45 deletions
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
#![feature(allocator_api, nonnull)]
|
||||
|
||||
use std::alloc::{Alloc, Global, Layout, handle_alloc_error};
|
||||
use std::alloc::{AllocRef, Global, Layout, handle_alloc_error};
|
||||
|
||||
fn main() {
|
||||
unsafe {
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
|
||||
extern crate helper;
|
||||
|
||||
use std::alloc::{self, Global, Alloc, System, Layout};
|
||||
use std::alloc::{self, Global, AllocRef, System, Layout};
|
||||
use std::sync::atomic::{AtomicUsize, Ordering};
|
||||
|
||||
static HITS: AtomicUsize = AtomicUsize::new(0);
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@
|
|||
extern crate custom;
|
||||
extern crate helper;
|
||||
|
||||
use std::alloc::{Global, Alloc, System, Layout};
|
||||
use std::alloc::{Global, AllocRef, System, Layout};
|
||||
use std::sync::atomic::{Ordering, AtomicUsize};
|
||||
|
||||
#[global_allocator]
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
#![feature(allocator_api)]
|
||||
|
||||
use std::alloc::{Global, Alloc, Layout, handle_alloc_error};
|
||||
use std::alloc::{Global, AllocRef, Layout, handle_alloc_error};
|
||||
use std::ptr::{self, NonNull};
|
||||
|
||||
fn main() {
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
#![feature(allocator_api)]
|
||||
|
||||
use std::alloc::{Alloc, Global, Layout, handle_alloc_error};
|
||||
use std::alloc::{AllocRef, Global, Layout, handle_alloc_error};
|
||||
use std::ptr::NonNull;
|
||||
|
||||
struct arena(());
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue