aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--components/script/dom/attr.rs23
1 files changed, 11 insertions, 12 deletions
diff --git a/components/script/dom/attr.rs b/components/script/dom/attr.rs
index 7dcc76e6caf..1113706de92 100644
--- a/components/script/dom/attr.rs
+++ b/components/script/dom/attr.rs
@@ -233,28 +233,27 @@ impl Attr {
}
#[allow(unsafe_code)]
-pub trait AttrHelpersForLayout {
- unsafe fn value_forever(&self) -> &'static AttrValue;
- unsafe fn value_ref_forever(&self) -> &'static str;
- unsafe fn value_tokens_forever(&self) -> Option<&'static [Atom]>;
- unsafe fn local_name_atom_forever(&self) -> LocalName;
+pub trait AttrHelpersForLayout<'dom> {
+ unsafe fn value_forever(self) -> &'dom AttrValue;
+ unsafe fn value_ref_forever(self) -> &'dom str;
+ unsafe fn value_tokens_forever(self) -> Option<&'dom [Atom]>;
+ unsafe fn local_name_atom_forever(self) -> LocalName;
}
#[allow(unsafe_code)]
-impl AttrHelpersForLayout for LayoutDom<'_, Attr> {
+impl<'dom> AttrHelpersForLayout<'dom> for LayoutDom<'dom, Attr> {
#[inline]
- unsafe fn value_forever(&self) -> &'static AttrValue {
- // This transmute is used to cheat the lifetime restriction.
- mem::transmute::<&AttrValue, &AttrValue>((*self.unsafe_get()).value.borrow_for_layout())
+ unsafe fn value_forever(self) -> &'dom AttrValue {
+ (*self.unsafe_get()).value.borrow_for_layout()
}
#[inline]
- unsafe fn value_ref_forever(&self) -> &'static str {
+ unsafe fn value_ref_forever(self) -> &'dom str {
&**self.value_forever()
}
#[inline]
- unsafe fn value_tokens_forever(&self) -> Option<&'static [Atom]> {
+ unsafe fn value_tokens_forever(self) -> Option<&'dom [Atom]> {
// This transmute is used to cheat the lifetime restriction.
match *self.value_forever() {
AttrValue::TokenList(_, ref tokens) => Some(tokens),
@@ -263,7 +262,7 @@ impl AttrHelpersForLayout for LayoutDom<'_, Attr> {
}
#[inline]
- unsafe fn local_name_atom_forever(&self) -> LocalName {
+ unsafe fn local_name_atom_forever(self) -> LocalName {
(*self.unsafe_get()).identifier.local_name.clone()
}
}