Jørn Lode
2574990a3f
Rustonomicon: Fix bug in implementation of Vec::drain()
...
In the last code snippet on the following page there is a bug in the
implementation of Vec::drain().
https://doc.rust-lang.org/nightly/nomicon/vec-drain.html
```rust
pub fn drain(&mut self) -> Drain<T> {
// Oops, setting it to 0 while we still need the old value!
self.len = 0;
unsafe {
Drain {
// len is used to create a &[T] from &self here,
// so we end up always creating an empty slice.
iter: RawValIter::new(&self),
vec: PhantomData,
}
}
}
```
A simple test to verify that Drain is broken can be found here:
https://play.rust-lang.org/?gist=30f579565e4bbf4836ce&version=nightly
And here's one with a fixed implementation:
https://play.rust-lang.org/?gist=2ec0c1a6dcf5defd7a53&version=nightly
8 years ago
Jake Kerr
00fdb72cc8
Reverse AtomicBool value in nomicon example to agree with its comment.
...
Makes the code agree with the comment: 'value answers "am I locked?"'.
8 years ago
Andrew Paseltiner
649ba39bc4
Remove superfluous line from Nomicon
8 years ago
Tshepang Lekhonkhobe
4b1781c350
nomicon: insert missing words
8 years ago
Tshepang Lekhonkhobe
80604b471d
nomicon: use current syntax
8 years ago
Steve Klabnik
5dfcb738b1
Remove reference to diabetes
...
1. this isn't actually true about diabetes
2. people with diabetes will get *real sad* when reading this
3. it isn't actually necessary.
8 years ago
Taliesin Beynon
2bea608ff4
Some rerp-rust improvements.
...
* Some clarifying rephrasing.
* Rename B.x back to B.a.
* Make null pointer optimization section bit more concrete.
8 years ago
Jeehoon Kang
d787bec7d5
Revise TARPL's description for allocating 0 bytes
...
In Section 3.2, TARPL says that "standard allocators (including jemalloc, the one used by default in Rust) generally consider passing in 0 for the size of an allocation as Undefined Behaviour."
However, the C standard and jemalloc manual says allocating zero bytes
should succeed:
- C11 7.22.3 paragraph 1: "If the size of the space requested is zero, the behavior is implementation-defined: either a null pointer is returned, or the behavior is as if the size were some nonzero value, except that the returned pointer shall not be used to access an object."
- [jemalloc manual](http://www.freebsd.org/cgi/man.cgi?query=jemalloc&sektion=3 ): "The malloc and calloc functions return a pointer to the allocated memory if successful; otherwise a NULL pointer is returned and errno is set to ENOMEM."
+ Note that the description for `allocm` says "Behavior is undefined if size is 0," but it is an experimental API.
8 years ago
Ivan Jager
399efd4cdc
Fix some grammar in The Advanced Rust Programming Language
8 years ago
Alexis Beingessner
f6e739a54c
Fix variance ordering
...
I thought this was actually a huge error and I'd have to rewrite a bunch but
it looks like everything else was correct.
Closes #27457
8 years ago
Alexis Beingessner
5dea771dbb
rename TARPL to The Rustinomicon
8 years ago
Oliver Schneider
99e464326c
fix code and error to match the surronding text
8 years ago
Cole Reynolds
a15e56cb52
Minor grammatical changes to send-and-sync.
...
Corrects formatting of bullet-ed sentences and changes 'pervasive use raw pointers' to 'pervasive use of raw pointers'
8 years ago
Taliesin Beynon
8a932e55b9
fix switched-round 'b' and 'c'
8 years ago
Alexis Beingessner
37d42cdcef
last of the emphasis cleanup
8 years ago
Alexis Beingessner
42582a28ed
frob emphasis
8 years ago
Alexis Beingessner
85a6d02a45
make the intro less scary
8 years ago
Alexis Beingessner
a9c2c6ee32
fix title-casing
8 years ago
Alex Crichton
ec806b24f4
tarpl: Change norun to no_run
...
Needs the underscore for rustdoc to not actually run it.
8 years ago
Alexis Beingessner
baab22d05e
Maybe ignore the explicit examples of a race condition
8 years ago
Alexis Beingessner
6e480e28e6
fix example code
8 years ago
Alexis Beingessner
594aa865d2
add warning about reference section
8 years ago
Alexis Beingessner
efe5b1b79e
clarify subtyping
8 years ago
Alexis Beingessner
56fd7834f6
fix borrow-splitting
8 years ago
Alexis Beingessner
e00022c2ef
fix incorrect name
8 years ago
Alexis Beingessner
36d7b94c89
lots more felix fixes
8 years ago
Alexis Beingessner
fadf50dc7d
many many pnkfelix fixes
8 years ago
Alexis Beingessner
35f68b4107
OBRM for aturon
8 years ago
Alexis Beingessner
fe09c847aa
vec fixes for huonw
8 years ago
Alexis Beingessner
b1529f107e
fixups for aturon
8 years ago
Alexis Beingessner
8685cdba24
fixup atomics
8 years ago
Alexis Beingessner
f8fdc70bc3
expand lifetime splitting to show IterMut is totally safe
8 years ago
Alexis Beingessner
1e43aaa054
fix accident
8 years ago
Alexis Beingessner
750d0bccde
remove subtyping from coercions, it's something else
8 years ago
Alexis Beingessner
a8f62683fb
clarify casts are checked at compile time
8 years ago
Alexis Beingessner
986d7980c9
remove redundant explanation
8 years ago
Alexis Beingessner
b08d4dde35
explain phantom
8 years ago
Alexis Beingessner
2479c91cf7
get into the weeds over GEP and allocations
8 years ago
Alexis Beingessner
9d578c5d11
UB is src bzns
8 years ago
Alexis Beingessner
42629127a0
mention void pointers
8 years ago
Alexis Beingessner
3ddcf0929c
clean up vec chapter of tarpl
8 years ago
Alexis Beingessner
7415230ad1
flesh out void types
8 years ago
Alexis Beingessner
42ed931268
some conversions cleanup
8 years ago
Alexis Beingessner
e8f82c31c4
fixup and cool example for checked-uninit
8 years ago
Alexis Beingessner
9a6c06731f
fix up lifetimes
8 years ago
Alexis Beingessner
dae4f5665c
fix typo
8 years ago
Alexis Beingessner
fe26a882c7
no really I deleted you
8 years ago
Alexis Beingessner
745dcebe39
shard out misc section on lifetimes properly
8 years ago
Alexis Beingessner
df793ee850
update subtyping to be a bit clearer about reference variance
8 years ago
Alexis Beingessner
a348171e67
properly remove moved text
8 years ago