mirror of
https://github.com/servo/servo.git
synced 2025-08-04 13:10:20 +01:00
Make a bunch of types 'static.
The reasoning for this is explained in a comment in the next patch. MozReview-Commit-ID: FQgDY77mg3B
This commit is contained in:
parent
c369d0708c
commit
586a21e1dd
4 changed files with 12 additions and 12 deletions
|
@ -62,7 +62,7 @@ macro_rules! with_all_bounds {
|
||||||
/// NB: We need Clone so that we can derive(Clone) on struct with that
|
/// NB: We need Clone so that we can derive(Clone) on struct with that
|
||||||
/// are parameterized on SelectorImpl. See
|
/// are parameterized on SelectorImpl. See
|
||||||
/// https://github.com/rust-lang/rust/issues/26925
|
/// https://github.com/rust-lang/rust/issues/26925
|
||||||
pub trait SelectorImpl: Clone + Sized {
|
pub trait SelectorImpl: Clone + Sized + 'static {
|
||||||
type AttrValue: $($InSelector)*;
|
type AttrValue: $($InSelector)*;
|
||||||
type Identifier: $($InSelector)* + PrecomputedHash;
|
type Identifier: $($InSelector)* + PrecomputedHash;
|
||||||
type ClassName: $($InSelector)* + PrecomputedHash;
|
type ClassName: $($InSelector)* + PrecomputedHash;
|
||||||
|
|
|
@ -69,7 +69,7 @@ macro_rules! offset_of {
|
||||||
/// necessarily) at _exactly_ `MAX_REFCOUNT + 1` references.
|
/// necessarily) at _exactly_ `MAX_REFCOUNT + 1` references.
|
||||||
const MAX_REFCOUNT: usize = (isize::MAX) as usize;
|
const MAX_REFCOUNT: usize = (isize::MAX) as usize;
|
||||||
|
|
||||||
pub struct Arc<T: ?Sized> {
|
pub struct Arc<T: ?Sized + 'static> {
|
||||||
// FIXME(bholley): When NonZero/Shared/Unique are stabilized, we should use
|
// FIXME(bholley): When NonZero/Shared/Unique are stabilized, we should use
|
||||||
// Shared here to get the NonZero optimization. Gankro is working on this.
|
// Shared here to get the NonZero optimization. Gankro is working on this.
|
||||||
//
|
//
|
||||||
|
@ -84,7 +84,7 @@ pub struct Arc<T: ?Sized> {
|
||||||
///
|
///
|
||||||
/// This lets us build arcs that we can mutate before
|
/// This lets us build arcs that we can mutate before
|
||||||
/// freezing, without needing to change the allocation
|
/// freezing, without needing to change the allocation
|
||||||
pub struct UniqueArc<T: ?Sized>(Arc<T>);
|
pub struct UniqueArc<T: ?Sized + 'static>(Arc<T>);
|
||||||
|
|
||||||
impl<T> UniqueArc<T> {
|
impl<T> UniqueArc<T> {
|
||||||
#[inline]
|
#[inline]
|
||||||
|
@ -542,7 +542,7 @@ impl<H> HeaderWithLength<H> {
|
||||||
}
|
}
|
||||||
|
|
||||||
type HeaderSliceWithLength<H, T> = HeaderSlice<HeaderWithLength<H>, T>;
|
type HeaderSliceWithLength<H, T> = HeaderSlice<HeaderWithLength<H>, T>;
|
||||||
pub struct ThinArc<H, T> {
|
pub struct ThinArc<H: 'static, T: 'static> {
|
||||||
ptr: *mut ArcInner<HeaderSliceWithLength<H, [T; 1]>>,
|
ptr: *mut ArcInner<HeaderSliceWithLength<H, [T; 1]>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -563,7 +563,7 @@ fn thin_to_thick<H, T>(thin: *mut ArcInner<HeaderSliceWithLength<H, [T; 1]>>)
|
||||||
fake_slice as *mut ArcInner<HeaderSliceWithLength<H, [T]>>
|
fake_slice as *mut ArcInner<HeaderSliceWithLength<H, [T]>>
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<H, T> ThinArc<H, T> {
|
impl<H: 'static, T: 'static> ThinArc<H, T> {
|
||||||
/// Temporarily converts |self| into a bonafide Arc and exposes it to the
|
/// Temporarily converts |self| into a bonafide Arc and exposes it to the
|
||||||
/// provided callback. The refcount is not modified.
|
/// provided callback. The refcount is not modified.
|
||||||
#[inline(always)]
|
#[inline(always)]
|
||||||
|
@ -593,19 +593,19 @@ impl<H, T> Deref for ThinArc<H, T> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<H, T> Clone for ThinArc<H, T> {
|
impl<H: 'static, T: 'static> Clone for ThinArc<H, T> {
|
||||||
fn clone(&self) -> Self {
|
fn clone(&self) -> Self {
|
||||||
ThinArc::with_arc(self, |a| Arc::into_thin(a.clone()))
|
ThinArc::with_arc(self, |a| Arc::into_thin(a.clone()))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<H, T> Drop for ThinArc<H, T> {
|
impl<H: 'static, T: 'static> Drop for ThinArc<H, T> {
|
||||||
fn drop(&mut self) {
|
fn drop(&mut self) {
|
||||||
let _ = Arc::from_thin(ThinArc { ptr: self.ptr });
|
let _ = Arc::from_thin(ThinArc { ptr: self.ptr });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<H, T> Arc<HeaderSliceWithLength<H, [T]>> {
|
impl<H: 'static, T: 'static> Arc<HeaderSliceWithLength<H, [T]>> {
|
||||||
/// Converts an Arc into a ThinArc. This consumes the Arc, so the refcount
|
/// Converts an Arc into a ThinArc. This consumes the Arc, so the refcount
|
||||||
/// is not modified.
|
/// is not modified.
|
||||||
pub fn into_thin(a: Self) -> ThinArc<H, T> {
|
pub fn into_thin(a: Self) -> ThinArc<H, T> {
|
||||||
|
@ -630,7 +630,7 @@ impl<H, T> Arc<HeaderSliceWithLength<H, [T]>> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<H: PartialEq, T: PartialEq> PartialEq for ThinArc<H, T> {
|
impl<H: PartialEq + 'static, T: PartialEq + 'static> PartialEq for ThinArc<H, T> {
|
||||||
fn eq(&self, other: &ThinArc<H, T>) -> bool {
|
fn eq(&self, other: &ThinArc<H, T>) -> bool {
|
||||||
ThinArc::with_arc(self, |a| {
|
ThinArc::with_arc(self, |a| {
|
||||||
ThinArc::with_arc(other, |b| {
|
ThinArc::with_arc(other, |b| {
|
||||||
|
@ -640,7 +640,7 @@ impl<H: PartialEq, T: PartialEq> PartialEq for ThinArc<H, T> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<H: Eq, T: Eq> Eq for ThinArc<H, T> {}
|
impl<H: Eq + 'static, T: Eq + 'static> Eq for ThinArc<H, T> {}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
|
|
|
@ -11,7 +11,7 @@ use std::ptr;
|
||||||
use stylearc::Arc;
|
use stylearc::Arc;
|
||||||
|
|
||||||
/// Indicates that a given Servo type has a corresponding Gecko FFI type.
|
/// Indicates that a given Servo type has a corresponding Gecko FFI type.
|
||||||
pub unsafe trait HasFFI : Sized {
|
pub unsafe trait HasFFI : Sized + 'static {
|
||||||
/// The corresponding Gecko type that this rust type represents.
|
/// The corresponding Gecko type that this rust type represents.
|
||||||
///
|
///
|
||||||
/// See the examples in `components/style/gecko/conversions.rs`.
|
/// See the examples in `components/style/gecko/conversions.rs`.
|
||||||
|
|
|
@ -2193,7 +2193,7 @@ pub fn get_writing_mode(inheritedbox_style: &style_structs::InheritedBox) -> Wri
|
||||||
}
|
}
|
||||||
|
|
||||||
/// A reference to a style struct of the parent, or our own style struct.
|
/// A reference to a style struct of the parent, or our own style struct.
|
||||||
pub enum StyleStructRef<'a, T: 'a> {
|
pub enum StyleStructRef<'a, T: 'static> {
|
||||||
/// A borrowed struct from the parent, for example, for inheriting style.
|
/// A borrowed struct from the parent, for example, for inheriting style.
|
||||||
Borrowed(&'a Arc<T>),
|
Borrowed(&'a Arc<T>),
|
||||||
/// An owned struct, that we've already mutated.
|
/// An owned struct, that we've already mutated.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue