diff --git a/src/components/script/dom/bindings/codegen/CodegenRust.py b/src/components/script/dom/bindings/codegen/CodegenRust.py index ddf2e7bd9d6..8174a37fa81 100644 --- a/src/components/script/dom/bindings/codegen/CodegenRust.py +++ b/src/components/script/dom/bindings/codegen/CodegenRust.py @@ -2909,17 +2909,16 @@ class CGEnum(CGThing): def __init__(self, enum): CGThing.__init__(self) inner = """ -use dom::bindings::utils::EnumEntry; #[repr(uint)] pub enum valuelist { %s } -pub static strings: &'static [EnumEntry] = &[ +pub static strings: &'static [&'static str] = &[ %s, ]; """ % (",\n ".join(map(getEnumValueName, enum.values())), - ",\n ".join(['EnumEntry {value: &"' + val + '", length: ' + str(len(val)) + '}' for val in enum.values()])) + ",\n ".join(['&"%s"' % val for val in enum.values()])) self.cgRoot = CGList([ CGNamespace.build([enum.identifier.name + "Values"], diff --git a/src/components/script/dom/bindings/utils.rs b/src/components/script/dom/bindings/utils.rs index db6cb3290d7..0dce9953c3a 100644 --- a/src/components/script/dom/bindings/utils.rs +++ b/src/components/script/dom/bindings/utils.rs @@ -566,14 +566,9 @@ pub fn InitIds(cx: *JSContext, specs: &[JSPropertySpec], ids: &mut [jsid]) -> bo true } -pub struct EnumEntry { - value: &'static str, - length: uint -} - pub fn FindEnumStringIndex(cx: *JSContext, v: JSVal, - values: &[EnumEntry]) -> Result { + values: &[&'static str]) -> Result { unsafe { let jsstr = JS_ValueToString(cx, v); if jsstr.is_null() { @@ -585,16 +580,10 @@ pub fn FindEnumStringIndex(cx: *JSContext, return Err(()); } for (i, value) in values.iter().enumerate() { - if value.length != length as uint { - continue; - } - let mut equal = true; - for j in range(0, length as int) { - if value.value[j] as u16 != *chars.offset(j) { - equal = false; - break; - } - }; + let equal = value.len() == length as uint && + range(0, length as int).all(|j| { + value[j] as u16 == *chars.offset(j) + }); if equal { return Ok(i);