diff options
| author | Rolf Timmermans <rolftimmermans@voormedia.com> | 2014-12-21 00:40:15 +0100 |
|---|---|---|
| committer | Rolf Timmermans <rolftimmermans@voormedia.com> | 2014-12-22 10:49:47 +0100 |
| commit | 903f5c43604e5cd37fb7f2b62e356259d3043db9 (patch) | |
| tree | 6b43f597dc4b88745a34bcddd2bf15b3a598e3be /src/libserialize | |
| parent | fc30518be9774e7661739eb29a9bca38f31505c5 (diff) | |
| download | rust-903f5c43604e5cd37fb7f2b62e356259d3043db9.tar.gz rust-903f5c43604e5cd37fb7f2b62e356259d3043db9.zip | |
Avoid allocations.
Diffstat (limited to 'src/libserialize')
| -rw-r--r-- | src/libserialize/json.rs | 43 |
1 files changed, 35 insertions, 8 deletions
diff --git a/src/libserialize/json.rs b/src/libserialize/json.rs index aa628a71f4b..9aea6648349 100644 --- a/src/libserialize/json.rs +++ b/src/libserialize/json.rs @@ -331,14 +331,41 @@ pub fn escape_bytes(wr: &mut io::Writer, bytes: &[u8]) -> Result<(), io::IoError for (i, byte) in bytes.iter().enumerate() { let escaped = match *byte { - b'"' => "\\\"".into_cow(), - b'\\' => "\\\\".into_cow(), - b'\x08' => "\\b".into_cow(), - b'\x0c' => "\\f".into_cow(), - b'\n' => "\\n".into_cow(), - b'\r' => "\\r".into_cow(), - b'\t' => "\\t".into_cow(), - b'\x00'...b'\x1f' | b'\x7f' => format!("\\u00{:0>2x}", *byte).into_cow(), + b'"' => "\\\"", + b'\\' => "\\\\", + b'\x00' => "\\u0000", + b'\x01' => "\\u0001", + b'\x02' => "\\u0002", + b'\x03' => "\\u0003", + b'\x04' => "\\u0004", + b'\x05' => "\\u0005", + b'\x06' => "\\u0006", + b'\x07' => "\\u0007", + b'\x08' => "\\b", + b'\t' => "\\t", + b'\n' => "\\n", + b'\x0b' => "\\u000b", + b'\x0c' => "\\f", + b'\r' => "\\r", + b'\x0e' => "\\u000e", + b'\x0f' => "\\u000f", + b'\x10' => "\\u0010", + b'\x11' => "\\u0011", + b'\x12' => "\\u0012", + b'\x13' => "\\u0013", + b'\x14' => "\\u0014", + b'\x15' => "\\u0015", + b'\x16' => "\\u0016", + b'\x17' => "\\u0017", + b'\x18' => "\\u0018", + b'\x19' => "\\u0019", + b'\x1a' => "\\u001a", + b'\x1b' => "\\u001b", + b'\x1c' => "\\u001c", + b'\x1d' => "\\u001d", + b'\x1e' => "\\u001e", + b'\x1f' => "\\u001f", + b'\x7f' => "\\u007f", _ => { continue; } }; |
