Use util::str::str_join in more places

Instead of intermediate allocations of `Vec`s, we should utilize
`str_join` which operates on iterators
This commit is contained in:
Corey Farwell 2015-09-28 19:57:06 -04:00
parent 2857e547be
commit f14f09e886
4 changed files with 7 additions and 10 deletions

View file

@ -15,11 +15,10 @@ use selectors::parser::PseudoElement;
use std::ascii::AsciiExt;
use std::borrow::ToOwned;
use std::cell::Ref;
use std::slice::SliceConcatExt;
use string_cache::Atom;
use style::properties::PropertyDeclaration;
use style::properties::{is_supported_property, longhands_from_shorthand, parse_one_declaration};
use util::str::DOMString;
use util::str::{DOMString, str_join};
// http://dev.w3.org/csswg/cssom/#the-cssstyledeclaration-interface
#[dom_struct]
@ -50,8 +49,8 @@ macro_rules! css_properties(
);
fn serialize_list(list: &[Ref<PropertyDeclaration>]) -> DOMString {
let strings: Vec<_> = list.iter().map(|d| d.value()).collect();
strings.join(" ")
let str_iter = list.iter().map(|d| d.value());
str_join(str_iter, " ")
}
impl CSSStyleDeclaration {

View file

@ -98,7 +98,7 @@ use std::sync::mpsc::channel;
use string_cache::{Atom, QualName};
use time;
use url::Url;
use util::str::{DOMString, split_html_space_chars};
use util::str::{DOMString, split_html_space_chars, str_join};
#[derive(JSTraceable, PartialEq, HeapSizeOf)]
pub enum IsHTMLDocument {
@ -1443,7 +1443,7 @@ impl DocumentMethods for Document {
Some(ref title) => {
// Steps 3-4.
let value = Node::collect_text_contents(title.r().children());
split_html_space_chars(&value).collect::<Vec<_>>().join(" ")
str_join(split_html_space_chars(&value), " ")
},
}
}

View file

@ -18,7 +18,7 @@ use dom::htmlelement::{HTMLElement, HTMLElementTypeId};
use dom::node::{Node, NodeTypeId};
use dom::virtualmethods::VirtualMethods;
use std::cell::Cell;
use util::str::{DOMString, split_html_space_chars};
use util::str::{DOMString, split_html_space_chars, str_join};
#[dom_struct]
pub struct HTMLOptionElement {
@ -93,8 +93,7 @@ impl HTMLOptionElementMethods for HTMLOptionElement {
let node = NodeCast::from_ref(self);
let mut content = String::new();
collect_text(&node, &mut content);
let v: Vec<&str> = split_html_space_chars(&content).collect();
v.join(" ")
str_join(split_html_space_chars(&content), " ")
}
// https://www.whatwg.org/html/#dom-option-text

View file

@ -24,7 +24,6 @@
#![feature(str_utf16)]
#![feature(unicode)]
#![feature(vec_push_all)]
#![feature(slice_concat_ext)]
#![deny(unsafe_code)]
#![allow(non_snake_case)]