diff options
| author | Alex Crichton <alex@alexcrichton.com> | 2014-10-30 08:57:30 -0700 |
|---|---|---|
| committer | Alex Crichton <alex@alexcrichton.com> | 2014-10-30 09:29:23 -0700 |
| commit | 5ee856988903b57737cb5ea291e2d8c649999e93 (patch) | |
| tree | 87d3f2f85954a7011d8e0c0158beed9e634132e1 /src/libarena | |
| parent | f2fe55b0139b0b6685d58723a1c44654e98b154b (diff) | |
| parent | 7e2e4ce59284a68ced232e72b9c01f2e074d4bd2 (diff) | |
rollup merge of #18407 : thestinger/arena
Diffstat (limited to 'src/libarena')
| -rw-r--r-- | src/libarena/lib.rs | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/src/libarena/lib.rs b/src/libarena/lib.rs index 924dd5ffed6..1528c313b73 100644 --- a/src/libarena/lib.rs +++ b/src/libarena/lib.rs @@ -208,13 +208,13 @@ impl Arena { } #[inline] - fn alloc_copy<T>(&self, op: || -> T) -> &T { + fn alloc_copy<T>(&self, op: || -> T) -> &mut T { unsafe { let ptr = self.alloc_copy_inner(mem::size_of::<T>(), mem::min_align_of::<T>()); let ptr = ptr as *mut T; ptr::write(&mut (*ptr), op()); - return &*ptr; + return &mut *ptr; } } @@ -262,7 +262,7 @@ impl Arena { } #[inline] - fn alloc_noncopy<T>(&self, op: || -> T) -> &T { + fn alloc_noncopy<T>(&self, op: || -> T) -> &mut T { unsafe { let tydesc = get_tydesc::<T>(); let (ty_ptr, ptr) = @@ -279,14 +279,14 @@ impl Arena { // the object is there. *ty_ptr = bitpack_tydesc_ptr(tydesc, true); - return &*ptr; + return &mut *ptr; } } /// Allocates a new item in the arena, using `op` to initialize the value, /// and returns a reference to it. #[inline] - pub fn alloc<T>(&self, op: || -> T) -> &T { + pub fn alloc<T>(&self, op: || -> T) -> &mut T { unsafe { if intrinsics::needs_drop::<T>() { self.alloc_noncopy(op) @@ -458,12 +458,12 @@ impl<T> TypedArena<T> { /// Allocates an object in the `TypedArena`, returning a reference to it. #[inline] - pub fn alloc(&self, object: T) -> &T { + pub fn alloc(&self, object: T) -> &mut T { if self.ptr == self.end { self.grow() } - let ptr: &T = unsafe { + let ptr: &mut T = unsafe { let ptr: &mut T = mem::transmute(self.ptr); ptr::write(ptr, object); self.ptr.set(self.ptr.get().offset(1)); |
