Skip to content

Commit 2fe82a4

Browse files
committed
Replace ~[T] to std::vec_ng::Vec<T> as possible
1 parent 076e13a commit 2fe82a4

File tree

12 files changed

+83
-62
lines changed

12 files changed

+83
-62
lines changed

src/examples/server/apache_fake/main.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ extern crate extra;
88
extern crate time;
99
extern crate http;
1010

11+
use std::vec_ng::Vec;
12+
1113
use std::io::net::ip::{SocketAddr, Ipv4Addr};
1214
use std::io::Writer;
1315

@@ -44,13 +46,13 @@ impl Server for ApacheFakeServer {
4446
weak: false,
4547
opaque_tag: ~"501b29-b1-4a285ed47404a" });
4648
w.headers.accept_ranges = Some(headers::accept_ranges::RangeUnits(
47-
~[headers::accept_ranges::Bytes]));
49+
Vec::from_slice([headers::accept_ranges::Bytes])));
4850
w.headers.content_length = Some(177);
4951
w.headers.vary = Some(~"Accept-Encoding");
5052
w.headers.content_type = Some(headers::content_type::MediaType {
5153
type_: ~"text",
5254
subtype: ~"html",
53-
parameters: ~[]
55+
parameters: Vec::new()
5456
});
5557
w.headers.extensions.insert(~"X-Pad", ~"avoid browser bug");
5658

src/examples/server/hello_world/main.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ extern crate extra;
66
extern crate time;
77
extern crate http;
88

9+
use std::vec_ng::Vec;
10+
911
use std::io::net::ip::{SocketAddr, Ipv4Addr};
1012
use std::io::Writer;
1113

@@ -26,7 +28,7 @@ impl Server for HelloWorldServer {
2628
w.headers.content_type = Some(MediaType {
2729
type_: ~"text",
2830
subtype: ~"plain",
29-
parameters: ~[(~"charset", ~"UTF-8")]
31+
parameters: Vec::from_slice([(~"charset", ~"UTF-8")])
3032
});
3133
w.headers.server = Some(~"Example");
3234

src/examples/server/info/main.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ extern crate extra;
77
extern crate time;
88
extern crate http;
99

10+
use std::vec_ng::Vec;
11+
1012
use std::io::net::ip::{SocketAddr, Ipv4Addr};
1113
use std::io::Writer;
1214

@@ -27,7 +29,7 @@ impl Server for InfoServer {
2729
w.headers.content_type = Some(MediaType {
2830
type_: ~"text",
2931
subtype: ~"html",
30-
parameters: ~[(~"charset", ~"UTF-8")]
32+
parameters: Vec::from_slice([(~"charset", ~"UTF-8")])
3133
});
3234
w.headers.server = Some(~"Rust Thingummy/0.0-pre");
3335
w.write(bytes!("<!DOCTYPE html><title>Rust HTTP server</title>")).unwrap();

src/examples/server/request_uri/main.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ extern crate extra;
1010
extern crate time;
1111
extern crate http;
1212

13+
use std::vec_ng::Vec;
14+
1315
use std::io::net::ip::{SocketAddr, Ipv4Addr};
1416
use std::io::Writer;
1517

@@ -47,7 +49,7 @@ impl Server for RequestUriServer {
4749
(&Options, &Star) => {
4850
// Querying server capabilities. That's nice and simple. I can handle these methods:
4951
// (TODO: let user code override this, providing a default method.)
50-
w.headers.allow = Some(~[Get, Head, Post, Put, Delete, Trace, Options, Connect, Patch]);
52+
w.headers.allow = Some(Vec::from_slice([Get, Head, Post, Put, Delete, Trace, Options, Connect, Patch]));
5153
w.headers.content_length = Some(0);
5254
return;
5355
},
@@ -62,7 +64,7 @@ impl Server for RequestUriServer {
6264
w.headers.content_type = Some(MediaType {
6365
type_: ~"text",
6466
subtype: ~"html",
65-
parameters: ~[]
67+
parameters: Vec::new()
6668
});
6769

6870
w.write(bytes!("<!DOCTYPE html><title>Rust HTTP server</title>")).unwrap();

src/http/buffer.rs

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
33
use std::io::{IoResult, Stream};
44
use std::cmp::min;
5+
use std::vec_ng::Vec;
56
use std::vec;
67
use std::num::ToStrRadix;
78

@@ -12,22 +13,22 @@ static WRITE_BUF_SIZE: uint = 0x10000;
1213

1314
pub struct BufferedStream<T> {
1415
wrapped: T,
15-
read_buffer: ~[u8],
16+
read_buffer: Vec<u8>,
1617
// The current position in the buffer
1718
read_pos: uint,
1819
// The last valid position in the reader
1920
read_max: uint,
20-
write_buffer: ~[u8],
21+
write_buffer: Vec<u8>,
2122
write_len: uint,
2223

2324
writing_chunked_body: bool,
2425
}
2526

2627
impl<T: Stream> BufferedStream<T> {
2728
pub fn new(stream: T) -> BufferedStream<T> {
28-
let mut read_buffer = vec::with_capacity(READ_BUF_SIZE);
29+
let mut read_buffer = Vec::with_capacity(READ_BUF_SIZE);
2930
unsafe { read_buffer.set_len(READ_BUF_SIZE); }
30-
let mut write_buffer = vec::with_capacity(WRITE_BUF_SIZE);
31+
let mut write_buffer = Vec::with_capacity(WRITE_BUF_SIZE);
3132
unsafe { write_buffer.set_len(WRITE_BUF_SIZE); }
3233
BufferedStream {
3334
wrapped: stream,
@@ -52,14 +53,14 @@ impl<T: Reader> BufferedStream<T> {
5253
(0, _) => fail!("poke called when buffer is full"),
5354
(_, _) => self.read_pos -= 1,
5455
}
55-
self.read_buffer[self.read_pos] = byte;
56+
self.read_buffer.as_mut_slice()[self.read_pos] = byte;
5657
}
5758

5859
#[inline]
5960
fn fill_buffer(&mut self) -> IoResult<()> {
6061
assert_eq!(self.read_pos, self.read_max);
6162
self.read_pos = 0;
62-
match self.wrapped.read(self.read_buffer) {
63+
match self.wrapped.read(self.read_buffer.as_mut_slice()) {
6364
Ok(i) => {
6465
self.read_max = i;
6566
Ok(())
@@ -80,7 +81,7 @@ impl<T: Reader> BufferedStream<T> {
8081
try!(self.fill_buffer());
8182
}
8283
self.read_pos += 1;
83-
Ok(self.read_buffer[self.read_pos - 1])
84+
Ok(self.read_buffer.as_slice()[self.read_pos - 1])
8485
}
8586
}
8687

@@ -135,17 +136,20 @@ impl<T: Writer> Writer for BufferedStream<T> {
135136
try!(self.wrapped.write(bytes!("\r\n")));
136137
}
137138
} else {
138-
unsafe { self.write_buffer.mut_slice_from(self.write_len).copy_memory(buf); }
139+
unsafe {
140+
let len = self.write_buffer.len();
141+
self.write_buffer.mut_slice(self.write_len, len).copy_memory(buf);
142+
}
139143

140144
self.write_len += buf.len();
141145
if self.write_len == self.write_buffer.len() {
142146
if self.writing_chunked_body {
143147
let s = format!("{}\r\n", self.write_len.to_str_radix(16));
144148
try!(self.wrapped.write(s.as_bytes()));
145-
try!(self.wrapped.write(self.write_buffer));
149+
try!(self.wrapped.write(self.write_buffer.as_slice()));
146150
try!(self.wrapped.write(bytes!("\r\n")));
147151
} else {
148-
try!(self.wrapped.write(self.write_buffer));
152+
try!(self.wrapped.write(self.write_buffer.as_slice()));
149153
}
150154
self.write_len = 0;
151155
}

src/http/headers/accept_ranges.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
//! The Accept-Ranges request header, defined in RFC 2616, Section 14.5.
22
3+
use std::vec_ng::Vec;
34
use std::io::IoResult;
45
use std::ascii::StrAsciiExt;
56

@@ -13,7 +14,7 @@ pub enum RangeUnit {
1314
#[deriving(Clone,Eq)]
1415
// RFC 2616: acceptable-ranges = 1#range-unit | "none"
1516
pub enum AcceptableRanges {
16-
RangeUnits(~[RangeUnit]),
17+
RangeUnits(Vec<RangeUnit>),
1718
NoAcceptableRanges,
1819
}
1920

@@ -23,7 +24,7 @@ static BYTES: &'static [u8] = bytes!("bytes");
2324
impl super::HeaderConvertible for AcceptableRanges {
2425
fn from_stream<R: Reader>(reader: &mut super::HeaderValueByteIterator<R>)
2526
-> Option<AcceptableRanges> {
26-
let mut range_units = ~[];
27+
let mut range_units = Vec::new();
2728
loop {
2829
match reader.read_token() {
2930
Some(token) => {

src/http/headers/connection.rs

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -58,24 +58,25 @@ impl super::HeaderConvertible for Connection {
5858

5959
#[test]
6060
fn test_connection() {
61+
use std::vec_ng::Vec;
6162
use headers::test_utils::{assert_conversion_correct,
6263
assert_interpretation_correct,
6364
assert_invalid};
64-
assert_conversion_correct("close", ~[Close]);
65-
assert_conversion_correct("Foo", ~[Token(~"Foo")]);
66-
assert_conversion_correct("Foo, Keep-Alive", ~[Token(~"Foo"), Token(~"Keep-Alive")]);
67-
assert_conversion_correct("Foo, close", ~[Token(~"Foo"), Close]);
68-
assert_conversion_correct("close, Bar", ~[Close, Token(~"Bar")]);
65+
assert_conversion_correct("close", Vec::from_slice([Close]));
66+
assert_conversion_correct("Foo", Vec::from_slice([Token(~"Foo")]));
67+
assert_conversion_correct("Foo, Keep-Alive", Vec::from_slice([Token(~"Foo"), Token(~"Keep-Alive")]));
68+
assert_conversion_correct("Foo, close", Vec::from_slice([Token(~"Foo"), Close]));
69+
assert_conversion_correct("close, Bar", Vec::from_slice([Close, Token(~"Bar")]));
6970

70-
assert_interpretation_correct("close", ~[Close]);
71-
assert_interpretation_correct("foo", ~[Token(~"Foo")]);
72-
assert_interpretation_correct("close \r\n , keep-ALIVE", ~[Close, Token(~"Keep-Alive")]);
73-
assert_interpretation_correct("foo,close", ~[Token(~"Foo"), Close]);
74-
assert_interpretation_correct("close, bar", ~[Close, Token(~"Bar")]);
71+
assert_interpretation_correct("close", Vec::from_slice([Close]));
72+
assert_interpretation_correct("foo", Vec::from_slice([Token(~"Foo")]));
73+
assert_interpretation_correct("close \r\n , keep-ALIVE", Vec::from_slice([Close, Token(~"Keep-Alive")]));
74+
assert_interpretation_correct("foo,close", Vec::from_slice([Token(~"Foo"), Close]));
75+
assert_interpretation_correct("close, bar", Vec::from_slice([Close, Token(~"Bar")]));
7576
assert_interpretation_correct("CLOSE", Close);
7677

77-
assert_invalid::<~[Connection]>("foo bar");
78-
assert_invalid::<~[Connection]>("foo bar");
79-
assert_invalid::<~[Connection]>("foo, bar baz");
80-
assert_invalid::<~[Connection]>("foo, , baz");
78+
assert_invalid::<Vec<Connection>>("foo bar");
79+
assert_invalid::<Vec<Connection>>("foo bar");
80+
assert_invalid::<Vec<Connection>>("foo, bar baz");
81+
assert_invalid::<Vec<Connection>>("foo, , baz");
8182
}

src/http/headers/content_type.rs

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
11
//! The Content-Type entity header, defined in RFC 2616, Section 14.17.
22
use headers::serialization_utils::{push_parameters, WriterUtil};
3+
use std::vec_ng::Vec;
34
use std::io::IoResult;
45
use std::fmt;
56

67
#[deriving(Clone, Eq)]
78
pub struct MediaType {
89
type_: ~str,
910
subtype: ~str,
10-
parameters: ~[(~str, ~str)],
11+
parameters: Vec<(~str, ~str)>,
1112
}
1213

13-
pub fn MediaType(type_: ~str, subtype: ~str, parameters: ~[(~str, ~str)]) -> MediaType {
14+
pub fn MediaType(type_: ~str, subtype: ~str, parameters: Vec<(~str, ~str)>) -> MediaType {
1415
MediaType {
1516
type_: type_,
1617
subtype: subtype,
@@ -28,7 +29,7 @@ impl fmt::Show for MediaType {
2829
//s.push_parameters(self.parameters);
2930
//s
3031
let s = format!("{}/{}", self.type_, self.subtype);
31-
f.buf.write(push_parameters(s, self.parameters).as_bytes())
32+
f.buf.write(push_parameters(s, self.parameters.as_slice()).as_bytes())
3233
}
3334
}
3435

@@ -63,7 +64,7 @@ impl super::HeaderConvertible for MediaType {
6364
try!(writer.write_token(self.type_));
6465
try!(writer.write(['/' as u8]));
6566
try!(writer.write_token(self.subtype));
66-
writer.write_parameters(self.parameters)
67+
writer.write_parameters(self.parameters.as_slice())
6768
}
6869

6970
fn http_value(&self) -> ~str {
@@ -75,13 +76,13 @@ impl super::HeaderConvertible for MediaType {
7576
fn test_content_type() {
7677
use headers::test_utils::{assert_conversion_correct, assert_interpretation_correct,
7778
assert_invalid};
78-
assert_conversion_correct("type/subtype", MediaType(~"type", ~"subtype", ~[]));
79+
assert_conversion_correct("type/subtype", MediaType(~"type", ~"subtype", Vec::new()));
7980
assert_conversion_correct("type/subtype;key=value",
80-
MediaType(~"type", ~"subtype", ~[(~"key", ~"value")]));
81+
MediaType(~"type", ~"subtype", Vec::from_slice([(~"key", ~"value")])));
8182
assert_conversion_correct("type/subtype;key=value;q=0.1",
82-
MediaType(~"type", ~"subtype", ~[(~"key", ~"value"), (~"q", ~"0.1")]));
83+
MediaType(~"type", ~"subtype", Vec::from_slice([(~"key", ~"value"), (~"q", ~"0.1")])));
8384
assert_interpretation_correct("type/subtype ; key = value ; q = 0.1",
84-
MediaType(~"type", ~"subtype", ~[(~"key", ~"value"), (~"q", ~"0.1")]));
85+
MediaType(~"type", ~"subtype", Vec::from_slice([(~"key", ~"value"), (~"q", ~"0.1")])));
8586

8687
assert_invalid::<MediaType>("");
8788
assert_invalid::<MediaType>("/");

src/http/headers/mod.rs

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
//! known HTTP headers are type checked, rather than being dealt with as strings all the time. Only
55
//! unknown headers are stored in a map in the traditional way.
66
7+
use std::vec_ng::Vec;
78
use std::io::IoResult;
89
use time::{Tm, strptime};
910
use extra::url::Url;
@@ -332,8 +333,8 @@ impl<'a, R: Reader> HeaderValueByteIterator<'a, R> {
332333
///
333334
/// The return value ``None`` is reserved for syntax errors in parameters that exist; a mere
334335
/// absense of parameters will lead to returning an empty vector instead.
335-
fn read_parameters(&mut self) -> Option<~[(~str, ~str)]> {
336-
let mut result = ~[];
336+
fn read_parameters(&mut self) -> Option<Vec<(~str, ~str)>> {
337+
let mut result = Vec::new();
337338
loop {
338339
match self.next() {
339340
//This catches the LWS after the last ';', and can probably be replaced with
@@ -556,9 +557,9 @@ pub trait HeaderConvertible: Eq + Clone {
556557
/// comma.
557558
pub trait CommaListHeaderConvertible: HeaderConvertible {}
558559

559-
impl<T: CommaListHeaderConvertible> HeaderConvertible for ~[T] {
560-
fn from_stream<R: Reader>(reader: &mut HeaderValueByteIterator<R>) -> Option<~[T]> {
561-
let mut result = ~[];
560+
impl<T: CommaListHeaderConvertible> HeaderConvertible for Vec<T> {
561+
fn from_stream<R: Reader>(reader: &mut HeaderValueByteIterator<R>) -> Option<Vec<T>> {
562+
let mut result = Vec::new();
562563
loop {
563564
match HeaderConvertible::from_stream(reader) {
564565
Some(h) => result.push(h),
@@ -871,6 +872,7 @@ macro_rules! headers_mod {
871872
$attr;
872873
873874
#[allow(unused_imports)];
875+
use std::vec_ng::Vec;
874876
use std::io::IoResult;
875877
use extra;
876878
use time;
@@ -1013,11 +1015,11 @@ headers_mod! {
10131015

10141016
// RFC 2616, Section 4.5: General Header Fields
10151017
0, "Cache-Control", "Cache-Control", CacheControl, cache_control, ~str;
1016-
1, "Connection", "Connection", Connection, connection, ~[headers::connection::Connection];
1018+
1, "Connection", "Connection", Connection, connection, Vec<headers::connection::Connection>;
10171019
2, "Date", "Date", Date, date, time::Tm;
10181020
3, "Pragma", "Pragma", Pragma, pragma, ~str;
10191021
4, "Trailer", "Trailer", Trailer, trailer, ~str;
1020-
5, "Transfer-Encoding", "Transfer-Encoding", TransferEncoding, transfer_encoding, ~[headers::transfer_encoding::TransferCoding];
1022+
5, "Transfer-Encoding", "Transfer-Encoding", TransferEncoding, transfer_encoding, Vec<headers::transfer_encoding::TransferCoding>;
10211023
6, "Upgrade", "Upgrade", Upgrade, upgrade, ~str;
10221024
7, "Via", "Via", Via, via, ~str;
10231025
8, "Warning", "Warning", Warning, warning, ~str;
@@ -1044,7 +1046,7 @@ headers_mod! {
10441046
27, "User-Agent", "User-Agent", UserAgent, user_agent, ~str;
10451047

10461048
// RFC 2616, Section 7.1: Entity Header Fields
1047-
28, "Allow", "Allow", Allow, allow, ~[::method::Method];
1049+
28, "Allow", "Allow", Allow, allow, Vec<::method::Method>;
10481050
29, "Content-Encoding", "Content-Encoding", ContentEncoding, content_encoding, ~str;
10491051
30, "Content-Language", "Content-Language", ContentLanguage, content_language, ~str;
10501052
31, "Content-Length", "Content-Length", ContentLength, content_length, uint;
@@ -1064,11 +1066,11 @@ headers_mod! {
10641066

10651067
// RFC 2616, Section 4.5: General Header Fields
10661068
0, "Cache-Control", "Cache-Control", CacheControl, cache_control, ~str;
1067-
1, "Connection", "Connection", Connection, connection, ~[headers::connection::Connection];
1069+
1, "Connection", "Connection", Connection, connection, Vec<headers::connection::Connection>;
10681070
2, "Date", "Date", Date, date, time::Tm;
10691071
3, "Pragma", "Pragma", Pragma, pragma, ~str;
10701072
4, "Trailer", "Trailer", Trailer, trailer, ~str;
1071-
5, "Transfer-Encoding", "Transfer-Encoding", TransferEncoding, transfer_encoding, ~[headers::transfer_encoding::TransferCoding];
1073+
5, "Transfer-Encoding", "Transfer-Encoding", TransferEncoding, transfer_encoding, Vec<headers::transfer_encoding::TransferCoding>;
10721074
6, "Upgrade", "Upgrade", Upgrade, upgrade, ~str;
10731075
7, "Via", "Via", Via, via, ~str;
10741076
8, "Warning", "Warning", Warning, warning, ~str;
@@ -1086,7 +1088,7 @@ headers_mod! {
10861088
18, "WWW-Authenticate", "Www-Authenticate", WwwAuthenticate, www_authenticate, ~str;
10871089

10881090
// RFC 2616, Section 7.1: Entity Header Fields
1089-
19, "Allow", "Allow", Allow, allow, ~[::method::Method];
1091+
19, "Allow", "Allow", Allow, allow, Vec<::method::Method>;
10901092
20, "Content-Encoding", "Content-Encoding", ContentEncoding, content_encoding, ~str;
10911093
21, "Content-Language", "Content-Language", ContentLanguage, content_language, ~str;
10921094
22, "Content-Length", "Content-Length", ContentLength, content_length, uint;

0 commit comments

Comments
 (0)