about summary refs log tree commit diff
path: root/src/libstd/owned.rs
AgeCommit message (Collapse)AuthorLines
2014-05-17std: Refactor liballoc out of lib{std,sync}Alex Crichton-115/+0
This commit is part of the libstd facade RFC, issue #13851. This creates a new library, liballoc, which is intended to be the core allocation library for all of Rust. It is pinned on the basic assumption that an allocation failure is an abort or failure. This module has inherited the heap/libc_heap modules from std::rt, the owned/rc modules from std, and the arc module from libsync. These three pointers are currently the three most core pointer implementations in Rust. The UnsafeArc type in std::sync should be considered deprecated and replaced by Arc<Unsafe<T>>. This commit does not currently migrate to this type, but future commits will continue this refactoring.
2014-05-15core: Update all tests for fmt movementAlex Crichton-0/+14
2014-05-13std: Move the owned module from core to stdAlex Crichton-0/+101
The compiler was updated to recognize that implementations for ty_uniq(..) are allowed if the Box lang item is located in the current crate. This enforces the idea that libcore cannot allocated, and moves all related trait implementations from libcore to libstd. This is a breaking change in that the AnyOwnExt trait has moved from the any module to the owned module. Any previous users of std::any::AnyOwnExt should now use std::owned::AnyOwnExt instead. This was done because the trait is intended for Box traits and only Box traits. [breaking-change]
2014-05-07Test fixes and rebase conflictsAlex Crichton-33/+0
2014-05-07core: Inhert ~/@/& cmp traits, remove old modulesAlex Crichton-31/+0
This commit removes the std::{managed, reference} modules. The modules serve essentially no purpose, and the only free function removed was `managed::ptr_eq` which can be achieved by comparing references. [breaking-change]
2014-05-06librustc: Remove `~EXPR`, `~TYPE`, and `~PAT` from the language, exceptPatrick Walton-11/+11
for `~str`/`~[]`. Note that `~self` still remains, since I forgot to add support for `Box<self>` before the snapshot. How to update your code: * Instead of `~EXPR`, you should write `box EXPR`. * Instead of `~TYPE`, you should write `Box<Type>`. * Instead of `~PATTERN`, you should write `box PATTERN`. [breaking-change]
2014-05-02librustc: Implement the `Box<T>` type syntax. RFC #14. Issue #13885.Patrick Walton-0/+8
2014-03-23std: remove the `equals` method from `TotalEq`.Huon Wilson-4/+1
`TotalEq` is now just an assertion about the `Eq` impl of a type (i.e. `==` is a total equality if a type implements `TotalEq`) so the extra method is just confusing. Also, a new method magically appeared as a hack to allow deriving to assert that the contents of a struct/enum are also TotalEq, because the deriving infrastructure makes it very hard to do anything but create a trait method. (You didn't hear about this horrible work-around from me :(.)
2014-01-09librustc: Implement placement `box` for GC and unique pointers.Patrick Walton-0/+14
2013-08-04std: implement Total{Ord,Eq} for pointers.Huon Wilson-1/+13
2013-06-18replace #[inline(always)] with #[inline]. r=burningtree.Graydon Hoare-6/+6
2013-05-22libstd: Rename libcore to libstd and libstd to libextra; update makefiles.Patrick Walton-0/+33
This only changes the directory names; it does not change the "real" metadata names.