pub(crate) struct AttributeStorage(DomRefCell<Vec<AttributeEntry>>);Expand description
Storage for an element’s attributes. Contains an internal DomRefCell so that
ensure_dom can split its borrow around Attr::new() allocation, preventing
GC-during-allocation panics from double-borrowing.
Tuple Fields§
§0: DomRefCell<Vec<AttributeEntry>>Implementations§
Source§impl AttributeStorage
impl AttributeStorage
Sourcepub(crate) fn borrow(&self) -> AttributesBorrow<'_>
pub(crate) fn borrow(&self) -> AttributesBorrow<'_>
Borrow the attributes for read access with convenient AttrRef iteration.
Sourcepub(crate) unsafe fn borrow_for_layout(&self) -> &Vec<AttributeEntry>
pub(crate) unsafe fn borrow_for_layout(&self) -> &Vec<AttributeEntry>
Borrow the underlying entries for layout access (unsafe).
Sourcepub(crate) fn push_raw(&self, data: ContentAttributeData)
pub(crate) fn push_raw(&self, data: ContentAttributeData)
Push raw attribute data.
Sourcepub(crate) fn remove(&self, index: usize) -> AttributeEntry
pub(crate) fn remove(&self, index: usize) -> AttributeEntry
Remove an attribute by index, returning the entry.
Sourcepub(crate) fn set(&self, index: usize, entry: AttributeEntry)
pub(crate) fn set(&self, index: usize, entry: AttributeEntry)
Set an attribute entry by index.
Sourcepub(crate) fn ensure_dom(
&self,
index: usize,
element: &Element,
) -> DomRoot<Attr>
pub(crate) fn ensure_dom( &self, index: usize, element: &Element, ) -> DomRoot<Attr>
Ensure entry at index is a Dom Attr node, materializing if needed.
Returns a DomRoot<Attr>.
This method carefully splits the mutable borrow around the Attr::new()
allocation so that GC tracing can safely borrow the storage.
Trait Implementations§
Source§impl Default for AttributeStorage
impl Default for AttributeStorage
Source§fn default() -> AttributeStorage
fn default() -> AttributeStorage
Returns the “default value” for a type. Read more
Source§impl MallocSizeOf for AttributeStorage
impl MallocSizeOf for AttributeStorage
Source§fn size_of(&self, ops: &mut MallocSizeOfOps) -> usize
fn size_of(&self, ops: &mut MallocSizeOfOps) -> usize
Measure the heap usage of all descendant heap-allocated structures, but
not the space taken up by the value itself.
Auto Trait Implementations§
impl !Freeze for AttributeStorage
impl !RefUnwindSafe for AttributeStorage
impl !Send for AttributeStorage
impl !Sync for AttributeStorage
impl Unpin for AttributeStorage
impl UnsafeUnpin for AttributeStorage
impl !UnwindSafe for AttributeStorage
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Filterable for T
impl<T> Filterable for T
Source§fn filterable(
self,
filter_name: &'static str,
) -> RequestFilterDataProvider<T, fn(DataRequest<'_>) -> bool>
fn filterable( self, filter_name: &'static str, ) -> RequestFilterDataProvider<T, fn(DataRequest<'_>) -> bool>
Creates a filterable data provider with the given name for debugging. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> MaybeBoxed<Box<T>> for T
impl<T> MaybeBoxed<Box<T>> for T
Source§fn maybe_boxed(self) -> Box<T>
fn maybe_boxed(self) -> Box<T>
Convert
Source§impl<T> MaybeBoxed<T> for T
impl<T> MaybeBoxed<T> for T
Source§fn maybe_boxed(self) -> T
fn maybe_boxed(self) -> T
Convert