|
@@ -326,7 +326,7 @@ impl Url {
|
|
|
} else {
|
|
} else {
|
|
|
assert_eq!(self.byte_at(self.host_end), b':');
|
|
assert_eq!(self.byte_at(self.host_end), b':');
|
|
|
let port_str = self.slice(self.host_end + 1..self.path_start);
|
|
let port_str = self.slice(self.host_end + 1..self.path_start);
|
|
|
- assert_eq!(self.port, Some(port_str.parse::<u16>().unwrap()));
|
|
|
|
|
|
|
+ assert_eq!(self.port, Some(port_str.parse::<u16>().expect("Couldn't parse port?")));
|
|
|
}
|
|
}
|
|
|
assert_eq!(self.byte_at(self.path_start), b'/');
|
|
assert_eq!(self.byte_at(self.path_start), b'/');
|
|
|
} else {
|
|
} else {
|
|
@@ -350,7 +350,7 @@ impl Url {
|
|
|
assert!(fragment_start > query_start);
|
|
assert!(fragment_start > query_start);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- let other = Url::parse(self.as_str()).unwrap();
|
|
|
|
|
|
|
+ let other = Url::parse(self.as_str()).expect("Failed to parse myself?");
|
|
|
assert_eq!(&self.serialization, &other.serialization);
|
|
assert_eq!(&self.serialization, &other.serialization);
|
|
|
assert_eq!(self.scheme_end, other.scheme_end);
|
|
assert_eq!(self.scheme_end, other.scheme_end);
|
|
|
assert_eq!(self.username_end, other.username_end);
|
|
assert_eq!(self.username_end, other.username_end);
|
|
@@ -789,16 +789,21 @@ impl Url {
|
|
|
form_urlencoded::Serializer::for_suffix(query, query_start + "?".len())
|
|
form_urlencoded::Serializer::for_suffix(query, query_start + "?".len())
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- fn take_after_path(&mut self) -> (u32, String) {
|
|
|
|
|
|
|
+ fn take_after_path(&mut self) -> String {
|
|
|
match (self.query_start, self.fragment_start) {
|
|
match (self.query_start, self.fragment_start) {
|
|
|
- (Some(i), _) | (None, Some(i)) => (i, self.slice(i..).to_owned()),
|
|
|
|
|
- (None, None) => (to_u32(self.serialization.len()).unwrap(), String::new())
|
|
|
|
|
|
|
+ (Some(i), _) | (None, Some(i)) => {
|
|
|
|
|
+ let after_path = self.slice(i..).to_owned();
|
|
|
|
|
+ self.serialization.truncate(i as usize);
|
|
|
|
|
+ after_path
|
|
|
|
|
+ },
|
|
|
|
|
+ (None, None) => String::new(),
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/// Change this URL’s path.
|
|
/// Change this URL’s path.
|
|
|
pub fn set_path(&mut self, mut path: &str) {
|
|
pub fn set_path(&mut self, mut path: &str) {
|
|
|
- let (old_after_path_pos, after_path) = self.take_after_path();
|
|
|
|
|
|
|
+ let after_path = self.take_after_path();
|
|
|
|
|
+ let old_after_path_pos = to_u32(self.serialization.len()).unwrap();
|
|
|
let cannot_be_a_base = self.cannot_be_a_base();
|
|
let cannot_be_a_base = self.cannot_be_a_base();
|
|
|
let scheme_type = SchemeType::from(self.scheme());
|
|
let scheme_type = SchemeType::from(self.scheme());
|
|
|
self.serialization.truncate(self.path_start as usize);
|
|
self.serialization.truncate(self.path_start as usize);
|