Skip to content

Commit 51a2e2f

Browse files
committed
Allow more Cell methods for non-Copy types
Contributes to rust-lang#39264
1 parent 717ac96 commit 51a2e2f

File tree

1 file changed

+60
-60
lines changed

1 file changed

+60
-60
lines changed

src/libcore/cell.rs

+60-60
Original file line numberDiff line numberDiff line change
@@ -212,66 +212,6 @@ impl<T:Copy> Cell<T> {
212212
pub fn get(&self) -> T {
213213
unsafe{ *self.value.get() }
214214
}
215-
216-
/// Returns a reference to the underlying `UnsafeCell`.
217-
///
218-
/// # Examples
219-
///
220-
/// ```
221-
/// #![feature(as_unsafe_cell)]
222-
///
223-
/// use std::cell::Cell;
224-
///
225-
/// let c = Cell::new(5);
226-
///
227-
/// let uc = c.as_unsafe_cell();
228-
/// ```
229-
#[inline]
230-
#[unstable(feature = "as_unsafe_cell", issue = "27708")]
231-
#[rustc_deprecated(since = "1.12.0", reason = "renamed to as_ptr")]
232-
pub fn as_unsafe_cell(&self) -> &UnsafeCell<T> {
233-
&self.value
234-
}
235-
236-
/// Returns a raw pointer to the underlying data in this cell.
237-
///
238-
/// # Examples
239-
///
240-
/// ```
241-
/// use std::cell::Cell;
242-
///
243-
/// let c = Cell::new(5);
244-
///
245-
/// let ptr = c.as_ptr();
246-
/// ```
247-
#[inline]
248-
#[stable(feature = "cell_as_ptr", since = "1.12.0")]
249-
pub fn as_ptr(&self) -> *mut T {
250-
self.value.get()
251-
}
252-
253-
/// Returns a mutable reference to the underlying data.
254-
///
255-
/// This call borrows `Cell` mutably (at compile-time) which guarantees
256-
/// that we possess the only reference.
257-
///
258-
/// # Examples
259-
///
260-
/// ```
261-
/// use std::cell::Cell;
262-
///
263-
/// let mut c = Cell::new(5);
264-
/// *c.get_mut() += 1;
265-
///
266-
/// assert_eq!(c.get(), 6);
267-
/// ```
268-
#[inline]
269-
#[stable(feature = "cell_get_mut", since = "1.11.0")]
270-
pub fn get_mut(&mut self) -> &mut T {
271-
unsafe {
272-
&mut *self.value.get()
273-
}
274-
}
275215
}
276216

277217
#[stable(feature = "rust1", since = "1.0.0")]
@@ -369,6 +309,66 @@ impl<T> Cell<T> {
369309
}
370310
}
371311

312+
/// Returns a reference to the underlying `UnsafeCell`.
313+
///
314+
/// # Examples
315+
///
316+
/// ```
317+
/// #![feature(as_unsafe_cell)]
318+
///
319+
/// use std::cell::Cell;
320+
///
321+
/// let c = Cell::new(5);
322+
///
323+
/// let uc = c.as_unsafe_cell();
324+
/// ```
325+
#[inline]
326+
#[unstable(feature = "as_unsafe_cell", issue = "27708")]
327+
#[rustc_deprecated(since = "1.12.0", reason = "renamed to as_ptr")]
328+
pub fn as_unsafe_cell(&self) -> &UnsafeCell<T> {
329+
&self.value
330+
}
331+
332+
/// Returns a raw pointer to the underlying data in this cell.
333+
///
334+
/// # Examples
335+
///
336+
/// ```
337+
/// use std::cell::Cell;
338+
///
339+
/// let c = Cell::new(5);
340+
///
341+
/// let ptr = c.as_ptr();
342+
/// ```
343+
#[inline]
344+
#[stable(feature = "cell_as_ptr", since = "1.12.0")]
345+
pub fn as_ptr(&self) -> *mut T {
346+
self.value.get()
347+
}
348+
349+
/// Returns a mutable reference to the underlying data.
350+
///
351+
/// This call borrows `Cell` mutably (at compile-time) which guarantees
352+
/// that we possess the only reference.
353+
///
354+
/// # Examples
355+
///
356+
/// ```
357+
/// use std::cell::Cell;
358+
///
359+
/// let mut c = Cell::new(5);
360+
/// *c.get_mut() += 1;
361+
///
362+
/// assert_eq!(c.get(), 6);
363+
/// ```
364+
#[inline]
365+
#[stable(feature = "cell_get_mut", since = "1.11.0")]
366+
pub fn get_mut(&mut self) -> &mut T {
367+
unsafe {
368+
&mut *self.value.get()
369+
}
370+
}
371+
372372
/// Sets the contained value.
373373
///
374374
/// # Examples

0 commit comments

Comments
 (0)