Commit graph

1916 commits

Author SHA1 Message Date
Mazdak Farrokhzad
2f6cf36b32
Rollup merge of #62043 - Centril:remove-fnbox, r=cramertj
Remove `FnBox`

Remove `FnBox` since we now have `Box<dyn FnOnce>`.

Closes https://github.com/rust-lang/rust/issues/28796.

r? @cramertj
2019-06-27 23:01:00 +02:00
Matthias Geier
abe3bdf257 Remove RawVec::cap()
As suggested in https://github.com/rust-lang/rust/pull/60340#issuecomment-493681032
2019-06-25 15:44:21 +02:00
Mazdak Farrokhzad
a99a7b7f35 Remove FnBox. 2019-06-22 06:59:27 +02:00
Mazdak Farrokhzad
3a8536edef
Rollup merge of #61146 - czipperz:SliceConcatExt-connect-default-to-join, r=sfackler
SliceConcatExt::connect defaults to calling join

It makes sense to default a deprecated method to the new one.  Precedence example is `Error::cause` defaults to calling `Error::source`.
2019-06-22 01:42:30 +02:00
Mazdak Farrokhzad
85def307fc shared_from_iter: Polish internal docs. 2019-06-21 23:01:48 +02:00
Mazdak Farrokhzad
8bbf1abd0e shared_from_iter: Add more tests. 2019-06-21 03:52:38 +02:00
Mazdak Farrokhzad
6b8417b55c shared_from_iter: Clarify slice::Iter specialization impl. 2019-06-20 23:20:21 +02:00
Mazdak Farrokhzad
85978d028a data_offset_align: add inline attribute. 2019-06-20 23:13:06 +02:00
Mazdak Farrokhzad
4b44ad9038 deduplicate slice_from_raw_parts_mut. 2019-06-20 09:28:13 +02:00
Mazdak Farrokhzad
b1dbf15bb5 shared_from_iter/Arc: Use specialization to elide allocation. 2019-06-20 09:28:13 +02:00
Mazdak Farrokhzad
59ecff915c Arc: refactor data_offset{_sized}. 2019-06-20 09:28:13 +02:00
Mazdak Farrokhzad
27f5d0f208 Arc: refactor away PhantomData noise. 2019-06-20 09:28:12 +02:00
Mazdak Farrokhzad
353c8eb828 shared_from_iter/Rc: Use specialization to elide allocation. 2019-06-20 09:28:12 +02:00
Mazdak Farrokhzad
bf8f6c399b Rc: reduce duplicate calls. 2019-06-20 09:28:12 +02:00
Mazdak Farrokhzad
2efbc9e5a2 Rc: refactor data_offset{_sized}. 2019-06-20 09:28:12 +02:00
Mazdak Farrokhzad
19982f5653 Rc: refactor away PhantomData noise. 2019-06-20 09:28:12 +02:00
Mazdak Farrokhzad
689c64c469 Add basic 'shared_from_iter' impls. 2019-06-20 09:28:12 +02:00
Mazdak Farrokhzad
04d6539025
Rollup merge of #61893 - chpio:weak_ptr_eq_methods, r=rkruppe
make `Weak::ptr_eq`s into methods

This makes the `Weak::ptr_eq`s associated function into methods. There's no reason for methods on `Weak`s to be associated functions, as there is no `Dered` thus no possibility of a collision. Also: methods can be called using the associated function syntax.

follow up on https://github.com/rust-lang/rust/pull/55987
[Tracking issue for weak_ptr_eq](https://github.com/rust-lang/rust/issues/55981)
2019-06-17 20:56:00 +02:00
Thomas Heck
387ac060d2 make Weak::ptr_eqs into methods 2019-06-16 14:05:44 +02:00
chansuke
89292beedb Separate liballoc module 2019-06-16 13:08:09 +03:00
Mazdak Farrokhzad
006440a7fe
Rollup merge of #61447 - scottmcm:vec-vecdeque, r=sfackler
Add some Vec <-> VecDeque documentation

These are more than just `.into_iter().collect()`, so talk about some of their nuances.

For VecDeque -> Vec I'm trying to intentionally not write a guarantee for people making their own `Vec`s, since the rules are more complicated than I think we want to commit to forever.

The "Vec -> VecDeque doesn't reallocate" guarantee seems reasonable, though.  (And I'm intentionally ambiguous about when it's O(1) instead of O(n).)
2019-06-16 06:05:12 +02:00
Michal 'vorner' Vaner
49fbd76a76
Make the Weak::{into,as}_raw methods
Because Weak doesn't Deref, so there's no reason for them to be only
associated methods.
2019-06-15 08:47:19 +02:00
bors
fc550d4295 Auto merge of #61421 - vorner:string-in-rc-into-raw-docs, r=RalfJung
docs: Use String in Rc::into_raw examples

It is unclear if accessing an integer after `drop_in_place` has been
called on it is undefined behaviour or not, as demonstrated by the
discussion in
https://github.com/rust-lang/rust/pull/60766#pullrequestreview-243414222.

Avoid these uncertainties by using String which frees memory in its
`drop_in_place` to make sure this is undefined behaviour. The message in
the docs should be to watch out and not access the data after that, not
discussing when one maybe could get away with it O:-).
2019-06-14 12:37:28 +00:00
Michal 'vorner' Vaner
79e5839992
docs: Use String in Rc::into_raw examples
It is unclear if accessing an integer after `drop_in_place` has been
called on it is undefined behaviour or not, as demonstrated by the
discussion in
https://github.com/rust-lang/rust/pull/60766#pullrequestreview-243414222.

Avoid these uncertainties by using String which frees memory in its
`drop_in_place` to make sure this is undefined behaviour. The message in
the docs should be to watch out and not access the data after that, not
discussing when one maybe could get away with it O:-).
2019-06-13 13:18:59 +02:00
Vadim Petrochenkov
eb09daa762 Hygienize macros in the standard library 2019-06-12 20:27:29 +03:00
Scott McMurray
0150448f1b Remove the questionably-useful example 2019-06-11 21:13:48 -07:00
Scott McMurray
5168f5d220 Add hyperlinks to Vec and VecDeque
Let's try the auto-linking instead, since the relative ones don't work.
2019-06-08 22:39:33 -07:00
scottmcm
8da94ef849 Apply suggestions from code review
Co-Authored-By: Joe ST <joe@fbstj.net>
2019-06-08 22:38:18 -07:00
Scott McMurray
1f4a262d85 Put the docs on the methods instead of the impls
Since simulacrum suggested (on Discord) they're better there.
2019-06-08 22:38:18 -07:00
scottmcm
2da4f9ad5e Apply suggestions from code review
Co-Authored-By: Mazdak Farrokhzad <twingoow@gmail.com>
2019-06-08 22:38:18 -07:00
Scott McMurray
cc2a2808d0 Add some Vec <-> VecDeque documentation
These are more than just `.into_iter().collect()`, so talk about some of their nuances.
2019-06-08 22:38:18 -07:00
Vadim Petrochenkov
74a6d1c821 Turn #[allocator] into a built-in attribute and rename it to #[rustc_allocator] 2019-06-08 23:55:25 +03:00
Mazdak Farrokhzad
1ae4727f3f
Rollup merge of #61420 - felixrabe:patch-2, r=dtolnay
Succinctify splice docs
2019-06-04 04:48:16 +02:00
Mazdak Farrokhzad
5d1d2992ef
Rollup merge of #61419 - scottmcm:casing-is-on-strings, r=cramertj
Add an unusual-conversion example to to_uppercase

Like how to_lowercase has ὈΔΥΣΣΕΎΣ.
2019-06-04 04:48:13 +02:00
Mazdak Farrokhzad
45cdc6d578
Rollup merge of #61135 - czipperz:rc-make_mut-weak-doc, r=Mark-Simulacrum
Fix documentation of `Rc::make_mut` regarding `rc::Weak`.

Closes #60961
2019-06-04 04:48:03 +02:00
Felix Rabe
7bdc38d3a4
Succinctify splice docs 2019-06-01 11:26:08 +02:00
Scott McMurray
dfd9d0429c Add an unusual-conversion example to to_uppercase
Like how to_lowercase has ὈΔΥΣΣΕΎΣ.
2019-06-01 00:23:26 -07:00
Lzu Tao
0c35c699d4 Stabilize iter_nth_back feature 2019-05-30 18:00:17 +00:00
Mazdak Farrokhzad
1b66a13540
Rollup merge of #61244 - RalfJung:box, r=rkruppe
Box::into_vec: use Box::into_raw instead of mem::forget

`Box::into_raw` does, in one step, turn the `Box` into a raw ptr and avoid deallocation.  Seems cleaner than separating the two.

Also, `mem::forget` gets the `Box` with a `noalias` argument, but it is not actually correct that this is an exclusive pointer. So a stricter version of Stacked Borrows would complain here. (I can't actually make Stacked Borrows that strict yet though due to other issues.)
2019-05-30 10:52:55 +02:00
Mazdak Farrokhzad
cb012a0430
Rollup merge of #60766 - vorner:weak-into-raw, r=sfackler
Weak::into_raw

Hello

This is my first shot at #60728. I'd like to consult it a bit before moving further.

The biggest question I have is if this API makes sense. My motivation for it is to be able to store the `Weak` in `AtomicPtr`. For that I don't actually need for the pointer to point to the `T`, any pointer (maybe casted to `usize`) would be good enough, but this mirrors what `Arc` does and could be useful for other things too (like comparing if Arc and Weak point to the same thing without playing with the counts), while some opaque pointer wouldn't.

Some secondary questions, if this is deemed desirable are:
* The weak pointer may be dangling if it is created by `Weak::new()`. It would make sense to treat this as NULL, but that is incompatible with `T: ?Sized` ‒ both `new()` and `ptr::null()` are available only for sized types. The current implementation is therefore also available only for sized `T`s. It would be possible to allow `?Sized` if the API would be `fn into_raw(self) -> Option<NonNull<T>>` and `fn from_raw(NonNull<T>)`, but that's different API than `Arc` has. What would be preferred?
* There's a FIXME in my code about what I suspect could be UB. Is it really UB & how to get the pointer correctly? Is manual offsetting of the pointer the only way?
* Am I missing some other necessary thing around the feature gates and such?
* Is the documentation understandable? I know writing docs is not my strongest skill :-|.

Thinks I'd like to do as part of the PR, but are not yet done:
* Turn the referenced issue into tracking issue for the feature flag.
* Once the `sync::Weak` is considered reasonable, I'd do the equivalent for `rc::Weak`.
* This might call for few more tests than what is currently part of the documentation.
2019-05-29 08:15:53 +02:00
Ralf Jung
645f685e1b Box::into_vec: use Box::into_raw instead of mem::forget 2019-05-27 22:40:28 +02:00
Aleksey Kladov
fe31ad38cb
Update src/liballoc/boxed.rs
Co-Authored-By: Ralf Jung <post@ralfj.de>
2019-05-27 22:42:50 +03:00
Aleksey Kladov
0653e78ae1 make Box<str>::clone simpler & safer 2019-05-27 21:17:12 +03:00
Aaron Loucks
f5ab0313fe Disable drain_filter tests that require catch_unwind on miri 2019-05-27 12:55:59 -04:00
Aaron Loucks
b13ae65b8b Refactor DrainFilter::next and update comments 2019-05-27 12:47:47 -04:00
Aaron Loucks
53d46ae96e Add drain_filter_unconsumed test 2019-05-27 11:47:14 -04:00
Aaron Loucks
17a517a42a Fix formatting nit 2019-05-27 11:30:23 -04:00
Aleksey Kladov
a23a77fb19 avoid materializing unintialized Boxes in RawVec 2019-05-27 11:15:31 +03:00
Aaron Loucks
84ae9699c6 Prevent Vec::drain_filter from double dropping on panic
Fixes: #60977
2019-05-26 23:27:31 -04:00
Michal 'vorner' Vaner
4f1dcb34df
rc::Weak::{as,from,into}_raw
Methods on the Weak to access it as a raw pointer to the data.
2019-05-26 08:53:59 +02:00