Steven Fackler e7c1f57d6c Back io::stdin with a global singleton BufferedReader
io::stdin returns a new `BufferedReader` each time it's called, which
results in some very confusing behavior with disappearing output. It now
returns a `StdinReader`, which wraps a global singleton
`Arc<Mutex<BufferedReader<StdReader>>`. `Reader` is implemented directly
on `StdinReader`. However, `Buffer` is not, as the `fill_buf` method is
fundamentaly un-thread safe. A `lock` method is defined on `StdinReader`
which returns a smart pointer wrapping the underlying `BufferedReader`
while guaranteeing mutual exclusion.

Code that treats the return value of io::stdin as implementing `Buffer`
will break. Add a call to `lock`:

```rust
io::stdin().lines()
// =>
io::stdin().lock().lines()
```

Closes #14434

[breaking-change]
2014-12-03 23:18:52 -08:00
..
2014-11-26 16:50:14 -08:00
2014-11-25 17:41:54 -08:00
2014-11-27 11:34:43 +02:00
2014-11-20 23:45:42 +05:30
2014-11-25 17:41:54 -08:00
2014-11-23 15:26:53 -08:00
2014-11-26 16:50:14 -08:00
2014-11-26 18:10:57 -08:00
2014-11-26 16:50:14 -08:00
2014-11-27 15:31:11 +01:00