Skip to content

Commit 195b23b

Browse files
committed
Restore Writer.write_char, see #10861.
1 parent 239fb1f commit 195b23b

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed

src/libstd/io/mem.rs

+10
Original file line numberDiff line numberDiff line change
@@ -419,6 +419,16 @@ mod test {
419419
assert_eq!(r.read_to_str(), ~"testingtesting\ntesting");
420420
}
421421
422+
#[test]
423+
fn test_write_char() {
424+
let mut writer = MemWriter::new();
425+
writer.write_char('a');
426+
writer.write_char('\n');
427+
writer.write_char('ệ');
428+
let mut r = BufReader::new(*writer.inner_ref());
429+
assert_eq!(r.read_to_str(), ~"a\nệ");
430+
}
431+
422432
#[test]
423433
fn test_read_whole_string_bad() {
424434
let buf = [0xff];

src/libstd/io/mod.rs

+8
Original file line numberDiff line numberDiff line change
@@ -284,6 +284,7 @@ Out of scope
284284
#[allow(missing_doc)];
285285

286286
use cast;
287+
use char::Char;
287288
use condition::Guard;
288289
use container::Container;
289290
use int;
@@ -902,6 +903,13 @@ pub trait Writer {
902903
self.write(['\n' as u8]);
903904
}
904905

906+
/// Write a single char, encoded as UTF-8.
907+
fn write_char(&mut self, c: char) {
908+
let mut buf = [0u8, ..4];
909+
let n = c.encode_utf8(buf.as_mut_slice());
910+
self.write(buf.slice_to(n));
911+
}
912+
905913
/// Write the result of passing n through `int::to_str_bytes`.
906914
fn write_int(&mut self, n: int) {
907915
int::to_str_bytes(n, 10u, |bytes| self.write(bytes))

0 commit comments

Comments
 (0)