diff --git a/book/appendix/changelog/sdk.html b/book/appendix/changelog/sdk.html index 080a66a20e..c7d201ba32 100644 --- a/book/appendix/changelog/sdk.html +++ b/book/appendix/changelog/sdk.html @@ -185,6 +185,10 @@

Glean SDKs - Cross-platform Telemetry Libraries

Unreleased changes

Full changelog

+

General

+

v60.5.0 (2024-08-06)

Full changelog

\ No newline at end of file diff --git a/docs/glean_core/enum.ErrorKind.html b/docs/glean_core/enum.ErrorKind.html index 873b78561d..af8d5cf2ae 100644 --- a/docs/glean_core/enum.ErrorKind.html +++ b/docs/glean_core/enum.ErrorKind.html @@ -1,34 +1,41 @@ -ErrorKind in glean_core - Rust
#[non_exhaustive]
-pub enum ErrorKind {
-    Lifetime(i32),
-    IoError(Error),
+ErrorKind in glean_core - Rust
+    
#[non_exhaustive]
pub enum ErrorKind { + Lifetime(i32), + IoError(Error), Rkv(StoreError), Json(Error), - TimeUnit(i32), - MemoryUnit(i32), - HistogramType(i32), - OsString(OsString), + TimeUnit(i32), + MemoryUnit(i32), + HistogramType(i32), + OsString(OsString), Utf8Error, InvalidConfig, NotInitialized, - PingBodyOverflow(usize), -}
Expand description

A list enumerating the categories of errors in this crate.

+ PingBodyOverflow(usize), +}
Expand description

A list enumerating the categories of errors in this crate.

This list is intended to grow over time and it is not recommended to exhaustively match against it.

-

Variants (Non-exhaustive)§

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
§

Lifetime(i32)

Lifetime conversion failed

-
§

IoError(Error)

IO error

+

Variants (Non-exhaustive)§

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
§

Lifetime(i32)

Lifetime conversion failed

+
§

IoError(Error)

IO error

§

Rkv(StoreError)

IO error

§

Json(Error)

JSON error

-
§

TimeUnit(i32)

TimeUnit conversion failed

-
§

MemoryUnit(i32)

MemoryUnit conversion failed

-
§

HistogramType(i32)

HistogramType conversion failed

-
§

OsString(OsString)

OsString conversion failed

+
§

TimeUnit(i32)

TimeUnit conversion failed

+
§

MemoryUnit(i32)

MemoryUnit conversion failed

+
§

HistogramType(i32)

HistogramType conversion failed

+
§

OsString(OsString)

OsString conversion failed

§

Utf8Error

Unknown error

§

InvalidConfig

Glean initialization was attempted with an invalid configuration

§

NotInitialized

Glean not initialized

-
§

PingBodyOverflow(usize)

Ping request body size overflowed

-

Trait Implementations§

Formats the value using the given formatter. Read more
Converts to this type from the input type.

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

-
Create a new handle for an Arc value Read more
Clone a handle Read more
Consume a handle, getting back the initial Arc<>
Get a clone of the Arc<> using a “borrowed” handle. Read more

Calls U::from(self).

+
§

PingBodyOverflow(usize)

Ping request body size overflowed

+

Trait Implementations§

source§

impl Debug for ErrorKind

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl From<ErrorKind> for Error

source§

fn from(kind: ErrorKind) -> Error

Converts to this type from the input type.

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where + T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where + T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

+
§

impl<T, UT> HandleAlloc<UT> for T
where + T: Send + Sync,

§

fn new_handle(value: Arc<T>) -> Handle

Create a new handle for an Arc value Read more
§

fn clone_handle(handle: Handle) -> Handle

Clone a handle Read more
§

fn consume_handle(handle: Handle) -> Arc<T>

Consume a handle, getting back the initial Arc<>
§

fn get_arc(handle: Handle) -> Arc<Self>

Get a clone of the Arc<> using a “borrowed” handle. Read more
source§

impl<T, U> Into<U> for T
where + U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/docs/glean_core/enum.ErrorType.html b/docs/glean_core/enum.ErrorType.html index 7bcb3a9cbc..fa57c99017 100644 --- a/docs/glean_core/enum.ErrorType.html +++ b/docs/glean_core/enum.ErrorType.html @@ -1,27 +1,35 @@ -ErrorType in glean_core - Rust
#[repr(C)]
-pub enum ErrorType {
-    InvalidValue,
-    InvalidLabel,
-    InvalidState,
-    InvalidOverflow,
-}
Expand description

The possible error types for metric recording. +ErrorType in glean_core - Rust

+
#[repr(C)]
pub enum ErrorType { + InvalidValue = 0, + InvalidLabel = 1, + InvalidState = 2, + InvalidOverflow = 3, +}
Expand description

The possible error types for metric recording. Note: the cases in this enum must be kept in sync with the ones in the platform-specific code (e.g. ErrorType.kt) and with the metrics in the registry files.

-

Variants§

§

InvalidValue

For when the value to be recorded does not match the metric-specific restrictions

-
§

InvalidLabel

For when the label of a labeled metric does not match the restrictions

-
§

InvalidState

For when the metric caught an invalid state while recording

-
§

InvalidOverflow

For when the value to be recorded overflows the metric-specific upper range

-

Implementations§

The error type’s metric id

-

Return an iterator over all possible error types.

+

Variants§

§

InvalidValue = 0

For when the value to be recorded does not match the metric-specific restrictions

+
§

InvalidLabel = 1

For when the label of a labeled metric does not match the restrictions

+
§

InvalidState = 2

For when the metric caught an invalid state while recording

+
§

InvalidOverflow = 3

For when the value to be recorded overflows the metric-specific upper range

+

Implementations§

source§

impl ErrorType

source

pub fn as_str(&self) -> &'static str

The error type’s metric id

+
source

pub fn iter() -> impl Iterator<Item = Self>

Return an iterator over all possible error types.

let errors = ErrorType::iter();
 let all_errors = errors.collect::<Vec<_>>();
 assert_eq!(4, all_errors.len());
-

Trait Implementations§

Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
Formats the value using the given formatter. Read more
This method tests for self and other values to be equal, and is used -by ==. Read more
This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
The type returned in the event of a conversion error.
Performs the conversion.

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

-
Create a new handle for an Arc value Read more
Clone a handle Read more
Consume a handle, getting back the initial Arc<>
Get a clone of the Arc<> using a “borrowed” handle. Read more

Calls U::from(self).

+

Trait Implementations§

source§

impl Clone for ErrorType

source§

fn clone(&self) -> ErrorType

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for ErrorType

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl PartialEq for ErrorType

source§

fn eq(&self, other: &ErrorType) -> bool

This method tests for self and other values to be equal, and is used +by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
source§

impl TryFrom<i32> for ErrorType

§

type Error = Error

The type returned in the event of a conversion error.
source§

fn try_from(value: i32) -> Result<ErrorType, Self::Error>

Performs the conversion.
source§

impl Copy for ErrorType

source§

impl Eq for ErrorType

source§

impl StructuralEq for ErrorType

source§

impl StructuralPartialEq for ErrorType

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where + T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where + T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

+
§

impl<T, UT> HandleAlloc<UT> for T
where + T: Send + Sync,

§

fn new_handle(value: Arc<T>) -> Handle

Create a new handle for an Arc value Read more
§

fn clone_handle(handle: Handle) -> Handle

Clone a handle Read more
§

fn consume_handle(handle: Handle) -> Arc<T>

Consume a handle, getting back the initial Arc<>
§

fn get_arc(handle: Handle) -> Arc<Self>

Get a clone of the Arc<> using a “borrowed” handle. Read more
source§

impl<T, U> Into<U> for T
where + U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
The resulting type after obtaining ownership.
Creates owned data from borrowed data, usually by cloning. Read more
Uses borrowed data to replace owned data, usually by cloning. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

impl<T> ToOwned for T
where + T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/docs/glean_core/enum.HistogramType.html b/docs/glean_core/enum.HistogramType.html index d7f8bd96e3..39a9e76200 100644 --- a/docs/glean_core/enum.HistogramType.html +++ b/docs/glean_core/enum.HistogramType.html @@ -1,11 +1,25 @@ -HistogramType in glean_core - Rust
pub enum HistogramType {
+HistogramType in glean_core - Rust
+    
pub enum HistogramType {
     Linear,
     Exponential,
-}
Expand description

Different kinds of histograms.

-

Variants§

§

Linear

A histogram with linear distributed buckets.

+}
Expand description

Different kinds of histograms.

+

Variants§

§

Linear

A histogram with linear distributed buckets.

§

Exponential

A histogram with exponential distributed buckets.

-

Trait Implementations§

Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
Formats the value using the given formatter. Read more
Deserialize this value from the given Serde deserializer. Read more
Serialize this value into the given Serde serializer. Read more
The type returned in the event of a conversion error.
Performs the conversion.

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

-
Create a new handle for an Arc value Read more
Clone a handle Read more
Consume a handle, getting back the initial Arc<>
Get a clone of the Arc<> using a “borrowed” handle. Read more

Calls U::from(self).

+

Trait Implementations§

source§

impl Clone for HistogramType

source§

fn clone(&self) -> HistogramType

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for HistogramType

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'de> Deserialize<'de> for HistogramType

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where + __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Serialize for HistogramType

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where + __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl TryFrom<i32> for HistogramType

§

type Error = Error

The type returned in the event of a conversion error.
source§

fn try_from(value: i32) -> Result<HistogramType, Self::Error>

Performs the conversion.
source§

impl Copy for HistogramType

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where + T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where + T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> EncodableKey for T
where + T: Serialize,

§

fn to_bytes(&self) -> Result<Vec<u8>, DataError>

source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

+
§

impl<T, UT> HandleAlloc<UT> for T
where + T: Send + Sync,

§

fn new_handle(value: Arc<T>) -> Handle

Create a new handle for an Arc value Read more
§

fn clone_handle(handle: Handle) -> Handle

Clone a handle Read more
§

fn consume_handle(handle: Handle) -> Arc<T>

Consume a handle, getting back the initial Arc<>
§

fn get_arc(handle: Handle) -> Arc<Self>

Get a clone of the Arc<> using a “borrowed” handle. Read more
source§

impl<T, U> Into<U> for T
where + U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
The resulting type after obtaining ownership.
Creates owned data from borrowed data, usually by cloning. Read more
Uses borrowed data to replace owned data, usually by cloning. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

impl<V> ObjectSerialize for V
where + V: Serialize + for<'de> Deserialize<'de>,

source§

fn from_str(obj: &str) -> Result<V, ObjectError>

Deserialize the object from its JSON representation. Read more
source§

fn into_serialized_object(self) -> Result<Value, ObjectError>

Serialize this object into a JSON string.
source§

impl<T> ToOwned for T
where + T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> DeserializeOwned for T
where + T: for<'de> Deserialize<'de>,

\ No newline at end of file diff --git a/docs/glean_core/enum.LabeledMetricData.html b/docs/glean_core/enum.LabeledMetricData.html index b7581cd7df..264a492ec4 100644 --- a/docs/glean_core/enum.LabeledMetricData.html +++ b/docs/glean_core/enum.LabeledMetricData.html @@ -1,12 +1,13 @@ -LabeledMetricData in glean_core - Rust
pub enum LabeledMetricData {
+LabeledMetricData in glean_core - Rust
+    
pub enum LabeledMetricData {
     Common {
         cmd: CommonMetricData,
     },
     CustomDistribution {
         cmd: CommonMetricData,
-        range_min: i64,
-        range_max: i64,
-        bucket_count: i64,
+        range_min: i64,
+        range_max: i64,
+        bucket_count: i64,
         histogram_type: HistogramType,
     },
     MemoryDistribution {
@@ -17,15 +18,22 @@
         cmd: CommonMetricData,
         unit: TimeUnit,
     },
-}
Expand description

The metric data needed to construct inner submetrics.

+}
Expand description

The metric data needed to construct inner submetrics.

Different Labeled metrics require different amounts and kinds of information to be constructed.

-

Variants§

§

Common

Fields

The common case: just a CMD.

-
§

CustomDistribution

Fields

§range_min: i64
§range_max: i64
§bucket_count: i64
§histogram_type: HistogramType

The custom_distribution-specific case.

-
§

MemoryDistribution

The memory_distribution-specific case.

-
§

TimingDistribution

Fields

§unit: TimeUnit

The timing_distribution-specific case.

-

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

-
Create a new handle for an Arc value Read more
Clone a handle Read more
Consume a handle, getting back the initial Arc<>
Get a clone of the Arc<> using a “borrowed” handle. Read more

Calls U::from(self).

+

Variants§

§

Common

The common case: just a CMD.

+
§

CustomDistribution

Fields

§range_min: i64
§range_max: i64
§bucket_count: i64
§histogram_type: HistogramType

The custom_distribution-specific case.

+
§

MemoryDistribution

The memory_distribution-specific case.

+
§

TimingDistribution

The timing_distribution-specific case.

+

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where + T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where + T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

+
§

impl<T, UT> HandleAlloc<UT> for T
where + T: Send + Sync,

§

fn new_handle(value: Arc<T>) -> Handle

Create a new handle for an Arc value Read more
§

fn clone_handle(handle: Handle) -> Handle

Clone a handle Read more
§

fn consume_handle(handle: Handle) -> Arc<T>

Consume a handle, getting back the initial Arc<>
§

fn get_arc(handle: Handle) -> Arc<Self>

Get a clone of the Arc<> using a “borrowed” handle. Read more
source§

impl<T, U> Into<U> for T
where + U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/docs/glean_core/enum.Lifetime.html b/docs/glean_core/enum.Lifetime.html index fe1e2008ca..3c13adbbce 100644 --- a/docs/glean_core/enum.Lifetime.html +++ b/docs/glean_core/enum.Lifetime.html @@ -1,18 +1,31 @@ -Lifetime in glean_core - Rust

Enum glean_core::Lifetime

source ·
#[repr(i32)]
-pub enum Lifetime {
-    Ping,
-    Application,
-    User,
-}
Expand description

The supported metrics’ lifetimes.

+Lifetime in glean_core - Rust +

Enum glean_core::Lifetime

source ·
#[repr(i32)]
pub enum Lifetime { + Ping = 0, + Application = 1, + User = 2, +}
Expand description

The supported metrics’ lifetimes.

A metric’s lifetime determines when its stored data gets reset.

-

Variants§

§

Ping

The metric is reset with each sent ping

-
§

Application

The metric is reset on application restart

-
§

User

The metric is reset with each user profile

-

Implementations§

String representation of the lifetime.

-

Trait Implementations§

Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
Formats the value using the given formatter. Read more
Returns the “default value” for a type. Read more
Deserialize this value from the given Serde deserializer. Read more
This method tests for self and other values to be equal, and is used -by ==. Read more
This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
Serialize this value into the given Serde serializer. Read more
The type returned in the event of a conversion error.
Performs the conversion.

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

-
Create a new handle for an Arc value Read more
Clone a handle Read more
Consume a handle, getting back the initial Arc<>
Get a clone of the Arc<> using a “borrowed” handle. Read more

Calls U::from(self).

+

Variants§

§

Ping = 0

The metric is reset with each sent ping

+
§

Application = 1

The metric is reset on application restart

+
§

User = 2

The metric is reset with each user profile

+

Implementations§

source§

impl Lifetime

source

pub fn as_str(self) -> &'static str

String representation of the lifetime.

+

Trait Implementations§

source§

impl Clone for Lifetime

source§

fn clone(&self) -> Lifetime

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Lifetime

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for Lifetime

source§

fn default() -> Lifetime

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for Lifetime

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where + __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl PartialEq for Lifetime

source§

fn eq(&self, other: &Lifetime) -> bool

This method tests for self and other values to be equal, and is used +by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
source§

impl Serialize for Lifetime

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where + __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl TryFrom<i32> for Lifetime

§

type Error = Error

The type returned in the event of a conversion error.
source§

fn try_from(value: i32) -> Result<Lifetime, Self::Error>

Performs the conversion.
source§

impl Copy for Lifetime

source§

impl Eq for Lifetime

source§

impl StructuralEq for Lifetime

source§

impl StructuralPartialEq for Lifetime

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where + T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where + T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> EncodableKey for T
where + T: Serialize,

§

fn to_bytes(&self) -> Result<Vec<u8>, DataError>

source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

+
§

impl<T, UT> HandleAlloc<UT> for T
where + T: Send + Sync,

§

fn new_handle(value: Arc<T>) -> Handle

Create a new handle for an Arc value Read more
§

fn clone_handle(handle: Handle) -> Handle

Clone a handle Read more
§

fn consume_handle(handle: Handle) -> Arc<T>

Consume a handle, getting back the initial Arc<>
§

fn get_arc(handle: Handle) -> Arc<Self>

Get a clone of the Arc<> using a “borrowed” handle. Read more
source§

impl<T, U> Into<U> for T
where + U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
The resulting type after obtaining ownership.
Creates owned data from borrowed data, usually by cloning. Read more
Uses borrowed data to replace owned data, usually by cloning. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

impl<V> ObjectSerialize for V
where + V: Serialize + for<'de> Deserialize<'de>,

source§

fn from_str(obj: &str) -> Result<V, ObjectError>

Deserialize the object from its JSON representation. Read more
source§

fn into_serialized_object(self) -> Result<Value, ObjectError>

Serialize this object into a JSON string.
source§

impl<T> ToOwned for T
where + T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> DeserializeOwned for T
where + T: for<'de> Deserialize<'de>,

\ No newline at end of file diff --git a/docs/glean_core/enum.MemoryUnit.html b/docs/glean_core/enum.MemoryUnit.html deleted file mode 100644 index 70f1c6721c..0000000000 --- a/docs/glean_core/enum.MemoryUnit.html +++ /dev/null @@ -1,28 +0,0 @@ -MemoryUnit in glean_core - Rust
#[repr(i32)]
-pub enum MemoryUnit {
-    Byte,
-    Kilobyte,
-    Megabyte,
-    Gigabyte,
-}
Expand description

Different resolutions supported by the memory related metric types (e.g. -MemoryDistributionMetric).

-

Variants§

§

Byte

1 byte

-
§

Kilobyte

2^10 bytes

-
§

Megabyte

2^20 bytes

-
§

Gigabyte

2^30 bytes

-

Implementations§

Converts a value in the given unit to bytes.

-
Arguments
-
    -
  • value - the value to convert.
  • -
-
Returns
-

The integer representation of the byte value.

-

Trait Implementations§

Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
Formats the value using the given formatter. Read more
Deserialize this value from the given Serde deserializer. Read more
Serialize this value into the given Serde serializer. Read more

Trait implementation for converting an integer value -to a MemoryUnit. This is used in the FFI code. Please -note that values should match the ordering of the platform -specific side of things (e.g. Kotlin implementation).

-
The type returned in the event of a conversion error.
Performs the conversion.

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

-
Create a new handle for an Arc value Read more
Clone a handle Read more
Consume a handle, getting back the initial Arc<>
Get a clone of the Arc<> using a “borrowed” handle. Read more

Calls U::from(self).

-

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
The resulting type after obtaining ownership.
Creates owned data from borrowed data, usually by cloning. Read more
Uses borrowed data to replace owned data, usually by cloning. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.
\ No newline at end of file diff --git a/docs/glean_core/enum.TimeUnit.html b/docs/glean_core/enum.TimeUnit.html deleted file mode 100644 index 4460a4851d..0000000000 --- a/docs/glean_core/enum.TimeUnit.html +++ /dev/null @@ -1,44 +0,0 @@ -TimeUnit in glean_core - Rust

Enum glean_core::TimeUnit

source ·
#[repr(i32)]
-pub enum TimeUnit {
-    Nanosecond,
-    Microsecond,
-    Millisecond,
-    Second,
-    Minute,
-    Hour,
-    Day,
-}
Expand description

Different resolutions supported by the time related -metric types (e.g. DatetimeMetric).

-

Variants§

§

Nanosecond

Truncate to nanosecond precision.

-
§

Microsecond

Truncate to microsecond precision.

-
§

Millisecond

Truncate to millisecond precision.

-
§

Second

Truncate to second precision.

-
§

Minute

Truncate to minute precision.

-
§

Hour

Truncate to hour precision.

-
§

Day

Truncate to day precision.

-

Implementations§

Formats the given time unit, truncating the time if needed.

-

Converts a duration to the requested time unit.

-
Arguments
-
    -
  • duration - the duration to convert.
  • -
-
Returns
-

The integer representation of the converted duration.

-

Converts a duration in the given unit to nanoseconds.

-
Arguments
-
    -
  • duration - the duration to convert.
  • -
-
Returns
-

The integer representation of the nanosecond duration.

-

Trait Implementations§

Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
Formats the value using the given formatter. Read more
Deserialize this value from the given Serde deserializer. Read more
This method tests for self and other values to be equal, and is used -by ==. Read more
This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
Serialize this value into the given Serde serializer. Read more

Trait implementation for converting an integer value to a TimeUnit.

-

This is used in the FFI code.

-

Please note that values should match the ordering of the -platform specific side of things (e.g. Kotlin implementation).

-
The type returned in the event of a conversion error.
Performs the conversion.

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

-
Create a new handle for an Arc value Read more
Clone a handle Read more
Consume a handle, getting back the initial Arc<>
Get a clone of the Arc<> using a “borrowed” handle. Read more

Calls U::from(self).

-

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
The resulting type after obtaining ownership.
Creates owned data from borrowed data, usually by cloning. Read more
Uses borrowed data to replace owned data, usually by cloning. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.
\ No newline at end of file diff --git a/docs/glean_core/enum.UploadResult.html b/docs/glean_core/enum.UploadResult.html deleted file mode 100644 index 29aed05480..0000000000 --- a/docs/glean_core/enum.UploadResult.html +++ /dev/null @@ -1,36 +0,0 @@ -UploadResult in glean_core - Rust
pub enum UploadResult {
-    RecoverableFailure { /* private fields */ },
-    UnrecoverableFailure { /* private fields */ },
-    HttpStatus {
-        code: i32,
-    },
-    Done { /* private fields */ },
-}
Expand description

The result of an attempted ping upload.

-

Variants§

§

RecoverableFailure

Fields

A recoverable failure.

-

During upload something went wrong, -e.g. the network connection failed. -The upload should be retried at a later time.

-
§

UnrecoverableFailure

Fields

An unrecoverable upload failure.

-

A possible cause might be a malformed URL.

-
§

HttpStatus

Fields

§code: i32

The HTTP status code

-

A HTTP response code.

-

This can still indicate an error, depending on the status code.

-
§

Done

Fields

Signal that this uploader is done with work -and won’t accept new work.

-

Implementations§

Gets the label to be used in recording error counts for upload.

-

Returns None if the upload finished succesfully. -Failures are recorded in the ping_upload_failure metric.

-

A recoverable failure.

-

During upload something went wrong, -e.g. the network connection failed. -The upload should be retried at a later time.

-

An unrecoverable upload failure.

-

A possible cause might be a malformed URL.

-

A HTTP response code.

-

This can still indicate an error, depending on the status code.

-

This uploader is done.

-

Trait Implementations§

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

-
Create a new handle for an Arc value Read more
Clone a handle Read more
Consume a handle, getting back the initial Arc<>
Get a clone of the Arc<> using a “borrowed” handle. Read more

Calls U::from(self).

-

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.
\ No newline at end of file diff --git a/docs/glean_core/enum.UploadTaskAction.html b/docs/glean_core/enum.UploadTaskAction.html deleted file mode 100644 index fbcb35cf62..0000000000 --- a/docs/glean_core/enum.UploadTaskAction.html +++ /dev/null @@ -1,11 +0,0 @@ -UploadTaskAction in glean_core - Rust
pub enum UploadTaskAction {
-    Next,
-    End,
-}
Expand description

Communication back whether the uploader loop should continue.

-

Variants§

§

Next

Instruct the caller to continue with work.

-
§

End

Instruct the caller to end work.

-

Trait Implementations§

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

-
Create a new handle for an Arc value Read more
Clone a handle Read more
Consume a handle, getting back the initial Arc<>
Get a clone of the Arc<> using a “borrowed” handle. Read more

Calls U::from(self).

-

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.
\ No newline at end of file diff --git a/docs/glean_core/fn.get_timestamp_ms.html b/docs/glean_core/fn.get_timestamp_ms.html index beb712e29f..2e421a3d68 100644 --- a/docs/glean_core/fn.get_timestamp_ms.html +++ b/docs/glean_core/fn.get_timestamp_ms.html @@ -1,2 +1,3 @@ -get_timestamp_ms in glean_core - Rust
pub fn get_timestamp_ms() -> u64
Expand description

Returns a timestamp corresponding to “now” with millisecond precision.

-
\ No newline at end of file +get_timestamp_ms in glean_core - Rust +
pub fn get_timestamp_ms() -> u64
Expand description

Returns a timestamp corresponding to “now” with millisecond precision.

+
\ No newline at end of file diff --git a/docs/glean_core/fn.glean_apply_server_knobs_config.html b/docs/glean_core/fn.glean_apply_server_knobs_config.html index 9b05cacbe2..4a0365f9a1 100644 --- a/docs/glean_core/fn.glean_apply_server_knobs_config.html +++ b/docs/glean_core/fn.glean_apply_server_knobs_config.html @@ -1,4 +1,5 @@ -glean_apply_server_knobs_config in glean_core - Rust
pub fn glean_apply_server_knobs_config(json: String)
Expand description

Sets a remote configuration to override metrics’ default enabled/disabled +glean_apply_server_knobs_config in glean_core - Rust

+
pub fn glean_apply_server_knobs_config(json: String)
Expand description

Sets a remote configuration to override metrics’ default enabled/disabled state

-

See core::Glean::apply_server_knobs_config.

-
\ No newline at end of file +

See core::Glean::apply_server_knobs_config.

+
\ No newline at end of file diff --git a/docs/glean_core/fn.glean_enable_logging.html b/docs/glean_core/fn.glean_enable_logging.html index d8acb9fbcc..f761384f7e 100644 --- a/docs/glean_core/fn.glean_enable_logging.html +++ b/docs/glean_core/fn.glean_enable_logging.html @@ -1,4 +1,5 @@ -glean_enable_logging in glean_core - Rust
#[no_mangle]
-pub extern "C" fn glean_enable_logging()
Expand description

Initialize the logging system based on the target platform. This ensures +glean_enable_logging in glean_core - Rust

+
#[no_mangle]
+pub extern "C" fn glean_enable_logging()
Expand description

Initialize the logging system based on the target platform. This ensures that logging is shown when executing the Glean SDK unit tests.

-
\ No newline at end of file +
\ No newline at end of file diff --git a/docs/glean_core/fn.glean_enable_logging_to_fd.html b/docs/glean_core/fn.glean_enable_logging_to_fd.html index 22a2e1fc2c..8cb7e4bb96 100644 --- a/docs/glean_core/fn.glean_enable_logging_to_fd.html +++ b/docs/glean_core/fn.glean_enable_logging_to_fd.html @@ -1,4 +1,5 @@ -glean_enable_logging_to_fd in glean_core - Rust
pub fn glean_enable_logging_to_fd(fd: u64)
Expand description

Initialize the logging system to send JSON messages to a file descriptor +glean_enable_logging_to_fd in glean_core - Rust

+
pub fn glean_enable_logging_to_fd(fd: u64)
Expand description

Initialize the logging system to send JSON messages to a file descriptor (Unix) or file handle (Windows).

Not available on Android and iOS.

fd is a writable file descriptor (on Unix) or file handle (on Windows).

@@ -6,4 +7,4 @@

Safety

fd MUST be a valid open file descriptor (Unix) or file handle (Windows). This function is marked safe, because we can’t call unsafe functions from generated UniFFI code.

-
\ No newline at end of file +
\ No newline at end of file diff --git a/docs/glean_core/fn.glean_get_upload_task.html b/docs/glean_core/fn.glean_get_upload_task.html index aead389271..ff419ff2f5 100644 --- a/docs/glean_core/fn.glean_get_upload_task.html +++ b/docs/glean_core/fn.glean_get_upload_task.html @@ -1,2 +1,3 @@ -glean_get_upload_task in glean_core - Rust
pub fn glean_get_upload_task() -> PingUploadTask
Expand description

Get the next upload task

-
\ No newline at end of file +glean_get_upload_task in glean_core - Rust +
pub fn glean_get_upload_task() -> PingUploadTask
Expand description

Get the next upload task

+
\ No newline at end of file diff --git a/docs/glean_core/fn.glean_handle_client_active.html b/docs/glean_core/fn.glean_handle_client_active.html index f0d1f6c398..c5e2f285f4 100644 --- a/docs/glean_core/fn.glean_handle_client_active.html +++ b/docs/glean_core/fn.glean_handle_client_active.html @@ -1,6 +1,7 @@ -glean_handle_client_active in glean_core - Rust
pub fn glean_handle_client_active()
Expand description

Performs the collection/cleanup operations required by becoming active.

+glean_handle_client_active in glean_core - Rust +
pub fn glean_handle_client_active()
Expand description

Performs the collection/cleanup operations required by becoming active.

This functions generates a baseline ping with reason active and then sets the dirty bit. This should be called whenever the consuming product becomes active (e.g. getting to foreground).

-
\ No newline at end of file +
\ No newline at end of file diff --git a/docs/glean_core/fn.glean_handle_client_inactive.html b/docs/glean_core/fn.glean_handle_client_inactive.html index 792391b776..6a67648783 100644 --- a/docs/glean_core/fn.glean_handle_client_inactive.html +++ b/docs/glean_core/fn.glean_handle_client_inactive.html @@ -1,6 +1,7 @@ -glean_handle_client_inactive in glean_core - Rust
pub fn glean_handle_client_inactive()
Expand description

Performs the collection/cleanup operations required by becoming inactive.

+glean_handle_client_inactive in glean_core - Rust +
pub fn glean_handle_client_inactive()
Expand description

Performs the collection/cleanup operations required by becoming inactive.

This functions generates a baseline and an events ping with reason inactive and then clears the dirty bit. This should be called whenever the consuming product becomes inactive (e.g. getting to background).

-
\ No newline at end of file +
\ No newline at end of file diff --git a/docs/glean_core/fn.glean_initialize.html b/docs/glean_core/fn.glean_initialize.html index bcd14c9b5c..15de077982 100644 --- a/docs/glean_core/fn.glean_initialize.html +++ b/docs/glean_core/fn.glean_initialize.html @@ -1,9 +1,14 @@ -glean_initialize in glean_core - Rust
pub fn glean_initialize(
    cfg: InternalConfiguration,
    client_info: ClientInfoMetrics,
    callbacks: Box<dyn OnGleanEvents>
)
Expand description

Initializes Glean.

+glean_initialize in glean_core - Rust +
pub fn glean_initialize(
+    cfg: InternalConfiguration,
+    client_info: ClientInfoMetrics,
+    callbacks: Box<dyn OnGleanEvents>
+)
Expand description

Initializes Glean.

Arguments

-
\ No newline at end of file +
\ No newline at end of file diff --git a/docs/glean_core/fn.glean_initialize_for_subprocess.html b/docs/glean_core/fn.glean_initialize_for_subprocess.html index 5ffd2601c6..4025615e08 100644 --- a/docs/glean_core/fn.glean_initialize_for_subprocess.html +++ b/docs/glean_core/fn.glean_initialize_for_subprocess.html @@ -1,4 +1,5 @@ -glean_initialize_for_subprocess in glean_core - Rust
pub fn glean_initialize_for_subprocess(cfg: InternalConfiguration) -> bool
Expand description

Creates and initializes a new Glean object for use in a subprocess.

+glean_initialize_for_subprocess in glean_core - Rust +
pub fn glean_initialize_for_subprocess(cfg: InternalConfiguration) -> bool
Expand description

Creates and initializes a new Glean object for use in a subprocess.

Importantly, this will not send any pings at startup, since that sort of management should only happen in the main process.

-
\ No newline at end of file +
\ No newline at end of file diff --git a/docs/glean_core/fn.glean_persist_ping_lifetime_data.html b/docs/glean_core/fn.glean_persist_ping_lifetime_data.html index 78880ac3ce..f2612b436d 100644 --- a/docs/glean_core/fn.glean_persist_ping_lifetime_data.html +++ b/docs/glean_core/fn.glean_persist_ping_lifetime_data.html @@ -1,5 +1,6 @@ -glean_persist_ping_lifetime_data in glean_core - Rust
pub fn glean_persist_ping_lifetime_data()
Expand description

Asks the database to persist ping-lifetime data to disk. Probably expensive to call. +glean_persist_ping_lifetime_data in glean_core - Rust

+
pub fn glean_persist_ping_lifetime_data()
Expand description

Asks the database to persist ping-lifetime data to disk. Probably expensive to call. Only has effect when Glean is configured with delay_ping_lifetime_io: true. If Glean hasn’t been initialized this will dispatch and return Ok(()), otherwise it will block until the persist is done and return its Result.

-
\ No newline at end of file +
\ No newline at end of file diff --git a/docs/glean_core/fn.glean_process_ping_upload_response.html b/docs/glean_core/fn.glean_process_ping_upload_response.html index e6e46185ae..b14053431b 100644 --- a/docs/glean_core/fn.glean_process_ping_upload_response.html +++ b/docs/glean_core/fn.glean_process_ping_upload_response.html @@ -1,2 +1,6 @@ -glean_process_ping_upload_response in glean_core - Rust
pub fn glean_process_ping_upload_response(
    uuid: String,
    result: UploadResult
) -> UploadTaskAction
Expand description

Processes the response from an attempt to upload a ping.

-
\ No newline at end of file +glean_process_ping_upload_response in glean_core - Rust +
pub fn glean_process_ping_upload_response(
+    uuid: String,
+    result: UploadResult
+) -> UploadTaskAction
Expand description

Processes the response from an attempt to upload a ping.

+
\ No newline at end of file diff --git a/docs/glean_core/fn.glean_register_event_listener.html b/docs/glean_core/fn.glean_register_event_listener.html index 34c954306f..2cfa9a0691 100644 --- a/docs/glean_core/fn.glean_register_event_listener.html +++ b/docs/glean_core/fn.glean_register_event_listener.html @@ -1,7 +1,11 @@ -glean_register_event_listener in glean_core - Rust
pub fn glean_register_event_listener(
    tag: String,
    listener: Box<dyn GleanEventListener>
)
Expand description

EXPERIMENTAL: Register a listener object to recieve notifications of event recordings.

+glean_register_event_listener in glean_core - Rust +
pub fn glean_register_event_listener(
+    tag: String,
+    listener: Box<dyn GleanEventListener>
+)
Expand description

EXPERIMENTAL: Register a listener object to recieve notifications of event recordings.

Arguments

  • tag - A string identifier used to later unregister the listener
  • listener - Implements the GleanEventListener trait
-
\ No newline at end of file +
\ No newline at end of file diff --git a/docs/glean_core/fn.glean_set_debug_view_tag.html b/docs/glean_core/fn.glean_set_debug_view_tag.html index aebae38504..1910be88d1 100644 --- a/docs/glean_core/fn.glean_set_debug_view_tag.html +++ b/docs/glean_core/fn.glean_set_debug_view_tag.html @@ -1,4 +1,5 @@ -glean_set_debug_view_tag in glean_core - Rust
pub fn glean_set_debug_view_tag(tag: String) -> bool
Expand description

Sets a debug view tag.

+glean_set_debug_view_tag in glean_core - Rust +
pub fn glean_set_debug_view_tag(tag: String) -> bool
Expand description

Sets a debug view tag.

When the debug view tag is set, pings are sent with a X-Debug-ID header with the value of the tag and are sent to the “Ping Debug Viewer”.

Arguments

@@ -8,4 +9,4 @@

Arguments

Returns

This will return false in case tag is not a valid tag and true otherwise. If called before Glean is initialized it will always return true.

-
\ No newline at end of file +
\ No newline at end of file diff --git a/docs/glean_core/fn.glean_set_dirty_flag.html b/docs/glean_core/fn.glean_set_dirty_flag.html index adb9991915..a8aaef5a34 100644 --- a/docs/glean_core/fn.glean_set_dirty_flag.html +++ b/docs/glean_core/fn.glean_set_dirty_flag.html @@ -1,3 +1,4 @@ -glean_set_dirty_flag in glean_core - Rust
pub fn glean_set_dirty_flag(new_value: bool)
Expand description

TEST-ONLY Method

+glean_set_dirty_flag in glean_core - Rust +
pub fn glean_set_dirty_flag(new_value: bool)
Expand description

TEST-ONLY Method

Set the dirty flag

-
\ No newline at end of file +
\ No newline at end of file diff --git a/docs/glean_core/fn.glean_set_experiment_active.html b/docs/glean_core/fn.glean_set_experiment_active.html index d92f485fbf..c18487e46c 100644 --- a/docs/glean_core/fn.glean_set_experiment_active.html +++ b/docs/glean_core/fn.glean_set_experiment_active.html @@ -1,5 +1,10 @@ -glean_set_experiment_active in glean_core - Rust
pub fn glean_set_experiment_active(
    experiment_id: String,
    branch: String,
    extra: HashMap<String, String>
)
Expand description

Indicate that an experiment is running. Glean will then add an +glean_set_experiment_active in glean_core - Rust

+
pub fn glean_set_experiment_active(
+    experiment_id: String,
+    branch: String,
+    extra: HashMap<String, String>
+)
Expand description

Indicate that an experiment is running. Glean will then add an experiment annotation to the environment which is sent with pings. This infomration is not persisted between runs.

-

See core::Glean::set_experiment_active.

-
\ No newline at end of file +

See core::Glean::set_experiment_active.

+
\ No newline at end of file diff --git a/docs/glean_core/fn.glean_set_experiment_inactive.html b/docs/glean_core/fn.glean_set_experiment_inactive.html index ada7b487a5..68087f5799 100644 --- a/docs/glean_core/fn.glean_set_experiment_inactive.html +++ b/docs/glean_core/fn.glean_set_experiment_inactive.html @@ -1,3 +1,4 @@ -glean_set_experiment_inactive in glean_core - Rust
pub fn glean_set_experiment_inactive(experiment_id: String)
Expand description

Indicate that an experiment is no longer running.

-

See core::Glean::set_experiment_inactive.

-
\ No newline at end of file +glean_set_experiment_inactive in glean_core - Rust +
pub fn glean_set_experiment_inactive(experiment_id: String)
Expand description

Indicate that an experiment is no longer running.

+

See core::Glean::set_experiment_inactive.

+
\ No newline at end of file diff --git a/docs/glean_core/fn.glean_set_experimentation_id.html b/docs/glean_core/fn.glean_set_experimentation_id.html index 348898149a..3b08692dc1 100644 --- a/docs/glean_core/fn.glean_set_experimentation_id.html +++ b/docs/glean_core/fn.glean_set_experimentation_id.html @@ -1,3 +1,4 @@ -glean_set_experimentation_id in glean_core - Rust
pub fn glean_set_experimentation_id(experimentation_id: String)
Expand description

Set an experimentation identifier dynamically.

+glean_set_experimentation_id in glean_core - Rust +
pub fn glean_set_experimentation_id(experimentation_id: String)
Expand description

Set an experimentation identifier dynamically.

Note: it’s probably a good idea to unenroll from any experiments when identifiers change.

-
\ No newline at end of file +
\ No newline at end of file diff --git a/docs/glean_core/fn.glean_set_log_pings.html b/docs/glean_core/fn.glean_set_log_pings.html index 7c0036d219..53a434be7d 100644 --- a/docs/glean_core/fn.glean_set_log_pings.html +++ b/docs/glean_core/fn.glean_set_log_pings.html @@ -1,8 +1,9 @@ -glean_set_log_pings in glean_core - Rust
pub fn glean_set_log_pings(value: bool)
Expand description

Sets the log pings debug option.

+glean_set_log_pings in glean_core - Rust +
pub fn glean_set_log_pings(value: bool)
Expand description

Sets the log pings debug option.

When the log pings debug option is true, we log the payload of all succesfully assembled pings.

Arguments

  • value - The value of the log pings option
-
\ No newline at end of file +
\ No newline at end of file diff --git a/docs/glean_core/fn.glean_set_source_tags.html b/docs/glean_core/fn.glean_set_source_tags.html index 583799023c..521673d50e 100644 --- a/docs/glean_core/fn.glean_set_source_tags.html +++ b/docs/glean_core/fn.glean_set_source_tags.html @@ -1,4 +1,5 @@ -glean_set_source_tags in glean_core - Rust
pub fn glean_set_source_tags(tags: Vec<String>) -> bool
Expand description

Sets source tags.

+glean_set_source_tags in glean_core - Rust +
pub fn glean_set_source_tags(tags: Vec<String>) -> bool
Expand description

Sets source tags.

Overrides any existing source tags. Source tags will show in the destination datasets, after ingestion.

Note If one or more tags are invalid, all tags are ignored.

@@ -7,4 +8,4 @@

Arguments

  • tags - A vector of at most 5 valid HTTP header values. Individual tags must match the regex: “[a-zA-Z0-9-]{1,20}”.
  • -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/glean_core/fn.glean_set_test_mode.html b/docs/glean_core/fn.glean_set_test_mode.html index 3407ea8cc5..20b8a41990 100644 --- a/docs/glean_core/fn.glean_set_test_mode.html +++ b/docs/glean_core/fn.glean_set_test_mode.html @@ -1,3 +1,4 @@ -glean_set_test_mode in glean_core - Rust
    pub fn glean_set_test_mode(enabled: bool)
    Expand description

    TEST-ONLY Method

    +glean_set_test_mode in glean_core - Rust +
    pub fn glean_set_test_mode(enabled: bool)
    Expand description

    TEST-ONLY Method

    Set test mode

    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/glean_core/fn.glean_set_upload_enabled.html b/docs/glean_core/fn.glean_set_upload_enabled.html index ad03c7c22b..216f30ccbb 100644 --- a/docs/glean_core/fn.glean_set_upload_enabled.html +++ b/docs/glean_core/fn.glean_set_upload_enabled.html @@ -1,2 +1,3 @@ -glean_set_upload_enabled in glean_core - Rust
    pub fn glean_set_upload_enabled(enabled: bool)
    Expand description

    Sets whether upload is enabled or not.

    -
    \ No newline at end of file +glean_set_upload_enabled in glean_core - Rust +
    pub fn glean_set_upload_enabled(enabled: bool)
    Expand description

    Sets whether upload is enabled or not.

    +
    \ No newline at end of file diff --git a/docs/glean_core/fn.glean_shutdown.html b/docs/glean_core/fn.glean_shutdown.html index cd72121613..53c740e714 100644 --- a/docs/glean_core/fn.glean_shutdown.html +++ b/docs/glean_core/fn.glean_shutdown.html @@ -1,2 +1,3 @@ -glean_shutdown in glean_core - Rust

    Function glean_core::glean_shutdown

    source ·
    pub fn glean_shutdown()
    Expand description

    Shuts down Glean in an orderly fashion.

    -
    \ No newline at end of file +glean_shutdown in glean_core - Rust +

    Function glean_core::glean_shutdown

    source ·
    pub fn glean_shutdown()
    Expand description

    Shuts down Glean in an orderly fashion.

    +
    \ No newline at end of file diff --git a/docs/glean_core/fn.glean_submit_ping_by_name.html b/docs/glean_core/fn.glean_submit_ping_by_name.html index 1bb4662c29..c874cd4544 100644 --- a/docs/glean_core/fn.glean_submit_ping_by_name.html +++ b/docs/glean_core/fn.glean_submit_ping_by_name.html @@ -1,2 +1,3 @@ -glean_submit_ping_by_name in glean_core - Rust
    pub fn glean_submit_ping_by_name(ping_name: String, reason: Option<String>)
    Expand description

    Collect and submit a ping for eventual upload by name.

    -
    \ No newline at end of file +glean_submit_ping_by_name in glean_core - Rust +
    pub fn glean_submit_ping_by_name(ping_name: String, reason: Option<String>)
    Expand description

    Collect and submit a ping for eventual upload by name.

    +
    \ No newline at end of file diff --git a/docs/glean_core/fn.glean_submit_ping_by_name_sync.html b/docs/glean_core/fn.glean_submit_ping_by_name_sync.html index db4e264c61..66f1140b5f 100644 --- a/docs/glean_core/fn.glean_submit_ping_by_name_sync.html +++ b/docs/glean_core/fn.glean_submit_ping_by_name_sync.html @@ -1,3 +1,7 @@ -glean_submit_ping_by_name_sync in glean_core - Rust
    pub fn glean_submit_ping_by_name_sync(
        ping_name: String,
        reason: Option<String>
    ) -> bool
    Expand description

    Collect and submit a ping (by its name) for eventual upload, synchronously.

    +glean_submit_ping_by_name_sync in glean_core - Rust +
    pub fn glean_submit_ping_by_name_sync(
    +    ping_name: String,
    +    reason: Option<String>
    +) -> bool
    Expand description

    Collect and submit a ping (by its name) for eventual upload, synchronously.

    Note: This does not trigger the uploader. The caller is responsible to do this.

    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/glean_core/fn.glean_test_destroy_glean.html b/docs/glean_core/fn.glean_test_destroy_glean.html index e9652dbf76..6ffffa9ccf 100644 --- a/docs/glean_core/fn.glean_test_destroy_glean.html +++ b/docs/glean_core/fn.glean_test_destroy_glean.html @@ -1,3 +1,4 @@ -glean_test_destroy_glean in glean_core - Rust
    pub fn glean_test_destroy_glean(clear_stores: bool, data_path: Option<String>)
    Expand description

    TEST-ONLY Method

    +glean_test_destroy_glean in glean_core - Rust +
    pub fn glean_test_destroy_glean(clear_stores: bool, data_path: Option<String>)
    Expand description

    TEST-ONLY Method

    Destroy the underlying database.

    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/glean_core/fn.glean_test_get_experiment_data.html b/docs/glean_core/fn.glean_test_get_experiment_data.html index 91f5c25bfc..dc2343de56 100644 --- a/docs/glean_core/fn.glean_test_get_experiment_data.html +++ b/docs/glean_core/fn.glean_test_get_experiment_data.html @@ -1,4 +1,7 @@ -glean_test_get_experiment_data in glean_core - Rust
    pub fn glean_test_get_experiment_data(
        experiment_id: String
    ) -> Option<RecordedExperiment>
    Expand description

    TEST ONLY FUNCTION. -Returns the RecordedExperiment for the given experiment_id +glean_test_get_experiment_data in glean_core - Rust

    +
    pub fn glean_test_get_experiment_data(
    +    experiment_id: String
    +) -> Option<RecordedExperiment>
    Expand description

    TEST ONLY FUNCTION. +Returns the RecordedExperiment for the given experiment_id or None if the id isn’t found.

    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/glean_core/fn.glean_test_get_experimentation_id.html b/docs/glean_core/fn.glean_test_get_experimentation_id.html index 59175eca16..ad4062ca8a 100644 --- a/docs/glean_core/fn.glean_test_get_experimentation_id.html +++ b/docs/glean_core/fn.glean_test_get_experimentation_id.html @@ -1,3 +1,4 @@ -glean_test_get_experimentation_id in glean_core - Rust
    pub fn glean_test_get_experimentation_id() -> Option<String>
    Expand description

    TEST ONLY FUNCTION. +glean_test_get_experimentation_id in glean_core - Rust

    +
    pub fn glean_test_get_experimentation_id() -> Option<String>
    Expand description

    TEST ONLY FUNCTION. Gets stored experimentation id annotation.

    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/glean_core/fn.glean_unregister_event_listener.html b/docs/glean_core/fn.glean_unregister_event_listener.html index b696efeeda..bc9baea7c0 100644 --- a/docs/glean_core/fn.glean_unregister_event_listener.html +++ b/docs/glean_core/fn.glean_unregister_event_listener.html @@ -1,7 +1,8 @@ -glean_unregister_event_listener in glean_core - Rust
    pub fn glean_unregister_event_listener(tag: String)
    Expand description

    Unregister an event listener from recieving notifications.

    +glean_unregister_event_listener in glean_core - Rust +
    pub fn glean_unregister_event_listener(tag: String)
    Expand description

    Unregister an event listener from recieving notifications.

    Does not panic if the listener doesn’t exist.

    Arguments

    • tag - The tag used when registering the listener to be unregistered
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/glean_core/fn.join_init.html b/docs/glean_core/fn.join_init.html index 61f24587a6..868d546fb3 100644 --- a/docs/glean_core/fn.join_init.html +++ b/docs/glean_core/fn.join_init.html @@ -1,3 +1,4 @@ -join_init in glean_core - Rust

    Function glean_core::join_init

    source ·
    pub fn join_init()
    Expand description

    TEST ONLY FUNCTION +join_init in glean_core - Rust

    +

    Function glean_core::join_init

    source ·
    pub fn join_init()
    Expand description

    TEST ONLY FUNCTION Waits on all the glean.init threads’ join handles.

    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/glean_core/fn.shutdown.html b/docs/glean_core/fn.shutdown.html index 90dbc23a15..52cacf1b96 100644 --- a/docs/glean_core/fn.shutdown.html +++ b/docs/glean_core/fn.shutdown.html @@ -1,2 +1,3 @@ -shutdown in glean_core - Rust

    Function glean_core::shutdown

    source ·
    pub fn shutdown()
    Expand description

    Shuts down Glean in an orderly fashion.

    -
    \ No newline at end of file +shutdown in glean_core - Rust +

    Function glean_core::shutdown

    source ·
    pub fn shutdown()
    Expand description

    Shuts down Glean in an orderly fashion.

    +
    \ No newline at end of file diff --git a/docs/glean_core/fn.test_get_num_recorded_errors.html b/docs/glean_core/fn.test_get_num_recorded_errors.html index 1c930b5c2d..0c3fda48ea 100644 --- a/docs/glean_core/fn.test_get_num_recorded_errors.html +++ b/docs/glean_core/fn.test_get_num_recorded_errors.html @@ -1,4 +1,9 @@ -test_get_num_recorded_errors in glean_core - Rust
    pub fn test_get_num_recorded_errors(
        glean: &Glean,
        meta: &CommonMetricDataInternal,
        error: ErrorType
    ) -> Result<i32, String>
    Expand description

    Gets the number of recorded errors for the given metric and error type.

    +test_get_num_recorded_errors in glean_core - Rust +
    pub fn test_get_num_recorded_errors(
    +    glean: &Glean,
    +    meta: &CommonMetricDataInternal,
    +    error: ErrorType
    +) -> Result<i32, String>
    Expand description

    Gets the number of recorded errors for the given metric and error type.

    *Notes: This is a test-only API, but we need to expose it to be used in integration tests.

    Arguments

    Returns

    The number of errors reported.

    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/glean_core/index.html b/docs/glean_core/index.html index d14bb31573..bb7bfdc790 100644 --- a/docs/glean_core/index.html +++ b/docs/glean_core/index.html @@ -1,22 +1,22 @@ -glean_core - Rust

    Crate glean_core

    source ·
    Expand description

    Glean is a modern approach for recording and sending Telemetry data.

    +glean_core - Rust +

    Crate glean_core

    source ·
    Expand description

    Glean is a modern approach for recording and sending Telemetry data.

    It’s in use at Mozilla.

    All documentation can be found online:

    -

    The Glean SDK Book

    Re-exports

    pub use crate::metrics::DistributionData;
    pub use crate::upload::PingUploadTask;

    Modules

    The different metric types supported by the Glean SDK to handle data.
    Ping collection, assembly & submission.
    Storage snapshotting.
    API definitions for the different metric types supported by the Glean SDK.
    Manages the pending pings queue and directory.

    Structs

    A boolean metric.
    Metrics included in every ping as client_info.
    The common set of data shared across all different metric types.
    A counter metric.
    A custom distribution metric.
    Representation of a date, time and timezone.
    A datetime metric.
    A Denominator metric (a kind of count shared among Rate metrics).
    A specialized Error type for this crate’s operations.
    An event metric.
    The object holding meta information about a Glean instance.
    Configuration for Glean
    A labeled metric.
    A memory distribution metric.
    Developer-facing API for recording rate metrics with external denominators.
    An object metric.
    How to specify the rate at which pings may be uploaded before they are throttled.
    Represents a request to upload a ping.
    Stores information about a ping.
    A quantity metric.
    A rate value as given by its numerator and denominator.
    A rate metric.
    Represents the recorded data for a single event.
    Deserialized experiment data.
    A string list metric.
    A string metric.
    A text metric.
    Identifier for a running timer.
    A timespan metric.
    A timing distribution metric.
    A URL metric.
    An UUID metric.

    Enums

    An error returned from callbacks.
    A list enumerating the categories of errors in this crate.
    The possible error types for metric recording. +

    The Glean SDK Book

    Re-exports

    Modules

    • The different metric types supported by the Glean SDK to handle data.
    • Ping collection, assembly & submission.
    • Storage snapshotting.
    • API definitions for the different metric types supported by the Glean SDK.
    • Manages the pending pings queue and directory.

    Structs

    Enums

    • An error returned from callbacks.
    • A list enumerating the categories of errors in this crate.
    • The possible error types for metric recording. Note: the cases in this enum must be kept in sync with the ones in the platform-specific code (e.g. ErrorType.kt) and with the -metrics in the registry files.
    Different kinds of histograms.
    The metric data needed to construct inner submetrics.
    The supported metrics’ lifetimes.
    Different resolutions supported by the memory related metric types (e.g. -MemoryDistributionMetric).
    Different resolutions supported by the time related -metric types (e.g. DatetimeMetric).
    The result of an attempted ping upload.
    Communication back whether the uploader loop should continue.

    Traits

    Trait for metrics that can be nested inside a labeled metric.
    A callback handler that receives the base identifier of recorded events -The identifier is in the format: <category>.<name>
    A callback object used to trigger actions on the foreign-language side.

    Functions

    Returns a timestamp corresponding to “now” with millisecond precision.
    Sets a remote configuration to override metrics’ default enabled/disabled -state
    Initialize the logging system based on the target platform. This ensures -that logging is shown when executing the Glean SDK unit tests.
    Initialize the logging system to send JSON messages to a file descriptor -(Unix) or file handle (Windows).
    Get the next upload task
    Performs the collection/cleanup operations required by becoming active.
    Performs the collection/cleanup operations required by becoming inactive.
    Initializes Glean.
    Creates and initializes a new Glean object for use in a subprocess.
    Asks the database to persist ping-lifetime data to disk. Probably expensive to call. +metrics in the registry files.
  • Different kinds of histograms.
  • The metric data needed to construct inner submetrics.
  • The supported metrics’ lifetimes.
  • Traits

    • Trait for metrics that can be nested inside a labeled metric.
    • A callback handler that receives the base identifier of recorded events +The identifier is in the format: <category>.<name>
    • A callback object used to trigger actions on the foreign-language side.

    Functions

    Processes the response from an attempt to upload a ping.
    EXPERIMENTAL: Register a listener object to recieve notifications of event recordings.
    Sets a debug view tag.
    TEST-ONLY Method
    Indicate that an experiment is running. Glean will then add an +otherwise it will block until the persist is done and return its Result.
  • Processes the response from an attempt to upload a ping.
  • EXPERIMENTAL: Register a listener object to recieve notifications of event recordings.
  • Sets a debug view tag.
  • TEST-ONLY Method
  • Indicate that an experiment is running. Glean will then add an experiment annotation to the environment which is sent with pings. This -infomration is not persisted between runs.
  • Indicate that an experiment is no longer running.
    Set an experimentation identifier dynamically.
    Sets the log pings debug option.
    Sets source tags.
    TEST-ONLY Method
    Sets whether upload is enabled or not.
    Shuts down Glean in an orderly fashion.
    Collect and submit a ping for eventual upload by name.
    Collect and submit a ping (by its name) for eventual upload, synchronously.
    TEST-ONLY Method
    TEST ONLY FUNCTION. -Returns the RecordedExperiment for the given experiment_id -or None if the id isn’t found.
    TEST ONLY FUNCTION. -Gets stored experimentation id annotation.
    Unregister an event listener from recieving notifications.
    TEST ONLY FUNCTION -Waits on all the glean.init threads’ join handles.
    Shuts down Glean in an orderly fashion.
    Gets the number of recorded errors for the given metric and error type.

    Type Definitions

    A labeled boolean.
    A labeled counter.
    A labeled custom_distribution.
    A labeled memory_distribution.
    A labeled string.
    A labeled timing_distribution.
    A specialized Result type for this crate’s operations.
    \ No newline at end of file +infomration is not persisted between runs.
  • glean_set_experiment_inactive
    Indicate that an experiment is no longer running.
  • glean_set_experimentation_id
    Set an experimentation identifier dynamically.
  • glean_set_log_pings
    Sets the log pings debug option.
  • glean_set_source_tags
    Sets source tags.
  • glean_set_test_mode
    TEST-ONLY Method
  • glean_set_upload_enabled
    Sets whether upload is enabled or not.
  • glean_shutdown
    Shuts down Glean in an orderly fashion.
  • glean_submit_ping_by_name
    Collect and submit a ping for eventual upload by name.
  • glean_submit_ping_by_name_sync
    Collect and submit a ping (by its name) for eventual upload, synchronously.
  • glean_test_destroy_glean
    TEST-ONLY Method
  • glean_test_get_experiment_data
    TEST ONLY FUNCTION. +Returns the RecordedExperiment for the given experiment_id +or None if the id isn’t found.
  • glean_test_get_experimentation_id
    TEST ONLY FUNCTION. +Gets stored experimentation id annotation.
  • glean_unregister_event_listener
    Unregister an event listener from recieving notifications.
  • join_init
    TEST ONLY FUNCTION +Waits on all the glean.init threads’ join handles.
  • shutdown
    Shuts down Glean in an orderly fashion.
  • test_get_num_recorded_errors
    Gets the number of recorded errors for the given metric and error type.
  • Type Aliases

    \ No newline at end of file diff --git a/docs/glean_core/metrics/enum.HistogramType.html b/docs/glean_core/metrics/enum.HistogramType.html index f1237969cf..fead635170 100644 --- a/docs/glean_core/metrics/enum.HistogramType.html +++ b/docs/glean_core/metrics/enum.HistogramType.html @@ -1,11 +1,25 @@ -HistogramType in glean_core::metrics - Rust
    pub enum HistogramType {
    +HistogramType in glean_core::metrics - Rust
    +    
    pub enum HistogramType {
         Linear,
         Exponential,
    -}
    Expand description

    Different kinds of histograms.

    -

    Variants§

    §

    Linear

    A histogram with linear distributed buckets.

    +}
    Expand description

    Different kinds of histograms.

    +

    Variants§

    §

    Linear

    A histogram with linear distributed buckets.

    §

    Exponential

    A histogram with exponential distributed buckets.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Deserialize this value from the given Serde deserializer. Read more
    Serialize this value into the given Serde serializer. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Clone for HistogramType

    source§

    fn clone(&self) -> HistogramType

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for HistogramType

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<'de> Deserialize<'de> for HistogramType

    source§

    fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
    where + __D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    source§

    impl Serialize for HistogramType

    source§

    fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
    where + __S: Serializer,

    Serialize this value into the given Serde serializer. Read more
    source§

    impl TryFrom<i32> for HistogramType

    §

    type Error = Error

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: i32) -> Result<HistogramType, Self::Error>

    Performs the conversion.
    source§

    impl Copy for HistogramType

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> EncodableKey for T
    where + T: Serialize,

    §

    fn to_bytes(&self) -> Result<Vec<u8>, DataError>

    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    §

    impl<T, UT> HandleAlloc<UT> for T
    where + T: Send + Sync,

    §

    fn new_handle(value: Arc<T>) -> Handle

    Create a new handle for an Arc value Read more
    §

    fn clone_handle(handle: Handle) -> Handle

    Clone a handle Read more
    §

    fn consume_handle(handle: Handle) -> Arc<T>

    Consume a handle, getting back the initial Arc<>
    §

    fn get_arc(handle: Handle) -> Arc<Self>

    Get a clone of the Arc<> using a “borrowed” handle. Read more
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<V> ObjectSerialize for V
    where + V: Serialize + for<'de> Deserialize<'de>,

    source§

    fn from_str(obj: &str) -> Result<V, ObjectError>

    Deserialize the object from its JSON representation. Read more
    source§

    fn into_serialized_object(self) -> Result<Value, ObjectError>

    Serialize this object into a JSON string.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> DeserializeOwned for T
    where + T: for<'de> Deserialize<'de>,

    \ No newline at end of file diff --git a/docs/glean_core/metrics/enum.JsonValue.html b/docs/glean_core/metrics/enum.JsonValue.html index 2165ab3b49..39a7116c69 100644 --- a/docs/glean_core/metrics/enum.JsonValue.html +++ b/docs/glean_core/metrics/enum.JsonValue.html @@ -1,36 +1,38 @@ -JsonValue in glean_core::metrics - Rust
    pub enum JsonValue {
    +JsonValue in glean_core::metrics - Rust
    +    
    pub enum JsonValue {
         Null,
    -    Bool(bool),
    +    Bool(bool),
         Number(Number),
    -    String(String),
    -    Array(Vec<Value, Global>),
    -    Object(Map<String, Value>),
    -}
    Expand description

    Represents any valid JSON value.

    -

    See the serde_json::value module documentation for usage examples.

    -

    Variants§

    §

    Null

    Represents a JSON null value.

    + String(String), + Array(Vec<Value>), + Object(Map<String, Value>), +}
    Expand description

    Represents any valid JSON value.

    +

    See the serde_json::value module documentation for usage examples.

    +

    Variants§

    §

    Null

    Represents a JSON null value.

    let v = json!(null);
    -
    §

    Bool(bool)

    Represents a JSON boolean.

    +
    §

    Bool(bool)

    Represents a JSON boolean.

    let v = json!(true);
    §

    Number(Number)

    Represents a JSON number, whether integer or floating point.

    let v = json!(12.5);
    -
    §

    String(String)

    Represents a JSON string.

    +
    §

    String(String)

    Represents a JSON string.

    -
    let v = json!("a string");
    -
    §

    Array(Vec<Value, Global>)

    Represents a JSON array.

    +
    let v = json!("a string");
    +
    §

    Array(Vec<Value>)

    Represents a JSON array.

    -
    let v = json!(["an", "array"]);
    -
    §

    Object(Map<String, Value>)

    Represents a JSON object.

    +
    let v = json!(["an", "array"]);
    +
    §

    Object(Map<String, Value>)

    Represents a JSON object.

    By default the map is backed by a BTreeMap. Enable the preserve_order feature of serde_json to use IndexMap instead, which preserves entries in the order they are inserted into the map. In particular, this allows JSON data to be deserialized into a Value and serialized to a string while retaining the order of map keys in the input.

    -
    let v = json!({ "an": "object" });
    -

    Implementations§

    Index into a JSON array or map. A string index can be used to access a +

    let v = json!({ "an": "object" });
    +

    Implementations§

    source§

    impl Value

    source

    pub fn get<I>(&self, index: I) -> Option<&Value>
    where + I: Index,

    Index into a JSON array or map. A string index can be used to access a value in a map, and a usize index can be used to access an element of an array.

    Returns None if the type of self does not match the type of the @@ -38,27 +40,28 @@ number. Also returns None if the given key does not exist in the map or the given index is not within the bounds of the array.

    -
    let object = json!({ "A": 65, "B": 66, "C": 67 });
    -assert_eq!(*object.get("A").unwrap(), json!(65));
    +
    let object = json!({ "A": 65, "B": 66, "C": 67 });
    +assert_eq!(*object.get("A").unwrap(), json!(65));
     
    -let array = json!([ "A", "B", "C" ]);
    -assert_eq!(*array.get(2).unwrap(), json!("C"));
    +let array = json!([ "A", "B", "C" ]);
    +assert_eq!(*array.get(2).unwrap(), json!("C"));
     
    -assert_eq!(array.get("A"), None);
    +assert_eq!(array.get("A"), None);

    Square brackets can also be used to index into a value in a more concise way. This returns Value::Null in cases where get would have returned None.

    let object = json!({
    -    "A": ["a", "á", "à"],
    -    "B": ["b", "b́"],
    -    "C": ["c", "ć", "ć̣", "ḉ"],
    +    "A": ["a", "á", "à"],
    +    "B": ["b", "b́"],
    +    "C": ["c", "ć", "ć̣", "ḉ"],
     });
    -assert_eq!(object["B"][0], json!("b"));
    +assert_eq!(object["B"][0], json!("b"));
     
    -assert_eq!(object["D"], json!(null));
    -assert_eq!(object[0]["x"]["y"]["z"], json!(null));
    -

    Mutably index into a JSON array or map. A string index can be used to +assert_eq!(object["D"], json!(null)); +assert_eq!(object[0]["x"]["y"]["z"], json!(null));

    +
    source

    pub fn get_mut<I>(&mut self, index: I) -> Option<&mut Value>
    where + I: Index,

    Mutably index into a JSON array or map. A string index can be used to access a value in a map, and a usize index can be used to access an element of an array.

    Returns None if the type of self does not match the type of the @@ -66,209 +69,209 @@ number. Also returns None if the given key does not exist in the map or the given index is not within the bounds of the array.

    -
    let mut object = json!({ "A": 65, "B": 66, "C": 67 });
    -*object.get_mut("A").unwrap() = json!(69);
    +
    let mut object = json!({ "A": 65, "B": 66, "C": 67 });
    +*object.get_mut("A").unwrap() = json!(69);
     
    -let mut array = json!([ "A", "B", "C" ]);
    -*array.get_mut(2).unwrap() = json!("D");
    -

    Returns true if the Value is an Object. Returns false otherwise.

    +let mut array = json!([ "A", "B", "C" ]); +*array.get_mut(2).unwrap() = json!("D");
    +
    source

    pub fn is_object(&self) -> bool

    Returns true if the Value is an Object. Returns false otherwise.

    For any Value on which is_object returns true, as_object and as_object_mut are guaranteed to return the map representation of the object.

    -
    let obj = json!({ "a": { "nested": true }, "b": ["an", "array"] });
    +
    let obj = json!({ "a": { "nested": true }, "b": ["an", "array"] });
     
     assert!(obj.is_object());
    -assert!(obj["a"].is_object());
    +assert!(obj["a"].is_object());
     
     // array, not an object
    -assert!(!obj["b"].is_object());
    -

    If the Value is an Object, returns the associated Map. Returns None +assert!(!obj["b"].is_object());

    +
    source

    pub fn as_object(&self) -> Option<&Map<String, Value>>

    If the Value is an Object, returns the associated Map. Returns None otherwise.

    -
    let v = json!({ "a": { "nested": true }, "b": ["an", "array"] });
    +
    let v = json!({ "a": { "nested": true }, "b": ["an", "array"] });
     
    -// The length of `{"nested": true}` is 1 entry.
    -assert_eq!(v["a"].as_object().unwrap().len(), 1);
    +// The length of `{"nested": true}` is 1 entry.
    +assert_eq!(v["a"].as_object().unwrap().len(), 1);
     
    -// The array `["an", "array"]` is not an object.
    -assert_eq!(v["b"].as_object(), None);
    -

    If the Value is an Object, returns the associated mutable Map. +// The array `["an", "array"]` is not an object. +assert_eq!(v["b"].as_object(), None);

    +
    source

    pub fn as_object_mut(&mut self) -> Option<&mut Map<String, Value>>

    If the Value is an Object, returns the associated mutable Map. Returns None otherwise.

    -
    let mut v = json!({ "a": { "nested": true } });
    +
    let mut v = json!({ "a": { "nested": true } });
     
    -v["a"].as_object_mut().unwrap().clear();
    -assert_eq!(v, json!({ "a": {} }));
    -

    Returns true if the Value is an Array. Returns false otherwise.

    +v["a"].as_object_mut().unwrap().clear(); +assert_eq!(v, json!({ "a": {} }));
    +
    source

    pub fn is_array(&self) -> bool

    Returns true if the Value is an Array. Returns false otherwise.

    For any Value on which is_array returns true, as_array and as_array_mut are guaranteed to return the vector representing the array.

    -
    let obj = json!({ "a": ["an", "array"], "b": { "an": "object" } });
    +
    let obj = json!({ "a": ["an", "array"], "b": { "an": "object" } });
     
    -assert!(obj["a"].is_array());
    +assert!(obj["a"].is_array());
     
     // an object, not an array
    -assert!(!obj["b"].is_array());
    -

    If the Value is an Array, returns the associated vector. Returns None +assert!(!obj["b"].is_array());

    +
    source

    pub fn as_array(&self) -> Option<&Vec<Value>>

    If the Value is an Array, returns the associated vector. Returns None otherwise.

    -
    let v = json!({ "a": ["an", "array"], "b": { "an": "object" } });
    +
    let v = json!({ "a": ["an", "array"], "b": { "an": "object" } });
     
    -// The length of `["an", "array"]` is 2 elements.
    -assert_eq!(v["a"].as_array().unwrap().len(), 2);
    +// The length of `["an", "array"]` is 2 elements.
    +assert_eq!(v["a"].as_array().unwrap().len(), 2);
     
    -// The object `{"an": "object"}` is not an array.
    -assert_eq!(v["b"].as_array(), None);
    -

    If the Value is an Array, returns the associated mutable vector. +// The object `{"an": "object"}` is not an array. +assert_eq!(v["b"].as_array(), None);

    +
    source

    pub fn as_array_mut(&mut self) -> Option<&mut Vec<Value>>

    If the Value is an Array, returns the associated mutable vector. Returns None otherwise.

    -
    let mut v = json!({ "a": ["an", "array"] });
    +
    let mut v = json!({ "a": ["an", "array"] });
     
    -v["a"].as_array_mut().unwrap().clear();
    -assert_eq!(v, json!({ "a": [] }));
    -

    Returns true if the Value is a String. Returns false otherwise.

    +v["a"].as_array_mut().unwrap().clear(); +assert_eq!(v, json!({ "a": [] }));
    +
    source

    pub fn is_string(&self) -> bool

    Returns true if the Value is a String. Returns false otherwise.

    For any Value on which is_string returns true, as_str is guaranteed to return the string slice.

    -
    let v = json!({ "a": "some string", "b": false });
    +
    let v = json!({ "a": "some string", "b": false });
     
    -assert!(v["a"].is_string());
    +assert!(v["a"].is_string());
     
     // The boolean `false` is not a string.
    -assert!(!v["b"].is_string());
    -

    If the Value is a String, returns the associated str. Returns None +assert!(!v["b"].is_string());

    +
    source

    pub fn as_str(&self) -> Option<&str>

    If the Value is a String, returns the associated str. Returns None otherwise.

    -
    let v = json!({ "a": "some string", "b": false });
    +
    let v = json!({ "a": "some string", "b": false });
     
    -assert_eq!(v["a"].as_str(), Some("some string"));
    +assert_eq!(v["a"].as_str(), Some("some string"));
     
     // The boolean `false` is not a string.
    -assert_eq!(v["b"].as_str(), None);
    +assert_eq!(v["b"].as_str(), None);
     
     // JSON values are printed in JSON representation, so strings are in quotes.
     //
    -//    The value is: "some string"
    -println!("The value is: {}", v["a"]);
    +//    The value is: "some string"
    +println!("The value is: {}", v["a"]);
     
     // Rust strings are printed without quotes.
     //
     //    The value is: some string
    -println!("The value is: {}", v["a"].as_str().unwrap());
    -

    Returns true if the Value is a Number. Returns false otherwise.

    +println!("The value is: {}", v["a"].as_str().unwrap());
    +
    source

    pub fn is_number(&self) -> bool

    Returns true if the Value is a Number. Returns false otherwise.

    -
    let v = json!({ "a": 1, "b": "2" });
    +
    let v = json!({ "a": 1, "b": "2" });
     
    -assert!(v["a"].is_number());
    +assert!(v["a"].is_number());
     
    -// The string `"2"` is a string, not a number.
    -assert!(!v["b"].is_number());
    -

    Returns true if the Value is an integer between i64::MIN and +// The string `"2"` is a string, not a number. +assert!(!v["b"].is_number());

    +
    source

    pub fn is_i64(&self) -> bool

    Returns true if the Value is an integer between i64::MIN and i64::MAX.

    For any Value on which is_i64 returns true, as_i64 is guaranteed to return the integer value.

    let big = i64::max_value() as u64 + 10;
    -let v = json!({ "a": 64, "b": big, "c": 256.0 });
    +let v = json!({ "a": 64, "b": big, "c": 256.0 });
     
    -assert!(v["a"].is_i64());
    +assert!(v["a"].is_i64());
     
     // Greater than i64::MAX.
    -assert!(!v["b"].is_i64());
    +assert!(!v["b"].is_i64());
     
     // Numbers with a decimal point are not considered integers.
    -assert!(!v["c"].is_i64());
    -

    Returns true if the Value is an integer between zero and u64::MAX.

    +assert!(!v["c"].is_i64());
    +
    source

    pub fn is_u64(&self) -> bool

    Returns true if the Value is an integer between zero and u64::MAX.

    For any Value on which is_u64 returns true, as_u64 is guaranteed to return the integer value.

    -
    let v = json!({ "a": 64, "b": -64, "c": 256.0 });
    +
    let v = json!({ "a": 64, "b": -64, "c": 256.0 });
     
    -assert!(v["a"].is_u64());
    +assert!(v["a"].is_u64());
     
     // Negative integer.
    -assert!(!v["b"].is_u64());
    +assert!(!v["b"].is_u64());
     
     // Numbers with a decimal point are not considered integers.
    -assert!(!v["c"].is_u64());
    -

    Returns true if the Value is a number that can be represented by f64.

    +assert!(!v["c"].is_u64());
    +
    source

    pub fn is_f64(&self) -> bool

    Returns true if the Value is a number that can be represented by f64.

    For any Value on which is_f64 returns true, as_f64 is guaranteed to return the floating point value.

    Currently this function returns true if and only if both is_i64 and is_u64 return false but this is not a guarantee in the future.

    -
    let v = json!({ "a": 256.0, "b": 64, "c": -64 });
    +
    let v = json!({ "a": 256.0, "b": 64, "c": -64 });
     
    -assert!(v["a"].is_f64());
    +assert!(v["a"].is_f64());
     
     // Integers.
    -assert!(!v["b"].is_f64());
    -assert!(!v["c"].is_f64());
    -

    If the Value is an integer, represent it as i64 if possible. Returns +assert!(!v["b"].is_f64()); +assert!(!v["c"].is_f64());

    +
    source

    pub fn as_i64(&self) -> Option<i64>

    If the Value is an integer, represent it as i64 if possible. Returns None otherwise.

    let big = i64::max_value() as u64 + 10;
    -let v = json!({ "a": 64, "b": big, "c": 256.0 });
    +let v = json!({ "a": 64, "b": big, "c": 256.0 });
     
    -assert_eq!(v["a"].as_i64(), Some(64));
    -assert_eq!(v["b"].as_i64(), None);
    -assert_eq!(v["c"].as_i64(), None);
    -

    If the Value is an integer, represent it as u64 if possible. Returns +assert_eq!(v["a"].as_i64(), Some(64)); +assert_eq!(v["b"].as_i64(), None); +assert_eq!(v["c"].as_i64(), None);

    +
    source

    pub fn as_u64(&self) -> Option<u64>

    If the Value is an integer, represent it as u64 if possible. Returns None otherwise.

    -
    let v = json!({ "a": 64, "b": -64, "c": 256.0 });
    +
    let v = json!({ "a": 64, "b": -64, "c": 256.0 });
     
    -assert_eq!(v["a"].as_u64(), Some(64));
    -assert_eq!(v["b"].as_u64(), None);
    -assert_eq!(v["c"].as_u64(), None);
    -

    If the Value is a number, represent it as f64 if possible. Returns +assert_eq!(v["a"].as_u64(), Some(64)); +assert_eq!(v["b"].as_u64(), None); +assert_eq!(v["c"].as_u64(), None);

    +
    source

    pub fn as_f64(&self) -> Option<f64>

    If the Value is a number, represent it as f64 if possible. Returns None otherwise.

    -
    let v = json!({ "a": 256.0, "b": 64, "c": -64 });
    +
    let v = json!({ "a": 256.0, "b": 64, "c": -64 });
     
    -assert_eq!(v["a"].as_f64(), Some(256.0));
    -assert_eq!(v["b"].as_f64(), Some(64.0));
    -assert_eq!(v["c"].as_f64(), Some(-64.0));
    -

    Returns true if the Value is a Boolean. Returns false otherwise.

    +assert_eq!(v["a"].as_f64(), Some(256.0)); +assert_eq!(v["b"].as_f64(), Some(64.0)); +assert_eq!(v["c"].as_f64(), Some(-64.0));
    +
    source

    pub fn is_boolean(&self) -> bool

    Returns true if the Value is a Boolean. Returns false otherwise.

    For any Value on which is_boolean returns true, as_bool is guaranteed to return the boolean value.

    -
    let v = json!({ "a": false, "b": "false" });
    +
    let v = json!({ "a": false, "b": "false" });
     
    -assert!(v["a"].is_boolean());
    +assert!(v["a"].is_boolean());
     
    -// The string `"false"` is a string, not a boolean.
    -assert!(!v["b"].is_boolean());
    -

    If the Value is a Boolean, returns the associated bool. Returns None +// The string `"false"` is a string, not a boolean. +assert!(!v["b"].is_boolean());

    +
    source

    pub fn as_bool(&self) -> Option<bool>

    If the Value is a Boolean, returns the associated bool. Returns None otherwise.

    -
    let v = json!({ "a": false, "b": "false" });
    +
    let v = json!({ "a": false, "b": "false" });
     
    -assert_eq!(v["a"].as_bool(), Some(false));
    +assert_eq!(v["a"].as_bool(), Some(false));
     
    -// The string `"false"` is a string, not a boolean.
    -assert_eq!(v["b"].as_bool(), None);
    -

    Returns true if the Value is a Null. Returns false otherwise.

    +// The string `"false"` is a string, not a boolean. +assert_eq!(v["b"].as_bool(), None);
    +
    source

    pub fn is_null(&self) -> bool

    Returns true if the Value is a Null. Returns false otherwise.

    For any Value on which is_null returns true, as_null is guaranteed to return Some(()).

    -
    let v = json!({ "a": null, "b": false });
    +
    let v = json!({ "a": null, "b": false });
     
    -assert!(v["a"].is_null());
    +assert!(v["a"].is_null());
     
     // The boolean `false` is not null.
    -assert!(!v["b"].is_null());
    -

    If the Value is a Null, returns (). Returns None otherwise.

    +assert!(!v["b"].is_null());
    +
    source

    pub fn as_null(&self) -> Option<()>

    If the Value is a Null, returns (). Returns None otherwise.

    -
    let v = json!({ "a": null, "b": false });
    +
    let v = json!({ "a": null, "b": false });
     
    -assert_eq!(v["a"].as_null(), Some(()));
    +assert_eq!(v["a"].as_null(), Some(()));
     
     // The boolean `false` is not null.
    -assert_eq!(v["b"].as_null(), None);
    -

    Looks up a value by a JSON Pointer.

    +assert_eq!(v["b"].as_null(), None);
    +
    source

    pub fn pointer(&self, pointer: &str) -> Option<&Value>

    Looks up a value by a JSON Pointer.

    JSON Pointer defines a string syntax for identifying a specific value within a JavaScript Object Notation (JSON) document.

    A Pointer is a Unicode string with the reference tokens separated by /. @@ -278,14 +281,14 @@

    For more information read RFC6901.

    Examples
    let data = json!({
    -    "x": {
    -        "y": ["z", "zz"]
    +    "x": {
    +        "y": ["z", "zz"]
         }
     });
     
    -assert_eq!(data.pointer("/x/y/1").unwrap(), &json!("zz"));
    -assert_eq!(data.pointer("/a/b/c"), None);
    -

    Looks up a value by a JSON Pointer and returns a mutable reference to +assert_eq!(data.pointer("/x/y/1").unwrap(), &json!("zz")); +assert_eq!(data.pointer("/a/b/c"), None);

    +
    source

    pub fn pointer_mut(&mut self, pointer: &str) -> Option<&mut Value>

    Looks up a value by a JSON Pointer and returns a mutable reference to that value.

    JSON Pointer defines a string syntax for identifying a specific value within a JavaScript Object Notation (JSON) document.

    @@ -298,31 +301,31 @@
    Example of Use
    use serde_json::Value;
     
     fn main() {
    -    let s = r#"{"x": 1.0, "y": 2.0}"#;
    +    let s = r#"{"x": 1.0, "y": 2.0}"#;
         let mut value: Value = serde_json::from_str(s).unwrap();
     
         // Check value using read-only pointer
    -    assert_eq!(value.pointer("/x"), Some(&1.0.into()));
    +    assert_eq!(value.pointer("/x"), Some(&1.0.into()));
         // Change value with direct assignment
    -    *value.pointer_mut("/x").unwrap() = 1.5.into();
    +    *value.pointer_mut("/x").unwrap() = 1.5.into();
         // Check that new value was written
    -    assert_eq!(value.pointer("/x"), Some(&1.5.into()));
    +    assert_eq!(value.pointer("/x"), Some(&1.5.into()));
         // Or change the value only if it exists
    -    value.pointer_mut("/x").map(|v| *v = 1.5.into());
    +    value.pointer_mut("/x").map(|v| *v = 1.5.into());
     
    -    // "Steal" ownership of a value. Can replace with any valid Value.
    -    let old_x = value.pointer_mut("/x").map(Value::take).unwrap();
    +    // "Steal" ownership of a value. Can replace with any valid Value.
    +    let old_x = value.pointer_mut("/x").map(Value::take).unwrap();
         assert_eq!(old_x, 1.5);
    -    assert_eq!(value.pointer("/x").unwrap(), &Value::Null);
    +    assert_eq!(value.pointer("/x").unwrap(), &Value::Null);
     }
    -

    Takes the value out of the Value, leaving a Null in its place.

    +
    source

    pub fn take(&mut self) -> Value

    Takes the value out of the Value, leaving a Null in its place.

    -
    let mut v = json!({ "x": "y" });
    -assert_eq!(v["x"].take(), json!("y"));
    -assert_eq!(v, json!({ "x": null }));
    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more

    The default value is Value::Null.

    +
    let mut v = json!({ "x": "y" });
    +assert_eq!(v["x"].take(), json!("y"));
    +assert_eq!(v, json!({ "x": null }));
    +

    Trait Implementations§

    source§

    impl Clone for Value

    source§

    fn clone(&self) -> Value

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Value

    source§

    fn fmt(&self, formatter: &mut Formatter<'_>) -> Result<(), Error>

    Formats the value using the given formatter. Read more
    source§

    impl Default for Value

    The default value is Value::Null.

    This is useful for handling omitted Value fields when deserializing.

    -

    Examples

    +

    Examples

    use serde_json::Value;
     
     #[derive(Deserialize)]
    @@ -332,151 +335,428 @@ 

    Examples

    extras: Value, } -let data = r#" { "level": 42 } "#; +let data = r#" { "level": 42 } "#; let s: Settings = serde_json::from_str(data)?; assert_eq!(s.level, 42); assert_eq!(s.extras, Value::Null);
    -
    Returns the “default value” for a type. Read more
    Deserialize this value from the given Serde deserializer. Read more
    The error type that can be returned if some error occurs during -deserialization. Read more
    Require the Deserializer to figure out how to drive the visitor based -on what data type is in the input. Read more
    Hint that the Deserialize type is expecting an i8 value.
    Hint that the Deserialize type is expecting an i16 value.
    Hint that the Deserialize type is expecting an i32 value.
    Hint that the Deserialize type is expecting an i64 value.
    Hint that the Deserialize type is expecting an i128 value. Read more
    Hint that the Deserialize type is expecting a u8 value.
    Hint that the Deserialize type is expecting a u16 value.
    Hint that the Deserialize type is expecting a u32 value.
    Hint that the Deserialize type is expecting a u64 value.
    Hint that the Deserialize type is expecting an u128 value. Read more
    Hint that the Deserialize type is expecting a f32 value.
    Hint that the Deserialize type is expecting a f64 value.
    Hint that the Deserialize type is expecting an optional value. Read more
    Hint that the Deserialize type is expecting an enum value with a -particular name and possible variants. Read more
    Hint that the Deserialize type is expecting a newtype struct with a -particular name. Read more
    Hint that the Deserialize type is expecting a bool value.
    Hint that the Deserialize type is expecting a char value.
    Hint that the Deserialize type is expecting a string value and does +
    source§

    fn default() -> Value

    Returns the “default value” for a type. Read more
    source§

    impl<'de> Deserialize<'de> for Value

    source§

    fn deserialize<D>( + deserializer: D +) -> Result<Value, <D as Deserializer<'de>>::Error>
    where + D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    source§

    impl<'de> Deserializer<'de> for &'de Value

    §

    type Error = Error

    The error type that can be returned if some error occurs during +deserialization.
    source§

    fn deserialize_any<V>( + self, + visitor: V +) -> Result<<V as Visitor<'de>>::Value, Error>
    where + V: Visitor<'de>,

    Require the Deserializer to figure out how to drive the visitor based +on what data type is in the input. Read more
    source§

    fn deserialize_i8<V>( + self, + visitor: V +) -> Result<<V as Visitor<'de>>::Value, Error>
    where + V: Visitor<'de>,

    Hint that the Deserialize type is expecting an i8 value.
    source§

    fn deserialize_i16<V>( + self, + visitor: V +) -> Result<<V as Visitor<'de>>::Value, Error>
    where + V: Visitor<'de>,

    Hint that the Deserialize type is expecting an i16 value.
    source§

    fn deserialize_i32<V>( + self, + visitor: V +) -> Result<<V as Visitor<'de>>::Value, Error>
    where + V: Visitor<'de>,

    Hint that the Deserialize type is expecting an i32 value.
    source§

    fn deserialize_i64<V>( + self, + visitor: V +) -> Result<<V as Visitor<'de>>::Value, Error>
    where + V: Visitor<'de>,

    Hint that the Deserialize type is expecting an i64 value.
    source§

    fn deserialize_i128<V>( + self, + visitor: V +) -> Result<<V as Visitor<'de>>::Value, Error>
    where + V: Visitor<'de>,

    Hint that the Deserialize type is expecting an i128 value. Read more
    source§

    fn deserialize_u8<V>( + self, + visitor: V +) -> Result<<V as Visitor<'de>>::Value, Error>
    where + V: Visitor<'de>,

    Hint that the Deserialize type is expecting a u8 value.
    source§

    fn deserialize_u16<V>( + self, + visitor: V +) -> Result<<V as Visitor<'de>>::Value, Error>
    where + V: Visitor<'de>,

    Hint that the Deserialize type is expecting a u16 value.
    source§

    fn deserialize_u32<V>( + self, + visitor: V +) -> Result<<V as Visitor<'de>>::Value, Error>
    where + V: Visitor<'de>,

    Hint that the Deserialize type is expecting a u32 value.
    source§

    fn deserialize_u64<V>( + self, + visitor: V +) -> Result<<V as Visitor<'de>>::Value, Error>
    where + V: Visitor<'de>,

    Hint that the Deserialize type is expecting a u64 value.
    source§

    fn deserialize_u128<V>( + self, + visitor: V +) -> Result<<V as Visitor<'de>>::Value, Error>
    where + V: Visitor<'de>,

    Hint that the Deserialize type is expecting an u128 value. Read more
    source§

    fn deserialize_f32<V>( + self, + visitor: V +) -> Result<<V as Visitor<'de>>::Value, Error>
    where + V: Visitor<'de>,

    Hint that the Deserialize type is expecting a f32 value.
    source§

    fn deserialize_f64<V>( + self, + visitor: V +) -> Result<<V as Visitor<'de>>::Value, Error>
    where + V: Visitor<'de>,

    Hint that the Deserialize type is expecting a f64 value.
    source§

    fn deserialize_option<V>( + self, + visitor: V +) -> Result<<V as Visitor<'de>>::Value, Error>
    where + V: Visitor<'de>,

    Hint that the Deserialize type is expecting an optional value. Read more
    source§

    fn deserialize_enum<V>( + self, + _name: &str, + _variants: &'static [&'static str], + visitor: V +) -> Result<<V as Visitor<'de>>::Value, Error>
    where + V: Visitor<'de>,

    Hint that the Deserialize type is expecting an enum value with a +particular name and possible variants.
    source§

    fn deserialize_newtype_struct<V>( + self, + name: &'static str, + visitor: V +) -> Result<<V as Visitor<'de>>::Value, Error>
    where + V: Visitor<'de>,

    Hint that the Deserialize type is expecting a newtype struct with a +particular name.
    source§

    fn deserialize_bool<V>( + self, + visitor: V +) -> Result<<V as Visitor<'de>>::Value, Error>
    where + V: Visitor<'de>,

    Hint that the Deserialize type is expecting a bool value.
    source§

    fn deserialize_char<V>( + self, + visitor: V +) -> Result<<V as Visitor<'de>>::Value, Error>
    where + V: Visitor<'de>,

    Hint that the Deserialize type is expecting a char value.
    source§

    fn deserialize_str<V>( + self, + visitor: V +) -> Result<<V as Visitor<'de>>::Value, Error>
    where + V: Visitor<'de>,

    Hint that the Deserialize type is expecting a string value and does not benefit from taking ownership of buffered data owned by the -Deserializer. Read more
    Hint that the Deserialize type is expecting a string value and would +Deserializer. Read more
    source§

    fn deserialize_string<V>( + self, + visitor: V +) -> Result<<V as Visitor<'de>>::Value, Error>
    where + V: Visitor<'de>,

    Hint that the Deserialize type is expecting a string value and would benefit from taking ownership of buffered data owned by the -Deserializer. Read more
    Hint that the Deserialize type is expecting a byte array and does not +Deserializer. Read more
    source§

    fn deserialize_bytes<V>( + self, + visitor: V +) -> Result<<V as Visitor<'de>>::Value, Error>
    where + V: Visitor<'de>,

    Hint that the Deserialize type is expecting a byte array and does not benefit from taking ownership of buffered data owned by the -Deserializer. Read more
    Hint that the Deserialize type is expecting a byte array and would +Deserializer. Read more
    source§

    fn deserialize_byte_buf<V>( + self, + visitor: V +) -> Result<<V as Visitor<'de>>::Value, Error>
    where + V: Visitor<'de>,

    Hint that the Deserialize type is expecting a byte array and would benefit from taking ownership of buffered data owned by the -Deserializer. Read more
    Hint that the Deserialize type is expecting a unit value.
    Hint that the Deserialize type is expecting a unit struct with a -particular name. Read more
    Hint that the Deserialize type is expecting a sequence of values.
    Hint that the Deserialize type is expecting a sequence of values and -knows how many values there are without looking at the serialized data. Read more
    Hint that the Deserialize type is expecting a tuple struct with a -particular name and number of fields. Read more
    Hint that the Deserialize type is expecting a map of key-value pairs.
    Hint that the Deserialize type is expecting a struct with a particular -name and fields. Read more
    Hint that the Deserialize type is expecting the name of a struct -field or the discriminant of an enum variant. Read more
    Hint that the Deserialize type needs to deserialize a value whose type -doesn’t matter because it is ignored. Read more
    Determine whether Deserialize implementations should expect to -deserialize their human-readable form. Read more
    The error type that can be returned if some error occurs during -deserialization. Read more
    Require the Deserializer to figure out how to drive the visitor based -on what data type is in the input. Read more
    Hint that the Deserialize type is expecting an i8 value.
    Hint that the Deserialize type is expecting an i16 value.
    Hint that the Deserialize type is expecting an i32 value.
    Hint that the Deserialize type is expecting an i64 value.
    Hint that the Deserialize type is expecting an i128 value. Read more
    Hint that the Deserialize type is expecting a u8 value.
    Hint that the Deserialize type is expecting a u16 value.
    Hint that the Deserialize type is expecting a u32 value.
    Hint that the Deserialize type is expecting a u64 value.
    Hint that the Deserialize type is expecting an u128 value. Read more
    Hint that the Deserialize type is expecting a f32 value.
    Hint that the Deserialize type is expecting a f64 value.
    Hint that the Deserialize type is expecting an optional value. Read more
    Hint that the Deserialize type is expecting an enum value with a -particular name and possible variants. Read more
    Hint that the Deserialize type is expecting a newtype struct with a -particular name. Read more
    Hint that the Deserialize type is expecting a bool value.
    Hint that the Deserialize type is expecting a char value.
    Hint that the Deserialize type is expecting a string value and does +Deserializer. Read more
    source§

    fn deserialize_unit<V>( + self, + visitor: V +) -> Result<<V as Visitor<'de>>::Value, Error>
    where + V: Visitor<'de>,

    Hint that the Deserialize type is expecting a unit value.
    source§

    fn deserialize_unit_struct<V>( + self, + _name: &'static str, + visitor: V +) -> Result<<V as Visitor<'de>>::Value, Error>
    where + V: Visitor<'de>,

    Hint that the Deserialize type is expecting a unit struct with a +particular name.
    source§

    fn deserialize_seq<V>( + self, + visitor: V +) -> Result<<V as Visitor<'de>>::Value, Error>
    where + V: Visitor<'de>,

    Hint that the Deserialize type is expecting a sequence of values.
    source§

    fn deserialize_tuple<V>( + self, + _len: usize, + visitor: V +) -> Result<<V as Visitor<'de>>::Value, Error>
    where + V: Visitor<'de>,

    Hint that the Deserialize type is expecting a sequence of values and +knows how many values there are without looking at the serialized data.
    source§

    fn deserialize_tuple_struct<V>( + self, + _name: &'static str, + _len: usize, + visitor: V +) -> Result<<V as Visitor<'de>>::Value, Error>
    where + V: Visitor<'de>,

    Hint that the Deserialize type is expecting a tuple struct with a +particular name and number of fields.
    source§

    fn deserialize_map<V>( + self, + visitor: V +) -> Result<<V as Visitor<'de>>::Value, Error>
    where + V: Visitor<'de>,

    Hint that the Deserialize type is expecting a map of key-value pairs.
    source§

    fn deserialize_struct<V>( + self, + _name: &'static str, + _fields: &'static [&'static str], + visitor: V +) -> Result<<V as Visitor<'de>>::Value, Error>
    where + V: Visitor<'de>,

    Hint that the Deserialize type is expecting a struct with a particular +name and fields.
    source§

    fn deserialize_identifier<V>( + self, + visitor: V +) -> Result<<V as Visitor<'de>>::Value, Error>
    where + V: Visitor<'de>,

    Hint that the Deserialize type is expecting the name of a struct +field or the discriminant of an enum variant.
    source§

    fn deserialize_ignored_any<V>( + self, + visitor: V +) -> Result<<V as Visitor<'de>>::Value, Error>
    where + V: Visitor<'de>,

    Hint that the Deserialize type needs to deserialize a value whose type +doesn’t matter because it is ignored. Read more
    source§

    fn is_human_readable(&self) -> bool

    Determine whether Deserialize implementations should expect to +deserialize their human-readable form. Read more
    source§

    impl<'de> Deserializer<'de> for Value

    §

    type Error = Error

    The error type that can be returned if some error occurs during +deserialization.
    source§

    fn deserialize_any<V>( + self, + visitor: V +) -> Result<<V as Visitor<'de>>::Value, Error>
    where + V: Visitor<'de>,

    Require the Deserializer to figure out how to drive the visitor based +on what data type is in the input. Read more
    source§

    fn deserialize_i8<V>( + self, + visitor: V +) -> Result<<V as Visitor<'de>>::Value, Error>
    where + V: Visitor<'de>,

    Hint that the Deserialize type is expecting an i8 value.
    source§

    fn deserialize_i16<V>( + self, + visitor: V +) -> Result<<V as Visitor<'de>>::Value, Error>
    where + V: Visitor<'de>,

    Hint that the Deserialize type is expecting an i16 value.
    source§

    fn deserialize_i32<V>( + self, + visitor: V +) -> Result<<V as Visitor<'de>>::Value, Error>
    where + V: Visitor<'de>,

    Hint that the Deserialize type is expecting an i32 value.
    source§

    fn deserialize_i64<V>( + self, + visitor: V +) -> Result<<V as Visitor<'de>>::Value, Error>
    where + V: Visitor<'de>,

    Hint that the Deserialize type is expecting an i64 value.
    source§

    fn deserialize_i128<V>( + self, + visitor: V +) -> Result<<V as Visitor<'de>>::Value, Error>
    where + V: Visitor<'de>,

    Hint that the Deserialize type is expecting an i128 value. Read more
    source§

    fn deserialize_u8<V>( + self, + visitor: V +) -> Result<<V as Visitor<'de>>::Value, Error>
    where + V: Visitor<'de>,

    Hint that the Deserialize type is expecting a u8 value.
    source§

    fn deserialize_u16<V>( + self, + visitor: V +) -> Result<<V as Visitor<'de>>::Value, Error>
    where + V: Visitor<'de>,

    Hint that the Deserialize type is expecting a u16 value.
    source§

    fn deserialize_u32<V>( + self, + visitor: V +) -> Result<<V as Visitor<'de>>::Value, Error>
    where + V: Visitor<'de>,

    Hint that the Deserialize type is expecting a u32 value.
    source§

    fn deserialize_u64<V>( + self, + visitor: V +) -> Result<<V as Visitor<'de>>::Value, Error>
    where + V: Visitor<'de>,

    Hint that the Deserialize type is expecting a u64 value.
    source§

    fn deserialize_u128<V>( + self, + visitor: V +) -> Result<<V as Visitor<'de>>::Value, Error>
    where + V: Visitor<'de>,

    Hint that the Deserialize type is expecting an u128 value. Read more
    source§

    fn deserialize_f32<V>( + self, + visitor: V +) -> Result<<V as Visitor<'de>>::Value, Error>
    where + V: Visitor<'de>,

    Hint that the Deserialize type is expecting a f32 value.
    source§

    fn deserialize_f64<V>( + self, + visitor: V +) -> Result<<V as Visitor<'de>>::Value, Error>
    where + V: Visitor<'de>,

    Hint that the Deserialize type is expecting a f64 value.
    source§

    fn deserialize_option<V>( + self, + visitor: V +) -> Result<<V as Visitor<'de>>::Value, Error>
    where + V: Visitor<'de>,

    Hint that the Deserialize type is expecting an optional value. Read more
    source§

    fn deserialize_enum<V>( + self, + _name: &str, + _variants: &'static [&'static str], + visitor: V +) -> Result<<V as Visitor<'de>>::Value, Error>
    where + V: Visitor<'de>,

    Hint that the Deserialize type is expecting an enum value with a +particular name and possible variants.
    source§

    fn deserialize_newtype_struct<V>( + self, + name: &'static str, + visitor: V +) -> Result<<V as Visitor<'de>>::Value, Error>
    where + V: Visitor<'de>,

    Hint that the Deserialize type is expecting a newtype struct with a +particular name.
    source§

    fn deserialize_bool<V>( + self, + visitor: V +) -> Result<<V as Visitor<'de>>::Value, Error>
    where + V: Visitor<'de>,

    Hint that the Deserialize type is expecting a bool value.
    source§

    fn deserialize_char<V>( + self, + visitor: V +) -> Result<<V as Visitor<'de>>::Value, Error>
    where + V: Visitor<'de>,

    Hint that the Deserialize type is expecting a char value.
    source§

    fn deserialize_str<V>( + self, + visitor: V +) -> Result<<V as Visitor<'de>>::Value, Error>
    where + V: Visitor<'de>,

    Hint that the Deserialize type is expecting a string value and does not benefit from taking ownership of buffered data owned by the -Deserializer. Read more
    Hint that the Deserialize type is expecting a string value and would +Deserializer. Read more
    source§

    fn deserialize_string<V>( + self, + visitor: V +) -> Result<<V as Visitor<'de>>::Value, Error>
    where + V: Visitor<'de>,

    Hint that the Deserialize type is expecting a string value and would benefit from taking ownership of buffered data owned by the -Deserializer. Read more
    Hint that the Deserialize type is expecting a byte array and does not +Deserializer. Read more
    source§

    fn deserialize_bytes<V>( + self, + visitor: V +) -> Result<<V as Visitor<'de>>::Value, Error>
    where + V: Visitor<'de>,

    Hint that the Deserialize type is expecting a byte array and does not benefit from taking ownership of buffered data owned by the -Deserializer. Read more
    Hint that the Deserialize type is expecting a byte array and would +Deserializer. Read more
    source§

    fn deserialize_byte_buf<V>( + self, + visitor: V +) -> Result<<V as Visitor<'de>>::Value, Error>
    where + V: Visitor<'de>,

    Hint that the Deserialize type is expecting a byte array and would benefit from taking ownership of buffered data owned by the -Deserializer. Read more
    Hint that the Deserialize type is expecting a unit value.
    Hint that the Deserialize type is expecting a unit struct with a -particular name. Read more
    Hint that the Deserialize type is expecting a sequence of values.
    Hint that the Deserialize type is expecting a sequence of values and -knows how many values there are without looking at the serialized data. Read more
    Hint that the Deserialize type is expecting a tuple struct with a -particular name and number of fields. Read more
    Hint that the Deserialize type is expecting a map of key-value pairs.
    Hint that the Deserialize type is expecting a struct with a particular -name and fields. Read more
    Hint that the Deserialize type is expecting the name of a struct -field or the discriminant of an enum variant. Read more
    Hint that the Deserialize type needs to deserialize a value whose type -doesn’t matter because it is ignored. Read more
    Determine whether Deserialize implementations should expect to -deserialize their human-readable form. Read more

    Display a JSON value as a string.

    - -
    let json = json!({ "city": "London", "street": "10 Downing Street" });
    +Deserializer. Read more
    source§

    fn deserialize_unit<V>( + self, + visitor: V +) -> Result<<V as Visitor<'de>>::Value, Error>
    where + V: Visitor<'de>,

    Hint that the Deserialize type is expecting a unit value.
    source§

    fn deserialize_unit_struct<V>( + self, + _name: &'static str, + visitor: V +) -> Result<<V as Visitor<'de>>::Value, Error>
    where + V: Visitor<'de>,

    Hint that the Deserialize type is expecting a unit struct with a +particular name.
    source§

    fn deserialize_seq<V>( + self, + visitor: V +) -> Result<<V as Visitor<'de>>::Value, Error>
    where + V: Visitor<'de>,

    Hint that the Deserialize type is expecting a sequence of values.
    source§

    fn deserialize_tuple<V>( + self, + _len: usize, + visitor: V +) -> Result<<V as Visitor<'de>>::Value, Error>
    where + V: Visitor<'de>,

    Hint that the Deserialize type is expecting a sequence of values and +knows how many values there are without looking at the serialized data.
    source§

    fn deserialize_tuple_struct<V>( + self, + _name: &'static str, + _len: usize, + visitor: V +) -> Result<<V as Visitor<'de>>::Value, Error>
    where + V: Visitor<'de>,

    Hint that the Deserialize type is expecting a tuple struct with a +particular name and number of fields.
    source§

    fn deserialize_map<V>( + self, + visitor: V +) -> Result<<V as Visitor<'de>>::Value, Error>
    where + V: Visitor<'de>,

    Hint that the Deserialize type is expecting a map of key-value pairs.
    source§

    fn deserialize_struct<V>( + self, + _name: &'static str, + _fields: &'static [&'static str], + visitor: V +) -> Result<<V as Visitor<'de>>::Value, Error>
    where + V: Visitor<'de>,

    Hint that the Deserialize type is expecting a struct with a particular +name and fields.
    source§

    fn deserialize_identifier<V>( + self, + visitor: V +) -> Result<<V as Visitor<'de>>::Value, Error>
    where + V: Visitor<'de>,

    Hint that the Deserialize type is expecting the name of a struct +field or the discriminant of an enum variant.
    source§

    fn deserialize_ignored_any<V>( + self, + visitor: V +) -> Result<<V as Visitor<'de>>::Value, Error>
    where + V: Visitor<'de>,

    Hint that the Deserialize type needs to deserialize a value whose type +doesn’t matter because it is ignored. Read more
    source§

    fn is_human_readable(&self) -> bool

    Determine whether Deserialize implementations should expect to +deserialize their human-readable form. Read more
    source§

    impl Display for Value

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

    Display a JSON value as a string.

    + +
    let json = json!({ "city": "London", "street": "10 Downing Street" });
     
     // Compact format:
     //
    -// {"city":"London","street":"10 Downing Street"}
    -let compact = format!("{}", json);
    +// {"city":"London","street":"10 Downing Street"}
    +let compact = format!("{}", json);
     assert_eq!(compact,
    -    "{\"city\":\"London\",\"street\":\"10 Downing Street\"}");
    +    "{\"city\":\"London\",\"street\":\"10 Downing Street\"}");
     
     // Pretty format:
     //
     // {
    -//   "city": "London",
    -//   "street": "10 Downing Street"
    +//   "city": "London",
    +//   "street": "10 Downing Street"
     // }
    -let pretty = format!("{:#}", json);
    +let pretty = format!("{:#}", json);
     assert_eq!(pretty,
    -    "{\n  \"city\": \"London\",\n  \"street\": \"10 Downing Street\"\n}");
    -

    Convert a slice to Value

    -
    Examples
    + "{\n \"city\": \"London\",\n \"street\": \"10 Downing Street\"\n}");
    +
    source§

    impl<'a, T> From<&'a [T]> for Value
    where + T: Clone + Into<Value>,

    source§

    fn from(f: &'a [T]) -> Value

    Convert a slice to Value

    +
    Examples
    use serde_json::Value;
     
    -let v: &[&str] = &["lorem", "ipsum", "dolor"];
    +let v: &[&str] = &["lorem", "ipsum", "dolor"];
     let x: Value = v.into();
    -

    Convert string slice to Value

    -
    Examples
    +
    source§

    impl<'a> From<&'a str> for Value

    source§

    fn from(f: &str) -> Value

    Convert string slice to Value

    +
    Examples
    use serde_json::Value;
     
    -let s: &str = "lorem";
    +let s: &str = "lorem";
     let x: Value = s.into();
    -

    Convert () to Value

    -
    Examples
    +
    source§

    impl From<()> for Value

    source§

    fn from(_: ()) -> Value

    Convert () to Value

    +
    Examples
    use serde_json::Value;
     
     let u = ();
     let x: Value = u.into();
    -

    Convert copy-on-write string to Value

    -
    Examples
    +
    source§

    impl<'a> From<Cow<'a, str>> for Value

    source§

    fn from(f: Cow<'a, str>) -> Value

    Convert copy-on-write string to Value

    +
    Examples
    use serde_json::Value;
     use std::borrow::Cow;
     
    -let s: Cow<str> = Cow::Borrowed("lorem");
    +let s: Cow<str> = Cow::Borrowed("lorem");
     let x: Value = s.into();
    use serde_json::Value;
     use std::borrow::Cow;
     
    -let s: Cow<str> = Cow::Owned("lorem".to_string());
    +let s: Cow<str> = Cow::Owned("lorem".to_string());
     let x: Value = s.into();
    -

    Convert map (with string keys) to Value

    -
    Examples
    +
    source§

    impl From<Map<String, Value>> for Value

    source§

    fn from(f: Map<String, Value>) -> Value

    Convert map (with string keys) to Value

    +
    Examples
    use serde_json::{Map, Value};
     
     let mut m = Map::new();
    -m.insert("Lorem".to_string(), "ipsum".into());
    +m.insert("Lorem".to_string(), "ipsum".into());
     let x: Value = m.into();
    -

    Convert Number to Value

    -
    Examples
    +
    source§

    impl From<Number> for Value

    source§

    fn from(f: Number) -> Value

    Convert Number to Value

    +
    Examples
    use serde_json::{Number, Value};
     
     let n = Number::from(7);
     let x: Value = n.into();
    -
    Converts to this type from the input type.

    Convert String to Value

    -
    Examples
    +
    source§

    impl<T> From<Option<T>> for Value
    where + T: Into<Value>,

    source§

    fn from(opt: Option<T>) -> Value

    Converts to this type from the input type.
    source§

    impl From<String> for Value

    source§

    fn from(f: String) -> Value

    Convert String to Value

    +
    Examples
    use serde_json::Value;
     
    -let s: String = "lorem".to_string();
    +let s: String = "lorem".to_string();
     let x: Value = s.into();
    -

    Convert a Vec to Value

    -
    Examples
    +
    source§

    impl<T> From<Vec<T>> for Value
    where + T: Into<Value>,

    source§

    fn from(f: Vec<T>) -> Value

    Convert a Vec to Value

    +
    Examples
    use serde_json::Value;
     
    -let v = vec!["lorem", "ipsum", "dolor"];
    +let v = vec!["lorem", "ipsum", "dolor"];
     let x: Value = v.into();
    -

    Convert boolean to Value

    -
    Examples
    +
    source§

    impl From<bool> for Value

    source§

    fn from(f: bool) -> Value

    Convert boolean to Value

    +
    Examples
    use serde_json::Value;
     
     let b = false;
     let x: Value = b.into();
    -

    Convert 32-bit floating point number to Value

    -
    Examples
    +
    source§

    impl From<f32> for Value

    source§

    fn from(f: f32) -> Value

    Convert 32-bit floating point number to Value

    +
    Examples
    use serde_json::Value;
     
     let f: f32 = 13.37;
     let x: Value = f.into();
    -

    Convert 64-bit floating point number to Value

    -
    Examples
    +
    source§

    impl From<f64> for Value

    source§

    fn from(f: f64) -> Value

    Convert 64-bit floating point number to Value

    +
    Examples
    use serde_json::Value;
     
     let f: f64 = 13.37;
     let x: Value = f.into();
    -
    Converts to this type from the input type.
    Converts to this type from the input type.
    Converts to this type from the input type.
    Converts to this type from the input type.
    Converts to this type from the input type.
    Converts to this type from the input type.
    Converts to this type from the input type.
    Converts to this type from the input type.
    Converts to this type from the input type.
    Converts to this type from the input type.

    Convert an iteratable type to a Value

    +
    source§

    impl From<i16> for Value

    source§

    fn from(n: i16) -> Value

    Converts to this type from the input type.
    source§

    impl From<i32> for Value

    source§

    fn from(n: i32) -> Value

    Converts to this type from the input type.
    source§

    impl From<i64> for Value

    source§

    fn from(n: i64) -> Value

    Converts to this type from the input type.
    source§

    impl From<i8> for Value

    source§

    fn from(n: i8) -> Value

    Converts to this type from the input type.
    source§

    impl From<isize> for Value

    source§

    fn from(n: isize) -> Value

    Converts to this type from the input type.
    source§

    impl From<u16> for Value

    source§

    fn from(n: u16) -> Value

    Converts to this type from the input type.
    source§

    impl From<u32> for Value

    source§

    fn from(n: u32) -> Value

    Converts to this type from the input type.
    source§

    impl From<u64> for Value

    source§

    fn from(n: u64) -> Value

    Converts to this type from the input type.
    source§

    impl From<u8> for Value

    source§

    fn from(n: u8) -> Value

    Converts to this type from the input type.
    source§

    impl From<usize> for Value

    source§

    fn from(n: usize) -> Value

    Converts to this type from the input type.
    source§

    impl<K, V> FromIterator<(K, V)> for Value
    where + K: Into<String>, + V: Into<Value>,

    source§

    fn from_iter<I>(iter: I) -> Value
    where + I: IntoIterator<Item = (K, V)>,

    Convert an iteratable type to a Value

    Examples
    use serde_json::Value;
     
    -let v: Vec<_> = vec![("lorem", 40), ("ipsum", 2)];
    +let v: Vec<_> = vec![("lorem", 40), ("ipsum", 2)];
     let x: Value = v.into_iter().collect();
    -

    Convert an iteratable type to a Value

    -
    Examples
    +
    source§

    impl<T> FromIterator<T> for Value
    where + T: Into<Value>,

    source§

    fn from_iter<I>(iter: I) -> Value
    where + I: IntoIterator<Item = T>,

    Convert an iteratable type to a Value

    +
    Examples
    use serde_json::Value;
     
     let v = std::iter::repeat(42).take(5);
    @@ -484,14 +764,15 @@ 
    Examples
    use serde_json::Value;
     
    -let v: Vec<_> = vec!["lorem", "ipsum", "dolor"];
    +let v: Vec<_> = vec!["lorem", "ipsum", "dolor"];
     let x: Value = v.into_iter().collect();
    use std::iter::FromIterator;
     use serde_json::Value;
     
    -let x: Value = Value::from_iter(vec!["lorem", "ipsum", "dolor"]);
    -
    The associated error which can be returned from parsing.
    Parses a string s to return a value of this type. Read more

    Index into a serde_json::Value using the syntax value[0] or +let x: Value = Value::from_iter(vec!["lorem", "ipsum", "dolor"]);

    +
    source§

    impl FromStr for Value

    §

    type Err = Error

    The associated error which can be returned from parsing.
    source§

    fn from_str(s: &str) -> Result<Value, Error>

    Parses a string s to return a value of this type. Read more
    source§

    impl<I> Index<I> for Value
    where + I: Index,

    source§

    fn index(&self, index: I) -> &Value

    Index into a serde_json::Value using the syntax value[0] or value["k"].

    Returns Value::Null if the type of self does not match the type of the index, for example if the index is a string and self is an array @@ -499,19 +780,20 @@

    Examples
    in the map or the given index is not within the bounds of the array.

    For retrieving deeply nested values, you should have a look at the Value::pointer method.

    -
    Examples
    +
    Examples
    let data = json!({
    -    "x": {
    -        "y": ["z", "zz"]
    +    "x": {
    +        "y": ["z", "zz"]
         }
     });
     
    -assert_eq!(data["x"]["y"], json!(["z", "zz"]));
    -assert_eq!(data["x"]["y"][0], json!("z"));
    +assert_eq!(data["x"]["y"], json!(["z", "zz"]));
    +assert_eq!(data["x"]["y"][0], json!("z"));
     
    -assert_eq!(data["a"], json!(null)); // returns null for undefined values
    -assert_eq!(data["a"]["b"], json!(null)); // does not panic
    -
    The returned type after indexing.

    Write into a serde_json::Value using the syntax value[0] = ... or +assert_eq!(data["a"], json!(null)); // returns null for undefined values +assert_eq!(data["a"]["b"], json!(null)); // does not panic

    +
    §

    type Output = Value

    The returned type after indexing.
    source§

    impl<I> IndexMut<I> for Value
    where + I: Index,

    source§

    fn index_mut(&mut self, index: I) -> &mut Value

    Write into a serde_json::Value using the syntax value[0] = ... or value["k"] = ....

    If the index is a number, the value must be an array of length bigger than the index. Indexing into a value that is not an array or an array @@ -520,114 +802,132 @@

    Examples
    treated like an empty object. If the key is not already present in the object, it will be inserted with a value of null. Indexing into a value that is neither an object nor null will panic.

    -
    Examples
    -
    let mut data = json!({ "x": 0 });
    +
    Examples
    +
    let mut data = json!({ "x": 0 });
     
     // replace an existing key
    -data["x"] = json!(1);
    +data["x"] = json!(1);
     
     // insert a new key
    -data["y"] = json!([false, false, false]);
    +data["y"] = json!([false, false, false]);
     
     // replace an array value
    -data["y"][0] = json!(true);
    +data["y"][0] = json!(true);
     
     // inserted a deeply nested key
    -data["a"]["b"]["c"]["d"] = json!(true);
    -
    -println!("{}", data);
    -
    The type of the deserializer being converted into.
    Convert this value into a deserializer.
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    Serialize this value into the given Serde serializer. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    +data["a"]["b"]["c"]["d"] = json!(true); + +println!("{}", data);
    +
    source§

    impl<'de> IntoDeserializer<'de, Error> for Value

    §

    type Deserializer = Value

    The type of the deserializer being converted into.
    source§

    fn into_deserializer( + self +) -> <Value as IntoDeserializer<'de, Error>>::Deserializer

    Convert this value into a deserializer.
    source§

    impl<'a> PartialEq<&'a str> for Value

    source§

    fn eq(&self, other: &&str) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl PartialEq<String> for Value

    source§

    fn eq(&self, other: &String) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl<'a> PartialEq<Value> for &'a str

    source§

    fn eq(&self, other: &Value) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl PartialEq<Value> for str

    source§

    fn eq(&self, other: &Value) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl<'a> PartialEq<bool> for &'a Value

    source§

    fn eq(&self, other: &bool) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl<'a> PartialEq<bool> for &'a mut Value

    source§

    fn eq(&self, other: &bool) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl PartialEq<bool> for Value

    source§

    fn eq(&self, other: &bool) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl<'a> PartialEq<f32> for &'a Value

    source§

    fn eq(&self, other: &f32) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl<'a> PartialEq<f32> for &'a mut Value

    source§

    fn eq(&self, other: &f32) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl PartialEq<f32> for Value

    source§

    fn eq(&self, other: &f32) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl<'a> PartialEq<f64> for &'a Value

    source§

    fn eq(&self, other: &f64) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl<'a> PartialEq<f64> for &'a mut Value

    source§

    fn eq(&self, other: &f64) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl PartialEq<f64> for Value

    source§

    fn eq(&self, other: &f64) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl<'a> PartialEq<i16> for &'a Value

    source§

    fn eq(&self, other: &i16) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl<'a> PartialEq<i16> for &'a mut Value

    source§

    fn eq(&self, other: &i16) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl PartialEq<i16> for Value

    source§

    fn eq(&self, other: &i16) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl<'a> PartialEq<i32> for &'a Value

    source§

    fn eq(&self, other: &i32) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl<'a> PartialEq<i32> for &'a mut Value

    source§

    fn eq(&self, other: &i32) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl PartialEq<i32> for Value

    source§

    fn eq(&self, other: &i32) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl<'a> PartialEq<i64> for &'a Value

    source§

    fn eq(&self, other: &i64) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl<'a> PartialEq<i64> for &'a mut Value

    source§

    fn eq(&self, other: &i64) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl PartialEq<i64> for Value

    source§

    fn eq(&self, other: &i64) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl<'a> PartialEq<i8> for &'a Value

    source§

    fn eq(&self, other: &i8) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl<'a> PartialEq<i8> for &'a mut Value

    source§

    fn eq(&self, other: &i8) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl PartialEq<i8> for Value

    source§

    fn eq(&self, other: &i8) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl<'a> PartialEq<isize> for &'a Value

    source§

    fn eq(&self, other: &isize) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl<'a> PartialEq<isize> for &'a mut Value

    source§

    fn eq(&self, other: &isize) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl PartialEq<isize> for Value

    source§

    fn eq(&self, other: &isize) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl PartialEq<str> for Value

    source§

    fn eq(&self, other: &str) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl<'a> PartialEq<u16> for &'a Value

    source§

    fn eq(&self, other: &u16) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl<'a> PartialEq<u16> for &'a mut Value

    source§

    fn eq(&self, other: &u16) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl PartialEq<u16> for Value

    source§

    fn eq(&self, other: &u16) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl<'a> PartialEq<u32> for &'a Value

    source§

    fn eq(&self, other: &u32) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl<'a> PartialEq<u32> for &'a mut Value

    source§

    fn eq(&self, other: &u32) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl PartialEq<u32> for Value

    source§

    fn eq(&self, other: &u32) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl<'a> PartialEq<u64> for &'a Value

    source§

    fn eq(&self, other: &u64) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl<'a> PartialEq<u64> for &'a mut Value

    source§

    fn eq(&self, other: &u64) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl PartialEq<u64> for Value

    source§

    fn eq(&self, other: &u64) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl<'a> PartialEq<u8> for &'a Value

    source§

    fn eq(&self, other: &u8) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl<'a> PartialEq<u8> for &'a mut Value

    source§

    fn eq(&self, other: &u8) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl PartialEq<u8> for Value

    source§

    fn eq(&self, other: &u8) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl<'a> PartialEq<usize> for &'a Value

    source§

    fn eq(&self, other: &usize) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl<'a> PartialEq<usize> for &'a mut Value

    source§

    fn eq(&self, other: &usize) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl PartialEq<usize> for Value

    source§

    fn eq(&self, other: &usize) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl PartialEq for Value

    source§

    fn eq(&self, other: &Value) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl Serialize for Value

    source§

    fn serialize<S>( + &self, + serializer: S +) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>
    where + S: Serializer,

    Serialize this value into the given Serde serializer. Read more
    source§

    impl Eq for Value

    source§

    impl StructuralEq for Value

    source§

    impl StructuralPartialEq for Value

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Value

    §

    impl Send for Value

    §

    impl Sync for Value

    §

    impl Unpin for Value

    §

    impl UnwindSafe for Value

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> EncodableKey for T
    where + T: Serialize,

    §

    fn to_bytes(&self) -> Result<Vec<u8>, DataError>

    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    §

    impl<T, UT> HandleAlloc<UT> for T
    where + T: Send + Sync,

    §

    fn new_handle(value: Arc<T>) -> Handle

    Create a new handle for an Arc value Read more
    §

    fn clone_handle(handle: Handle) -> Handle

    Clone a handle Read more
    §

    fn consume_handle(handle: Handle) -> Arc<T>

    Consume a handle, getting back the initial Arc<>
    §

    fn get_arc(handle: Handle) -> Arc<Self>

    Get a clone of the Arc<> using a “borrowed” handle. Read more
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    Converts the given value to a String. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<V> ObjectSerialize for V
    where + V: Serialize + for<'de> Deserialize<'de>,

    source§

    fn from_str(obj: &str) -> Result<V, ObjectError>

    Deserialize the object from its JSON representation. Read more
    source§

    fn into_serialized_object(self) -> Result<Value, ObjectError>

    Serialize this object into a JSON string.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> DeserializeOwned for T
    where + T: for<'de> Deserialize<'de>,

    \ No newline at end of file diff --git a/docs/glean_core/metrics/enum.MemoryUnit.html b/docs/glean_core/metrics/enum.MemoryUnit.html index 1b12ca0985..bd929246e8 100644 --- a/docs/glean_core/metrics/enum.MemoryUnit.html +++ b/docs/glean_core/metrics/enum.MemoryUnit.html @@ -1,28 +1,41 @@ -MemoryUnit in glean_core::metrics - Rust
    #[repr(i32)]
    -pub enum MemoryUnit {
    -    Byte,
    -    Kilobyte,
    -    Megabyte,
    -    Gigabyte,
    -}
    Expand description

    Different resolutions supported by the memory related metric types (e.g. +MemoryUnit in glean_core::metrics - Rust

    +
    #[repr(i32)]
    pub enum MemoryUnit { + Byte = 0, + Kilobyte = 1, + Megabyte = 2, + Gigabyte = 3, +}
    Expand description

    Different resolutions supported by the memory related metric types (e.g. MemoryDistributionMetric).

    -

    Variants§

    §

    Byte

    1 byte

    -
    §

    Kilobyte

    2^10 bytes

    -
    §

    Megabyte

    2^20 bytes

    -
    §

    Gigabyte

    2^30 bytes

    -

    Implementations§

    Converts a value in the given unit to bytes.

    +

    Variants§

    §

    Byte = 0

    1 byte

    +
    §

    Kilobyte = 1

    2^10 bytes

    +
    §

    Megabyte = 2

    2^20 bytes

    +
    §

    Gigabyte = 3

    2^30 bytes

    +

    Implementations§

    source§

    impl MemoryUnit

    source

    pub fn as_bytes(self, value: u64) -> u64

    Converts a value in the given unit to bytes.

    Arguments
    • value - the value to convert.
    Returns

    The integer representation of the byte value.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Deserialize this value from the given Serde deserializer. Read more
    Serialize this value into the given Serde serializer. Read more

    Trait implementation for converting an integer value -to a MemoryUnit. This is used in the FFI code. Please +

    Trait Implementations§

    source§

    impl Clone for MemoryUnit

    source§

    fn clone(&self) -> MemoryUnit

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for MemoryUnit

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<'de> Deserialize<'de> for MemoryUnit

    source§

    fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
    where + __D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    source§

    impl Serialize for MemoryUnit

    source§

    fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
    where + __S: Serializer,

    Serialize this value into the given Serde serializer. Read more
    source§

    impl TryFrom<i32> for MemoryUnit

    Trait implementation for converting an integer value +to a MemoryUnit. This is used in the FFI code. Please note that values should match the ordering of the platform specific side of things (e.g. Kotlin implementation).

    -
    The type returned in the event of a conversion error.
    Performs the conversion.

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    +
    §

    type Error = Error

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: i32) -> Result<MemoryUnit, Self::Error>

    Performs the conversion.
    source§

    impl Copy for MemoryUnit

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> EncodableKey for T
    where + T: Serialize,

    §

    fn to_bytes(&self) -> Result<Vec<u8>, DataError>

    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    §

    impl<T, UT> HandleAlloc<UT> for T
    where + T: Send + Sync,

    §

    fn new_handle(value: Arc<T>) -> Handle

    Create a new handle for an Arc value Read more
    §

    fn clone_handle(handle: Handle) -> Handle

    Clone a handle Read more
    §

    fn consume_handle(handle: Handle) -> Arc<T>

    Consume a handle, getting back the initial Arc<>
    §

    fn get_arc(handle: Handle) -> Arc<Self>

    Get a clone of the Arc<> using a “borrowed” handle. Read more
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<V> ObjectSerialize for V
    where + V: Serialize + for<'de> Deserialize<'de>,

    source§

    fn from_str(obj: &str) -> Result<V, ObjectError>

    Deserialize the object from its JSON representation. Read more
    source§

    fn into_serialized_object(self) -> Result<Value, ObjectError>

    Serialize this object into a JSON string.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> DeserializeOwned for T
    where + T: for<'de> Deserialize<'de>,

    \ No newline at end of file diff --git a/docs/glean_core/metrics/enum.Metric.html b/docs/glean_core/metrics/enum.Metric.html index fa6a5bf58e..f8113a2aa6 100644 --- a/docs/glean_core/metrics/enum.Metric.html +++ b/docs/glean_core/metrics/enum.Metric.html @@ -1,58 +1,72 @@ -Metric in glean_core::metrics - Rust
    pub enum Metric {
    -
    Show 18 variants Boolean(bool), - Counter(i32), +Metric in glean_core::metrics - Rust +
    pub enum Metric {
    +
    Show 18 variants Boolean(bool), + Counter(i32), CustomDistributionExponential(Histogram<PrecomputedExponential>), CustomDistributionLinear(Histogram<PrecomputedLinear>), - Datetime(DateTime<FixedOffset>, TimeUnit), + Datetime(DateTime<FixedOffset>, TimeUnit), Experiment(RecordedExperiment), - Quantity(i64), - String(String), - StringList(Vec<String>), - Uuid(String), - Timespan(DurationTimeUnit), + Quantity(i64), + String(String), + StringList(Vec<String>), + Uuid(String), + Timespan(Duration, TimeUnit), TimingDistribution(Histogram<Functional>), MemoryDistribution(Histogram<Functional>), - Jwe(String), - Rate(i32i32), - Url(String), - Text(String), - Object(String), -
    }
    Expand description

    The available metrics.

    + Jwe(String), + Rate(i32, i32), + Url(String), + Text(String), + Object(String), +
    }
    Expand description

    The available metrics.

    This is the in-memory and persisted layout of a metric.

    Note

    The order of metrics in this enum is important, as it is used for serialization. Do not reorder the variants.

    Any new metric must be added at the end.

    -

    Variants§

    §

    Boolean(bool)

    A boolean metric. See BooleanMetric for more information.

    -
    §

    Counter(i32)

    A counter metric. See CounterMetric for more information.

    +

    Variants§

    §

    Boolean(bool)

    A boolean metric. See BooleanMetric for more information.

    +
    §

    Counter(i32)

    A counter metric. See CounterMetric for more information.

    §

    CustomDistributionExponential(Histogram<PrecomputedExponential>)

    A custom distribution with precomputed exponential bucketing. -See CustomDistributionMetric for more information.

    +See CustomDistributionMetric for more information.

    §

    CustomDistributionLinear(Histogram<PrecomputedLinear>)

    A custom distribution with precomputed linear bucketing. -See CustomDistributionMetric for more information.

    -
    §

    Datetime(DateTime<FixedOffset>, TimeUnit)

    A datetime metric. See DatetimeMetric for more information.

    +See CustomDistributionMetric for more information.

    +
    §

    Datetime(DateTime<FixedOffset>, TimeUnit)

    A datetime metric. See DatetimeMetric for more information.

    §

    Experiment(RecordedExperiment)

    An experiment metric. See ExperimentMetric for more information.

    -
    §

    Quantity(i64)

    A quantity metric. See QuantityMetric for more information.

    -
    §

    String(String)

    A string metric. See StringMetric for more information.

    -
    §

    StringList(Vec<String>)

    A string list metric. See StringListMetric for more information.

    -
    §

    Uuid(String)

    A UUID metric. See UuidMetric for more information.

    -
    §

    Timespan(DurationTimeUnit)

    A timespan metric. See TimespanMetric for more information.

    -
    §

    TimingDistribution(Histogram<Functional>)

    A timing distribution. See TimingDistributionMetric for more information.

    -
    §

    MemoryDistribution(Histogram<Functional>)

    A memory distribution. See MemoryDistributionMetric for more information.

    -
    §

    Jwe(String)

    DEPRECATED: A JWE metric.. +

    §

    Quantity(i64)

    A quantity metric. See QuantityMetric for more information.

    +
    §

    String(String)

    A string metric. See StringMetric for more information.

    +
    §

    StringList(Vec<String>)

    A string list metric. See StringListMetric for more information.

    +
    §

    Uuid(String)

    A UUID metric. See UuidMetric for more information.

    +
    §

    Timespan(Duration, TimeUnit)

    A timespan metric. See TimespanMetric for more information.

    +
    §

    TimingDistribution(Histogram<Functional>)

    A timing distribution. See TimingDistributionMetric for more information.

    +
    §

    MemoryDistribution(Histogram<Functional>)

    A memory distribution. See MemoryDistributionMetric for more information.

    +
    §

    Jwe(String)

    DEPRECATED: A JWE metric.. Note: This variant MUST NOT be removed to avoid backwards-incompatible changes to the serialization. This type has no underlying implementation anymore.

    -
    §

    Rate(i32i32)

    A rate metric. See RateMetric for more information.

    -
    §

    Url(String)

    A URL metric. See UrlMetric for more information.

    -
    §

    Text(String)

    A Text metric. See TextMetric for more information.

    -
    §

    Object(String)

    An Object metric. See ObjectMetric for more information.

    -

    Implementations§

    Gets the ping section the metric fits into.

    +
    §

    Rate(i32, i32)

    A rate metric. See RateMetric for more information.

    +
    §

    Url(String)

    A URL metric. See UrlMetric for more information.

    +
    §

    Text(String)

    A Text metric. See TextMetric for more information.

    +
    §

    Object(String)

    An Object metric. See ObjectMetric for more information.

    +

    Implementations§

    source§

    impl Metric

    source

    pub fn ping_section(&self) -> &'static str

    Gets the ping section the metric fits into.

    This determines the section of the ping to place the metric data in when assembling the ping payload.

    -

    The JSON representation of the metric’s data

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Deserialize this value from the given Serde deserializer. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    Serialize this value into the given Serde serializer. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    +
    source

    pub fn as_json(&self) -> JsonValue

    The JSON representation of the metric’s data

    +

    Trait Implementations§

    source§

    impl Clone for Metric

    source§

    fn clone(&self) -> Metric

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Metric

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<'de> Deserialize<'de> for Metric

    source§

    fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
    where + __D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    source§

    impl PartialEq for Metric

    source§

    fn eq(&self, other: &Metric) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl Serialize for Metric

    source§

    fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
    where + __S: Serializer,

    Serialize this value into the given Serde serializer. Read more
    source§

    impl StructuralPartialEq for Metric

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> EncodableKey for T
    where + T: Serialize,

    §

    fn to_bytes(&self) -> Result<Vec<u8>, DataError>

    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    §

    impl<T, UT> HandleAlloc<UT> for T
    where + T: Send + Sync,

    §

    fn new_handle(value: Arc<T>) -> Handle

    Create a new handle for an Arc value Read more
    §

    fn clone_handle(handle: Handle) -> Handle

    Clone a handle Read more
    §

    fn consume_handle(handle: Handle) -> Arc<T>

    Consume a handle, getting back the initial Arc<>
    §

    fn get_arc(handle: Handle) -> Arc<Self>

    Get a clone of the Arc<> using a “borrowed” handle. Read more
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<V> ObjectSerialize for V
    where + V: Serialize + for<'de> Deserialize<'de>,

    source§

    fn from_str(obj: &str) -> Result<V, ObjectError>

    Deserialize the object from its JSON representation. Read more
    source§

    fn into_serialized_object(self) -> Result<Value, ObjectError>

    Serialize this object into a JSON string.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> DeserializeOwned for T
    where + T: for<'de> Deserialize<'de>,

    \ No newline at end of file diff --git a/docs/glean_core/metrics/enum.TimeUnit.html b/docs/glean_core/metrics/enum.TimeUnit.html index 6e2ecc4d8f..15b3b1a228 100644 --- a/docs/glean_core/metrics/enum.TimeUnit.html +++ b/docs/glean_core/metrics/enum.TimeUnit.html @@ -1,44 +1,57 @@ -TimeUnit in glean_core::metrics - Rust
    #[repr(i32)]
    -pub enum TimeUnit {
    -    Nanosecond,
    -    Microsecond,
    -    Millisecond,
    -    Second,
    -    Minute,
    -    Hour,
    -    Day,
    -}
    Expand description

    Different resolutions supported by the time related +TimeUnit in glean_core::metrics - Rust

    +
    #[repr(i32)]
    pub enum TimeUnit { + Nanosecond = 0, + Microsecond = 1, + Millisecond = 2, + Second = 3, + Minute = 4, + Hour = 5, + Day = 6, +}
    Expand description

    Different resolutions supported by the time related metric types (e.g. DatetimeMetric).

    -

    Variants§

    §

    Nanosecond

    Truncate to nanosecond precision.

    -
    §

    Microsecond

    Truncate to microsecond precision.

    -
    §

    Millisecond

    Truncate to millisecond precision.

    -
    §

    Second

    Truncate to second precision.

    -
    §

    Minute

    Truncate to minute precision.

    -
    §

    Hour

    Truncate to hour precision.

    -
    §

    Day

    Truncate to day precision.

    -

    Implementations§

    Formats the given time unit, truncating the time if needed.

    -

    Converts a duration to the requested time unit.

    +

    Variants§

    §

    Nanosecond = 0

    Truncate to nanosecond precision.

    +
    §

    Microsecond = 1

    Truncate to microsecond precision.

    +
    §

    Millisecond = 2

    Truncate to millisecond precision.

    +
    §

    Second = 3

    Truncate to second precision.

    +
    §

    Minute = 4

    Truncate to minute precision.

    +
    §

    Hour = 5

    Truncate to hour precision.

    +
    §

    Day = 6

    Truncate to day precision.

    +

    Implementations§

    source§

    impl TimeUnit

    source

    pub fn format_pattern(self) -> &'static str

    Formats the given time unit, truncating the time if needed.

    +
    source

    pub fn duration_convert(self, duration: Duration) -> u64

    Converts a duration to the requested time unit.

    Arguments
    • duration - the duration to convert.
    Returns

    The integer representation of the converted duration.

    -

    Converts a duration in the given unit to nanoseconds.

    +
    source

    pub fn as_nanos(self, duration: u64) -> u64

    Converts a duration in the given unit to nanoseconds.

    Arguments
    • duration - the duration to convert.
    Returns

    The integer representation of the nanosecond duration.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Deserialize this value from the given Serde deserializer. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    Serialize this value into the given Serde serializer. Read more

    Trait implementation for converting an integer value to a TimeUnit.

    +

    Trait Implementations§

    source§

    impl Clone for TimeUnit

    source§

    fn clone(&self) -> TimeUnit

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for TimeUnit

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<'de> Deserialize<'de> for TimeUnit

    source§

    fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
    where + __D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    source§

    impl PartialEq for TimeUnit

    source§

    fn eq(&self, other: &TimeUnit) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl Serialize for TimeUnit

    source§

    fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
    where + __S: Serializer,

    Serialize this value into the given Serde serializer. Read more
    source§

    impl TryFrom<i32> for TimeUnit

    Trait implementation for converting an integer value to a TimeUnit.

    This is used in the FFI code.

    Please note that values should match the ordering of the platform specific side of things (e.g. Kotlin implementation).

    -
    The type returned in the event of a conversion error.
    Performs the conversion.

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    +
    §

    type Error = Error

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: i32) -> Result<TimeUnit, Self::Error>

    Performs the conversion.
    source§

    impl Copy for TimeUnit

    source§

    impl Eq for TimeUnit

    source§

    impl StructuralEq for TimeUnit

    source§

    impl StructuralPartialEq for TimeUnit

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> EncodableKey for T
    where + T: Serialize,

    §

    fn to_bytes(&self) -> Result<Vec<u8>, DataError>

    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    §

    impl<T, UT> HandleAlloc<UT> for T
    where + T: Send + Sync,

    §

    fn new_handle(value: Arc<T>) -> Handle

    Create a new handle for an Arc value Read more
    §

    fn clone_handle(handle: Handle) -> Handle

    Clone a handle Read more
    §

    fn consume_handle(handle: Handle) -> Arc<T>

    Consume a handle, getting back the initial Arc<>
    §

    fn get_arc(handle: Handle) -> Arc<Self>

    Get a clone of the Arc<> using a “borrowed” handle. Read more
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<V> ObjectSerialize for V
    where + V: Serialize + for<'de> Deserialize<'de>,

    source§

    fn from_str(obj: &str) -> Result<V, ObjectError>

    Deserialize the object from its JSON representation. Read more
    source§

    fn into_serialized_object(self) -> Result<Value, ObjectError>

    Serialize this object into a JSON string.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> DeserializeOwned for T
    where + T: for<'de> Deserialize<'de>,

    \ No newline at end of file diff --git a/docs/glean_core/metrics/index.html b/docs/glean_core/metrics/index.html index 715330c8f4..d3383abe5c 100644 --- a/docs/glean_core/metrics/index.html +++ b/docs/glean_core/metrics/index.html @@ -1,7 +1,8 @@ -glean_core::metrics - Rust

    Module glean_core::metrics

    source ·
    Expand description

    The different metric types supported by the Glean SDK to handle data.

    -

    Structs

    A boolean metric.
    A counter metric.
    A custom distribution metric.
    Representation of a date, time and timezone.
    A datetime metric.
    A Denominator metric (a kind of count shared among Rate metrics).
    A snapshot of all buckets and the accumulated sum of a distribution.
    An event metric.
    A labeled metric.
    A memory distribution metric.
    Developer-facing API for recording rate metrics with external denominators.
    An object metric.
    Stores information about a ping.
    A quantity metric.
    A rate value as given by its numerator and denominator.
    A rate metric.
    Represents the recorded data for a single event.
    Deserialized experiment data.
    Represents a list of metrics and an associated boolean property +glean_core::metrics - Rust +

    Module glean_core::metrics

    source ·
    Expand description

    The different metric types supported by the Glean SDK to handle data.

    +

    Structs

    A string list metric.
    A string metric.
    A text metric.
    Identifier for a running timer.
    A timespan metric.
    A timing distribution metric.
    A URL metric.
    An UUID metric.

    Enums

    Different kinds of histograms.
    Represents any valid JSON value.
    Different resolutions supported by the memory related metric types (e.g. -MemoryDistributionMetric).
    The available metrics.
    Different resolutions supported by the time related -metric types (e.g. DatetimeMetric).

    Traits

    A MetricType describes common behavior across all metrics.

    Type Definitions

    A labeled boolean.
    A labeled counter.
    A labeled custom_distribution.
    A labeled memory_distribution.
    A labeled string.
    A labeled timing_distribution.
    \ No newline at end of file +in the following format:
  • StringListMetric
    A string list metric.
  • StringMetric
    A string metric.
  • TextMetric
    A text metric.
  • TimerId
    Identifier for a running timer.
  • TimespanMetric
    A timespan metric.
  • TimingDistributionMetric
    A timing distribution metric.
  • UrlMetric
    A URL metric.
  • UuidMetric
    An UUID metric.
  • Enums

    Traits

    Type Aliases

    \ No newline at end of file diff --git a/docs/glean_core/metrics/sidebar-items.js b/docs/glean_core/metrics/sidebar-items.js index 5a27b98423..d7c827f7d3 100644 --- a/docs/glean_core/metrics/sidebar-items.js +++ b/docs/glean_core/metrics/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"enum":[["HistogramType","Different kinds of histograms."],["JsonValue","Represents any valid JSON value."],["MemoryUnit","Different resolutions supported by the memory related metric types (e.g. MemoryDistributionMetric)."],["Metric","The available metrics."],["TimeUnit","Different resolutions supported by the time related metric types (e.g. DatetimeMetric)."]],"struct":[["BooleanMetric","A boolean metric."],["CounterMetric","A counter metric."],["CustomDistributionMetric","A custom distribution metric."],["Datetime","Representation of a date, time and timezone."],["DatetimeMetric","A datetime metric."],["DenominatorMetric","A Denominator metric (a kind of count shared among Rate metrics)."],["DistributionData","A snapshot of all buckets and the accumulated sum of a distribution."],["EventMetric","An event metric."],["LabeledMetric","A labeled metric."],["MemoryDistributionMetric","A memory distribution metric."],["NumeratorMetric","Developer-facing API for recording rate metrics with external denominators."],["ObjectMetric","An object metric."],["PingType","Stores information about a ping."],["QuantityMetric","A quantity metric."],["Rate","A rate value as given by its numerator and denominator."],["RateMetric","A rate metric."],["RecordedEvent","Represents the recorded data for a single event."],["RecordedExperiment","Deserialized experiment data."],["RemoteSettingsConfig","Represents a list of metrics and an associated boolean property indicating if the metric is enabledfrom the remote-settings configuration store. The expected format of this data is stringified JSON in the following format:"],["StringListMetric","A string list metric."],["StringMetric","A string metric."],["TextMetric","A text metric."],["TimerId","Identifier for a running timer."],["TimespanMetric","A timespan metric."],["TimingDistributionMetric","A timing distribution metric."],["UrlMetric","A URL metric."],["UuidMetric","An UUID metric."]],"trait":[["MetricType","A [`MetricType`] describes common behavior across all metrics."]],"type":[["LabeledBoolean","A labeled boolean."],["LabeledCounter","A labeled counter."],["LabeledCustomDistribution","A labeled custom_distribution."],["LabeledMemoryDistribution","A labeled memory_distribution."],["LabeledString","A labeled string."],["LabeledTimingDistribution","A labeled timing_distribution."]]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"enum":["HistogramType","JsonValue","MemoryUnit","Metric","TimeUnit"],"struct":["BooleanMetric","CounterMetric","CustomDistributionMetric","Datetime","DatetimeMetric","DenominatorMetric","DistributionData","EventMetric","LabeledMetric","MemoryDistributionMetric","NumeratorMetric","ObjectMetric","PingType","QuantityMetric","Rate","RateMetric","RecordedEvent","RecordedExperiment","RemoteSettingsConfig","StringListMetric","StringMetric","TextMetric","TimerId","TimespanMetric","TimingDistributionMetric","UrlMetric","UuidMetric"],"trait":["MetricType"],"type":["LabeledBoolean","LabeledCounter","LabeledCustomDistribution","LabeledMemoryDistribution","LabeledString","LabeledTimingDistribution"]}; \ No newline at end of file diff --git a/docs/glean_core/metrics/struct.BooleanMetric.html b/docs/glean_core/metrics/struct.BooleanMetric.html index 78674a4522..921e5d4c42 100644 --- a/docs/glean_core/metrics/struct.BooleanMetric.html +++ b/docs/glean_core/metrics/struct.BooleanMetric.html @@ -1,12 +1,13 @@ -BooleanMetric in glean_core::metrics - Rust
    pub struct BooleanMetric { /* private fields */ }
    Expand description

    A boolean metric.

    +BooleanMetric in glean_core::metrics - Rust +
    pub struct BooleanMetric { /* private fields */ }
    Expand description

    A boolean metric.

    Records a simple flag.

    -

    Implementations§

    Creates a new boolean metric.

    -

    Sets to the specified boolean value.

    +

    Implementations§

    source§

    impl BooleanMetric

    source

    pub fn new(meta: CommonMetricData) -> Self

    Creates a new boolean metric.

    +
    source

    pub fn set(&self, value: bool)

    Sets to the specified boolean value.

    Arguments
    • value - the value to set.
    -

    Test-only API (exported for FFI purposes).

    +
    source

    pub fn test_get_value(&self, ping_name: Option<String>) -> Option<bool>

    Test-only API (exported for FFI purposes).

    Gets the currently stored value as an integer.

    This doesn’t clear the stored value.

    Arguments
    @@ -16,7 +17,7 @@
    Arguments
    Returns

    The stored value or None if nothing stored.

    -

    Exported for test purposes.

    +
    source

    pub fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32

    Exported for test purposes.

    Gets the number of recorded errors for the given metric and error type.

    Arguments
    Returns

    The number of errors reported.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Access the stored metadata
    Create a new metric from this with a new name.
    Create a new metric from this with a specific label.
    Whether this metric should currently be recorded Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Clone for BooleanMetric

    source§

    fn clone(&self) -> BooleanMetric

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for BooleanMetric

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl MetricType for BooleanMetric

    source§

    fn meta(&self) -> &CommonMetricDataInternal

    Access the stored metadata
    source§

    fn with_name(&self, name: String) -> Self

    Create a new metric from this with a new name.
    source§

    fn with_dynamic_label(&self, label: String) -> Self

    Create a new metric from this with a specific label.
    source§

    fn should_record(&self, glean: &Glean) -> bool

    Whether this metric should currently be recorded Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> AllowLabeled for T
    where + T: MetricType + Sealed,

    source§

    fn new_labeled(meta: LabeledMetricData) -> T

    Create a new labeled metric.
    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    §

    impl<T, UT> HandleAlloc<UT> for T
    where + T: Send + Sync,

    §

    fn new_handle(value: Arc<T>) -> Handle

    Create a new handle for an Arc value Read more
    §

    fn clone_handle(handle: Handle) -> Handle

    Clone a handle Read more
    §

    fn consume_handle(handle: Handle) -> Arc<T>

    Consume a handle, getting back the initial Arc<>
    §

    fn get_arc(handle: Handle) -> Arc<Self>

    Get a clone of the Arc<> using a “borrowed” handle. Read more
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/docs/glean_core/metrics/struct.CounterMetric.html b/docs/glean_core/metrics/struct.CounterMetric.html index baecf620b4..7f15c6eb80 100644 --- a/docs/glean_core/metrics/struct.CounterMetric.html +++ b/docs/glean_core/metrics/struct.CounterMetric.html @@ -1,15 +1,16 @@ -CounterMetric in glean_core::metrics - Rust
    pub struct CounterMetric { /* private fields */ }
    Expand description

    A counter metric.

    +CounterMetric in glean_core::metrics - Rust +
    pub struct CounterMetric { /* private fields */ }
    Expand description

    A counter metric.

    Used to count things. The value can only be incremented, not decremented.

    -

    Implementations§

    Creates a new counter metric.

    -

    Increases the counter by amount.

    +

    Implementations§

    source§

    impl CounterMetric

    source

    pub fn new(meta: CommonMetricData) -> Self

    Creates a new counter metric.

    +
    source

    pub fn add(&self, amount: i32)

    Increases the counter by amount.

    Arguments
    • amount - The amount to increase by. Should be positive.
    Notes

    Logs an error if the amount is 0 or negative.

    -

    Test-only API (exported for FFI purposes).

    +
    source

    pub fn test_get_value(&self, ping_name: Option<String>) -> Option<i32>

    Test-only API (exported for FFI purposes).

    Gets the currently stored value as an integer.

    This doesn’t clear the stored value.

    Arguments
    @@ -19,7 +20,7 @@
    Arguments
    Returns

    The stored value or None if nothing stored.

    -

    Exported for test purposes.

    +
    source

    pub fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32

    Exported for test purposes.

    Gets the number of recorded errors for the given metric and error type.

    Arguments
    Returns

    The number of errors reported.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Access the stored metadata
    Create a new metric from this with a new name.
    Create a new metric from this with a specific label.
    Whether this metric should currently be recorded Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Clone for CounterMetric

    source§

    fn clone(&self) -> CounterMetric

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for CounterMetric

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl MetricType for CounterMetric

    source§

    fn meta(&self) -> &CommonMetricDataInternal

    Access the stored metadata
    source§

    fn with_name(&self, name: String) -> Self

    Create a new metric from this with a new name.
    source§

    fn with_dynamic_label(&self, label: String) -> Self

    Create a new metric from this with a specific label.
    source§

    fn should_record(&self, glean: &Glean) -> bool

    Whether this metric should currently be recorded Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> AllowLabeled for T
    where + T: MetricType + Sealed,

    source§

    fn new_labeled(meta: LabeledMetricData) -> T

    Create a new labeled metric.
    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    §

    impl<T, UT> HandleAlloc<UT> for T
    where + T: Send + Sync,

    §

    fn new_handle(value: Arc<T>) -> Handle

    Create a new handle for an Arc value Read more
    §

    fn clone_handle(handle: Handle) -> Handle

    Clone a handle Read more
    §

    fn consume_handle(handle: Handle) -> Arc<T>

    Consume a handle, getting back the initial Arc<>
    §

    fn get_arc(handle: Handle) -> Arc<Self>

    Get a clone of the Arc<> using a “borrowed” handle. Read more
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/docs/glean_core/metrics/struct.CustomDistributionMetric.html b/docs/glean_core/metrics/struct.CustomDistributionMetric.html index 267cb3f569..b815da9b9e 100644 --- a/docs/glean_core/metrics/struct.CustomDistributionMetric.html +++ b/docs/glean_core/metrics/struct.CustomDistributionMetric.html @@ -1,7 +1,14 @@ -CustomDistributionMetric in glean_core::metrics - Rust
    pub struct CustomDistributionMetric { /* private fields */ }
    Expand description

    A custom distribution metric.

    +CustomDistributionMetric in glean_core::metrics - Rust +
    pub struct CustomDistributionMetric { /* private fields */ }
    Expand description

    A custom distribution metric.

    Memory distributions are used to accumulate and store memory sizes.

    -

    Implementations§

    Creates a new memory distribution metric.

    -

    Accumulates the provided signed samples in the metric.

    +

    Implementations§

    source§

    impl CustomDistributionMetric

    source

    pub fn new( + meta: CommonMetricData, + range_min: i64, + range_max: i64, + bucket_count: i64, + histogram_type: HistogramType +) -> Self

    Creates a new memory distribution metric.

    +
    source

    pub fn accumulate_samples(&self, samples: Vec<i64>)

    Accumulates the provided signed samples in the metric.

    This is required so that the platform-specific code can provide us with 64 bit signed integers if no u64 comparable type is available. This will take care of filtering and reporting errors for any provided negative @@ -11,9 +18,9 @@

    Arguments
  • samples - The vector holding the samples to be recorded by the metric.
  • Notes
    -

    Discards any negative value in samples and report an ErrorType::InvalidValue +

    Discards any negative value in samples and report an ErrorType::InvalidValue for each of them.

    -

    Accumulates precisely one signed sample and appends it to the metric.

    +
    source

    pub fn accumulate_single_sample(&self, sample: i64)

    Accumulates precisely one signed sample and appends it to the metric.

    Signed is required so that the platform-specific code can provide us with a 64 bit signed integer if no u64 comparable type is available. This will take care of filtering and reporting errors.

    @@ -23,8 +30,11 @@
    Arguments
    Notes

    Discards any negative value of sample and reports an -ErrorType::InvalidValue.

    -

    Test-only API (exported for FFI purposes).

    +ErrorType::InvalidValue.

    +
    source

    pub fn test_get_value( + &self, + ping_name: Option<String> +) -> Option<DistributionData>

    Test-only API (exported for FFI purposes).

    Gets the currently stored value as an integer.

    This doesn’t clear the stored value.

    Arguments
    @@ -34,7 +44,7 @@
    Arguments
    Returns

    The stored value or None if nothing stored.

    -

    Exported for test purposes.

    +
    source

    pub fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32

    Exported for test purposes.

    Gets the number of recorded errors for the given metric and error type.

    Arguments
    Returns

    The number of errors reported.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Access the stored metadata
    Create a new metric from this with a new name.
    Create a new metric from this with a specific label.
    Whether this metric should currently be recorded Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Clone for CustomDistributionMetric

    source§

    fn clone(&self) -> CustomDistributionMetric

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for CustomDistributionMetric

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl MetricType for CustomDistributionMetric

    source§

    fn meta(&self) -> &CommonMetricDataInternal

    Access the stored metadata
    source§

    fn with_name(&self, name: String) -> Self

    Create a new metric from this with a new name.
    source§

    fn with_dynamic_label(&self, label: String) -> Self

    Create a new metric from this with a specific label.
    source§

    fn should_record(&self, glean: &Glean) -> bool

    Whether this metric should currently be recorded Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> AllowLabeled for T
    where + T: MetricType + Sealed,

    source§

    fn new_labeled(meta: LabeledMetricData) -> T

    Create a new labeled metric.
    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    §

    impl<T, UT> HandleAlloc<UT> for T
    where + T: Send + Sync,

    §

    fn new_handle(value: Arc<T>) -> Handle

    Create a new handle for an Arc value Read more
    §

    fn clone_handle(handle: Handle) -> Handle

    Clone a handle Read more
    §

    fn consume_handle(handle: Handle) -> Arc<T>

    Consume a handle, getting back the initial Arc<>
    §

    fn get_arc(handle: Handle) -> Arc<Self>

    Get a clone of the Arc<> using a “borrowed” handle. Read more
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/docs/glean_core/metrics/struct.Datetime.html b/docs/glean_core/metrics/struct.Datetime.html index a84b305c6e..70f489ae88 100644 --- a/docs/glean_core/metrics/struct.Datetime.html +++ b/docs/glean_core/metrics/struct.Datetime.html @@ -1,26 +1,35 @@ -Datetime in glean_core::metrics - Rust
    pub struct Datetime {
    -    pub year: i32,
    -    pub month: u32,
    -    pub day: u32,
    -    pub hour: u32,
    -    pub minute: u32,
    -    pub second: u32,
    -    pub nanosecond: u32,
    -    pub offset_seconds: i32,
    -}
    Expand description

    Representation of a date, time and timezone.

    -

    Fields§

    §year: i32

    The year, e.g. 2021.

    -
    §month: u32

    The month, 1=January.

    -
    §day: u32

    The day of the month.

    -
    §hour: u32

    The hour. 0-23

    -
    §minute: u32

    The minute. 0-59.

    -
    §second: u32

    The second. 0-60.

    -
    §nanosecond: u32

    The nanosecond part of the time.

    -
    §offset_seconds: i32

    The timezone offset from UTC in seconds. +Datetime in glean_core::metrics - Rust

    +
    pub struct Datetime {
    +    pub year: i32,
    +    pub month: u32,
    +    pub day: u32,
    +    pub hour: u32,
    +    pub minute: u32,
    +    pub second: u32,
    +    pub nanosecond: u32,
    +    pub offset_seconds: i32,
    +}
    Expand description

    Representation of a date, time and timezone.

    +

    Fields§

    §year: i32

    The year, e.g. 2021.

    +
    §month: u32

    The month, 1=January.

    +
    §day: u32

    The day of the month.

    +
    §hour: u32

    The hour. 0-23

    +
    §minute: u32

    The minute. 0-59.

    +
    §second: u32

    The second. 0-60.

    +
    §nanosecond: u32

    The nanosecond part of the time.

    +
    §offset_seconds: i32

    The timezone offset from UTC in seconds. Negative for west, positive for east of UTC.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Returns the “default value” for a type. Read more
    Converts to this type from the input type.
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Clone for Datetime

    source§

    fn clone(&self) -> Datetime

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Datetime

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Datetime

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl From<DateTime<FixedOffset>> for Datetime

    source§

    fn from(dt: DateTime<FixedOffset>) -> Self

    Converts to this type from the input type.
    source§

    impl PartialEq for Datetime

    source§

    fn eq(&self, other: &Datetime) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl Eq for Datetime

    source§

    impl StructuralEq for Datetime

    source§

    impl StructuralPartialEq for Datetime

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    §

    impl<T, UT> HandleAlloc<UT> for T
    where + T: Send + Sync,

    §

    fn new_handle(value: Arc<T>) -> Handle

    Create a new handle for an Arc value Read more
    §

    fn clone_handle(handle: Handle) -> Handle

    Clone a handle Read more
    §

    fn consume_handle(handle: Handle) -> Arc<T>

    Consume a handle, getting back the initial Arc<>
    §

    fn get_arc(handle: Handle) -> Arc<Self>

    Get a clone of the Arc<> using a “borrowed” handle. Read more
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/docs/glean_core/metrics/struct.DatetimeMetric.html b/docs/glean_core/metrics/struct.DatetimeMetric.html index ff98faa572..b49910f347 100644 --- a/docs/glean_core/metrics/struct.DatetimeMetric.html +++ b/docs/glean_core/metrics/struct.DatetimeMetric.html @@ -1,13 +1,14 @@ -DatetimeMetric in glean_core::metrics - Rust
    pub struct DatetimeMetric { /* private fields */ }
    Expand description

    A datetime metric.

    +DatetimeMetric in glean_core::metrics - Rust +
    pub struct DatetimeMetric { /* private fields */ }
    Expand description

    A datetime metric.

    Used to record an absolute date and time, such as the time the user first ran the application.

    -

    Implementations§

    Creates a new datetime metric.

    -

    Sets the metric to a date/time including the timezone offset.

    +

    Implementations§

    source§

    impl DatetimeMetric

    source

    pub fn new(meta: CommonMetricData, time_unit: TimeUnit) -> Self

    Creates a new datetime metric.

    +
    source

    pub fn set(&self, dt: Option<Datetime>)

    Sets the metric to a date/time including the timezone offset.

    Arguments
    • dt - the optinal datetime to set this to. If missing the current date is used.
    -

    Test-only API (exported for FFI purposes).

    +
    source

    pub fn test_get_value(&self, ping_name: Option<String>) -> Option<Datetime>

    Test-only API (exported for FFI purposes).

    Gets the stored datetime value.

    The precision of this value is truncated to the time_unit precision.

    Arguments
    @@ -17,7 +18,10 @@
    Arguments
    Returns

    The stored value or None if nothing stored.

    -

    Test-only API (exported for FFI purposes).

    +
    source

    pub fn test_get_value_as_string( + &self, + ping_name: Option<String> +) -> Option<String>

    Test-only API (exported for FFI purposes).

    Gets the stored datetime value, formatted as an ISO8601 string.

    The precision of this value is truncated to the time_unit precision.

    Arguments
    @@ -27,7 +31,7 @@
    Arguments
    Returns

    The stored value or None if nothing stored.

    -

    Exported for test purposes.

    +
    source

    pub fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32

    Exported for test purposes.

    Gets the number of recorded errors for the given metric and error type.

    Arguments
    Returns

    The number of errors reported.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Access the stored metadata
    Create a new metric from this with a new name.
    Create a new metric from this with a specific label.
    Whether this metric should currently be recorded Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Clone for DatetimeMetric

    source§

    fn clone(&self) -> DatetimeMetric

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for DatetimeMetric

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl MetricType for DatetimeMetric

    source§

    fn meta(&self) -> &CommonMetricDataInternal

    Access the stored metadata
    source§

    fn with_name(&self, _name: String) -> Self
    where + Self: Sized,

    Create a new metric from this with a new name.
    source§

    fn with_dynamic_label(&self, _label: String) -> Self
    where + Self: Sized,

    Create a new metric from this with a specific label.
    source§

    fn should_record(&self, glean: &Glean) -> bool

    Whether this metric should currently be recorded Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    §

    impl<T, UT> HandleAlloc<UT> for T
    where + T: Send + Sync,

    §

    fn new_handle(value: Arc<T>) -> Handle

    Create a new handle for an Arc value Read more
    §

    fn clone_handle(handle: Handle) -> Handle

    Clone a handle Read more
    §

    fn consume_handle(handle: Handle) -> Arc<T>

    Consume a handle, getting back the initial Arc<>
    §

    fn get_arc(handle: Handle) -> Arc<Self>

    Get a clone of the Arc<> using a “borrowed” handle. Read more
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/docs/glean_core/metrics/struct.DenominatorMetric.html b/docs/glean_core/metrics/struct.DenominatorMetric.html index d6b410c6d8..6edd6234ba 100644 --- a/docs/glean_core/metrics/struct.DenominatorMetric.html +++ b/docs/glean_core/metrics/struct.DenominatorMetric.html @@ -1,8 +1,9 @@ -DenominatorMetric in glean_core::metrics - Rust
    pub struct DenominatorMetric { /* private fields */ }
    Expand description

    A Denominator metric (a kind of count shared among Rate metrics).

    +DenominatorMetric in glean_core::metrics - Rust +
    pub struct DenominatorMetric { /* private fields */ }
    Expand description

    A Denominator metric (a kind of count shared among Rate metrics).

    Used to count things. The value can only be incremented, not decremented.

    -

    Implementations§

    Creates a new denominator metric.

    -

    Increases the denominator by amount.

    +

    Implementations§

    source§

    impl DenominatorMetric

    source

    pub fn new(meta: CommonMetricData, numerators: Vec<CommonMetricData>) -> Self

    Creates a new denominator metric.

    +
    source

    pub fn add(&self, amount: i32)

    Increases the denominator by amount.

    Arguments
    • glean - The Glean instance this metric belongs to.
    • @@ -10,7 +11,7 @@
      Arguments
    Notes

    Logs an error if the amount is 0 or negative.

    -

    Test-only API (exported for FFI purposes).

    +
    source

    pub fn test_get_value(&self, ping_name: Option<String>) -> Option<i32>

    Test-only API (exported for FFI purposes).

    Gets the currently stored value as an integer.

    This doesn’t clear the stored value.

    Arguments
    @@ -20,7 +21,7 @@
    Arguments
    Returns

    The stored value or None if nothing stored.

    -

    Exported for test purposes.

    +
    source

    pub fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32

    Exported for test purposes.

    Gets the number of recorded errors for the given metric and error type.

    Arguments
    Returns

    The number of errors reported.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Access the stored metadata
    Create a new metric from this with a new name.
    Create a new metric from this with a specific label.
    Whether this metric should currently be recorded Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Clone for DenominatorMetric

    source§

    fn clone(&self) -> DenominatorMetric

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for DenominatorMetric

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl MetricType for DenominatorMetric

    source§

    fn meta(&self) -> &CommonMetricDataInternal

    Access the stored metadata
    source§

    fn with_name(&self, _name: String) -> Self
    where + Self: Sized,

    Create a new metric from this with a new name.
    source§

    fn with_dynamic_label(&self, _label: String) -> Self
    where + Self: Sized,

    Create a new metric from this with a specific label.
    source§

    fn should_record(&self, glean: &Glean) -> bool

    Whether this metric should currently be recorded Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    §

    impl<T, UT> HandleAlloc<UT> for T
    where + T: Send + Sync,

    §

    fn new_handle(value: Arc<T>) -> Handle

    Create a new handle for an Arc value Read more
    §

    fn clone_handle(handle: Handle) -> Handle

    Clone a handle Read more
    §

    fn consume_handle(handle: Handle) -> Arc<T>

    Consume a handle, getting back the initial Arc<>
    §

    fn get_arc(handle: Handle) -> Arc<Self>

    Get a clone of the Arc<> using a “borrowed” handle. Read more
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/docs/glean_core/metrics/struct.DistributionData.html b/docs/glean_core/metrics/struct.DistributionData.html index 150c0f58a3..72b9f198cd 100644 --- a/docs/glean_core/metrics/struct.DistributionData.html +++ b/docs/glean_core/metrics/struct.DistributionData.html @@ -1,14 +1,24 @@ -DistributionData in glean_core::metrics - Rust
    pub struct DistributionData {
    -    pub values: HashMap<i64, i64>,
    -    pub sum: i64,
    -    pub count: i64,
    -}
    Expand description

    A snapshot of all buckets and the accumulated sum of a distribution.

    -

    Fields§

    §values: HashMap<i64, i64>

    A map containig the bucket index mapped to the accumulated count.

    +DistributionData in glean_core::metrics - Rust +
    pub struct DistributionData {
    +    pub values: HashMap<i64, i64>,
    +    pub sum: i64,
    +    pub count: i64,
    +}
    Expand description

    A snapshot of all buckets and the accumulated sum of a distribution.

    +

    Fields§

    §values: HashMap<i64, i64>

    A map containig the bucket index mapped to the accumulated count.

    This can contain buckets with a count of 0.

    -
    §sum: i64

    The accumulated sum of all the samples in the distribution.

    -
    §count: i64

    The total number of entries in the distribution.

    -

    Trait Implementations§

    Formats the value using the given formatter. Read more
    Serialize this value into the given Serde serializer. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    +
    §sum: i64

    The accumulated sum of all the samples in the distribution.

    +
    §count: i64

    The total number of entries in the distribution.

    +

    Trait Implementations§

    source§

    impl Debug for DistributionData

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Serialize for DistributionData

    source§

    fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
    where + __S: Serializer,

    Serialize this value into the given Serde serializer. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> EncodableKey for T
    where + T: Serialize,

    §

    fn to_bytes(&self) -> Result<Vec<u8>, DataError>

    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    §

    impl<T, UT> HandleAlloc<UT> for T
    where + T: Send + Sync,

    §

    fn new_handle(value: Arc<T>) -> Handle

    Create a new handle for an Arc value Read more
    §

    fn clone_handle(handle: Handle) -> Handle

    Clone a handle Read more
    §

    fn consume_handle(handle: Handle) -> Arc<T>

    Consume a handle, getting back the initial Arc<>
    §

    fn get_arc(handle: Handle) -> Arc<Self>

    Get a clone of the Arc<> using a “borrowed” handle. Read more
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/docs/glean_core/metrics/struct.EventMetric.html b/docs/glean_core/metrics/struct.EventMetric.html index 522e79f589..7ffd24ef16 100644 --- a/docs/glean_core/metrics/struct.EventMetric.html +++ b/docs/glean_core/metrics/struct.EventMetric.html @@ -1,25 +1,29 @@ -EventMetric in glean_core::metrics - Rust
    pub struct EventMetric { /* private fields */ }
    Expand description

    An event metric.

    +EventMetric in glean_core::metrics - Rust +
    pub struct EventMetric { /* private fields */ }
    Expand description

    An event metric.

    Events allow recording of e.g. individual occurences of user actions, say every time a view was open and from where. Each time you record an event, it records a timestamp, the event’s name and a set of custom values.

    -

    Implementations§

    Creates a new event metric.

    -

    Records an event.

    +

    Implementations§

    source§

    impl EventMetric

    source

    pub fn new(meta: CommonMetricData, allowed_extra_keys: Vec<String>) -> Self

    Creates a new event metric.

    +
    source

    pub fn record(&self, extra: HashMap<String, String>)

    Records an event.

    Arguments
      -
    • extra - A HashMap of (key, value) pairs. +
    • extra - A HashMap of (key, value) pairs. Keys must be one of the allowed extra keys. If any key is not allowed, an error is reported and no event is recorded.
    -

    Record a new event with a provided timestamp.

    +
    source

    pub fn record_with_time(&self, timestamp: u64, extra: HashMap<String, String>)

    Record a new event with a provided timestamp.

    It’s the caller’s responsibility to ensure the timestamp comes from the same clock source.

    Arguments
    • timestamp - The event timestamp, in milliseconds.
    • -
    • extra - A HashMap of (key, value) pairs. +
    • extra - A HashMap of (key, value) pairs. Keys must be one of the allowed extra keys. If any key is not allowed, an error is reported and no event is recorded.
    -

    Test-only API (exported for FFI purposes).

    +
    source

    pub fn test_get_value( + &self, + ping_name: Option<String> +) -> Option<Vec<RecordedEvent>>

    Test-only API (exported for FFI purposes).

    Get the vector of currently stored events for this event metric.

    This doesn’t clear the stored value.

    Arguments
    @@ -27,7 +31,7 @@
    Arguments
  • ping_name - the optional name of the ping to retrieve the metric for. Defaults to the first value in send_in_pings.
  • -

    Exported for test purposes.

    +
    source

    pub fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32

    Exported for test purposes.

    Gets the number of recorded errors for the given metric and error type.

    Arguments
    Returns

    The number of errors reported.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Access the stored metadata
    Create a new metric from this with a new name.
    Create a new metric from this with a specific label.
    Whether this metric should currently be recorded Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Clone for EventMetric

    source§

    fn clone(&self) -> EventMetric

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for EventMetric

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl MetricType for EventMetric

    source§

    fn meta(&self) -> &CommonMetricDataInternal

    Access the stored metadata
    source§

    fn with_name(&self, _name: String) -> Self
    where + Self: Sized,

    Create a new metric from this with a new name.
    source§

    fn with_dynamic_label(&self, _label: String) -> Self
    where + Self: Sized,

    Create a new metric from this with a specific label.
    source§

    fn should_record(&self, glean: &Glean) -> bool

    Whether this metric should currently be recorded Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    §

    impl<T, UT> HandleAlloc<UT> for T
    where + T: Send + Sync,

    §

    fn new_handle(value: Arc<T>) -> Handle

    Create a new handle for an Arc value Read more
    §

    fn clone_handle(handle: Handle) -> Handle

    Clone a handle Read more
    §

    fn consume_handle(handle: Handle) -> Arc<T>

    Consume a handle, getting back the initial Arc<>
    §

    fn get_arc(handle: Handle) -> Arc<Self>

    Get a clone of the Arc<> using a “borrowed” handle. Read more
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/docs/glean_core/metrics/struct.LabeledMetric.html b/docs/glean_core/metrics/struct.LabeledMetric.html index 36953f2dfd..6ca2c17276 100644 --- a/docs/glean_core/metrics/struct.LabeledMetric.html +++ b/docs/glean_core/metrics/struct.LabeledMetric.html @@ -1,8 +1,13 @@ -LabeledMetric in glean_core::metrics - Rust
    pub struct LabeledMetric<T> { /* private fields */ }
    Expand description

    A labeled metric.

    +LabeledMetric in glean_core::metrics - Rust +
    pub struct LabeledMetric<T> { /* private fields */ }
    Expand description

    A labeled metric.

    Labeled metrics allow to record multiple sub-metrics of the same type under different string labels.

    -

    Implementations§

    Creates a new labeled metric from the given metric instance and optional list of labels.

    -

    See get for information on how static or dynamic labels are handled.

    -

    Gets a specific metric for a given label.

    +

    Implementations§

    source§

    impl<T> LabeledMetric<T>
    where + T: AllowLabeled + Clone,

    source

    pub fn new( + meta: LabeledMetricData, + labels: Option<Vec<Cow<'static, str>>> +) -> LabeledMetric<T>

    Creates a new labeled metric from the given metric instance and optional list of labels.

    +

    See get for information on how static or dynamic labels are handled.

    +
    source

    pub fn get<S: AsRef<str>>(&self, label: S) -> Arc<T>

    Gets a specific metric for a given label.

    If a set of acceptable labels were specified in the metrics.yaml file, and the given label is not in the set, it will be recorded under the special OTHER_LABEL label.

    If a set of acceptable labels was not specified in the metrics.yaml file, @@ -10,7 +15,7 @@ After that, any additional labels will be recorded under the special OTHER_LABEL label.

    Labels must be snake_case and less than 30 characters. If an invalid label is used, the metric will be recorded in the special OTHER_LABEL label.

    -

    Exported for test purposes.

    +
    source

    pub fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32

    Exported for test purposes.

    Gets the number of recorded errors for the given metric and error type.

    Arguments
    Returns

    The number of errors reported.

    -

    Trait Implementations§

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl<T: Debug> Debug for LabeledMetric<T>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    §

    impl<T> RefUnwindSafe for LabeledMetric<T>
    where + T: RefUnwindSafe,

    §

    impl<T> Send for LabeledMetric<T>
    where + T: Send + Sync,

    §

    impl<T> Sync for LabeledMetric<T>
    where + T: Send + Sync,

    §

    impl<T> Unpin for LabeledMetric<T>
    where + T: Unpin,

    §

    impl<T> UnwindSafe for LabeledMetric<T>
    where + T: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    §

    impl<T, UT> HandleAlloc<UT> for T
    where + T: Send + Sync,

    §

    fn new_handle(value: Arc<T>) -> Handle

    Create a new handle for an Arc value Read more
    §

    fn clone_handle(handle: Handle) -> Handle

    Clone a handle Read more
    §

    fn consume_handle(handle: Handle) -> Arc<T>

    Consume a handle, getting back the initial Arc<>
    §

    fn get_arc(handle: Handle) -> Arc<Self>

    Get a clone of the Arc<> using a “borrowed” handle. Read more
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/docs/glean_core/metrics/struct.MemoryDistributionMetric.html b/docs/glean_core/metrics/struct.MemoryDistributionMetric.html index 6ab4dd4a17..41e7d33ae7 100644 --- a/docs/glean_core/metrics/struct.MemoryDistributionMetric.html +++ b/docs/glean_core/metrics/struct.MemoryDistributionMetric.html @@ -1,7 +1,8 @@ -MemoryDistributionMetric in glean_core::metrics - Rust
    pub struct MemoryDistributionMetric { /* private fields */ }
    Expand description

    A memory distribution metric.

    +MemoryDistributionMetric in glean_core::metrics - Rust +
    pub struct MemoryDistributionMetric { /* private fields */ }
    Expand description

    A memory distribution metric.

    Memory distributions are used to accumulate and store memory sizes.

    -

    Implementations§

    Creates a new memory distribution metric.

    -

    Accumulates the provided sample in the metric.

    +

    Implementations§

    source§

    impl MemoryDistributionMetric

    source

    pub fn new(meta: CommonMetricData, memory_unit: MemoryUnit) -> Self

    Creates a new memory distribution metric.

    +
    source

    pub fn accumulate(&self, sample: i64)

    Accumulates the provided sample in the metric.

    Arguments
    • sample - The sample to be recorded by the metric. The sample is assumed to be in the @@ -9,26 +10,29 @@
      Arguments
    Notes

    Values bigger than 1 Terabyte (240 bytes) are truncated -and an ErrorType::InvalidValue error is recorded.

    -

    Accumulates the provided signed samples in the metric.

    +and an ErrorType::InvalidValue error is recorded.

    +
    source

    pub fn accumulate_samples(&self, samples: Vec<i64>)

    Accumulates the provided signed samples in the metric.

    This is required so that the platform-specific code can provide us with 64 bit signed integers if no u64 comparable type is available. This will take care of filtering and reporting errors for any provided negative sample.

    Please note that this assumes that the provided samples are already in the “unit” declared by the instance of the metric type (e.g. if the the -instance this method was called on is using MemoryUnit::Kilobyte, then +instance this method was called on is using MemoryUnit::Kilobyte, then samples are assumed to be in that unit).

    Arguments
    • samples - The vector holding the samples to be recorded by the metric.
    Notes
    -

    Discards any negative value in samples and report an ErrorType::InvalidValue +

    Discards any negative value in samples and report an ErrorType::InvalidValue for each of them.

    Values bigger than 1 Terabyte (240 bytes) are truncated -and an ErrorType::InvalidValue error is recorded.

    -

    Test-only API (exported for FFI purposes).

    +and an ErrorType::InvalidValue error is recorded.

    +
    source

    pub fn test_get_value( + &self, + ping_name: Option<String> +) -> Option<DistributionData>

    Test-only API (exported for FFI purposes).

    Gets the currently stored value.

    This doesn’t clear the stored value.

    Arguments
    @@ -38,7 +42,7 @@
    Arguments
    Returns

    The stored value or None if nothing stored.

    -

    Exported for test purposes.

    +
    source

    pub fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32

    Exported for test purposes.

    Gets the number of recorded errors for the given metric and error type.

    Arguments
    Returns

    The number of errors reported.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Access the stored metadata
    Create a new metric from this with a new name.
    Create a new metric from this with a specific label.
    Whether this metric should currently be recorded Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Clone for MemoryDistributionMetric

    source§

    fn clone(&self) -> MemoryDistributionMetric

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for MemoryDistributionMetric

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl MetricType for MemoryDistributionMetric

    source§

    fn meta(&self) -> &CommonMetricDataInternal

    Access the stored metadata
    source§

    fn with_name(&self, name: String) -> Self

    Create a new metric from this with a new name.
    source§

    fn with_dynamic_label(&self, label: String) -> Self

    Create a new metric from this with a specific label.
    source§

    fn should_record(&self, glean: &Glean) -> bool

    Whether this metric should currently be recorded Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> AllowLabeled for T
    where + T: MetricType + Sealed,

    source§

    fn new_labeled(meta: LabeledMetricData) -> T

    Create a new labeled metric.
    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    §

    impl<T, UT> HandleAlloc<UT> for T
    where + T: Send + Sync,

    §

    fn new_handle(value: Arc<T>) -> Handle

    Create a new handle for an Arc value Read more
    §

    fn clone_handle(handle: Handle) -> Handle

    Clone a handle Read more
    §

    fn consume_handle(handle: Handle) -> Arc<T>

    Consume a handle, getting back the initial Arc<>
    §

    fn get_arc(handle: Handle) -> Arc<Self>

    Get a clone of the Arc<> using a “borrowed” handle. Read more
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/docs/glean_core/metrics/struct.NumeratorMetric.html b/docs/glean_core/metrics/struct.NumeratorMetric.html index cca582e2dd..30829946f6 100644 --- a/docs/glean_core/metrics/struct.NumeratorMetric.html +++ b/docs/glean_core/metrics/struct.NumeratorMetric.html @@ -1,16 +1,17 @@ -NumeratorMetric in glean_core::metrics - Rust
    pub struct NumeratorMetric(_);
    Expand description

    Developer-facing API for recording rate metrics with external denominators.

    +NumeratorMetric in glean_core::metrics - Rust +
    pub struct NumeratorMetric(/* private fields */);
    Expand description

    Developer-facing API for recording rate metrics with external denominators.

    Instances of this class type are automatically generated by the parsers at build time, allowing developers to record values that were previously registered in the metrics.yaml file.

    -

    Implementations§

    The public constructor used by automatically generated metrics.

    -

    Increases the numerator by amount.

    +

    Implementations§

    source§

    impl NumeratorMetric

    source

    pub fn new(meta: CommonMetricData) -> Self

    The public constructor used by automatically generated metrics.

    +
    source

    pub fn add_to_numerator(&self, amount: i32)

    Increases the numerator by amount.

    Arguments
    • amount - The amount to increase by. Should be non-negative.
    Notes

    Logs an error if the amount is negative.

    -

    Exported for test purposes.

    +
    source

    pub fn test_get_value(&self, ping_name: Option<String>) -> Option<Rate>

    Exported for test purposes.

    Gets the currently stored value as a pair of integers.

    This doesn’t clear the stored value.

    Arguments
    @@ -20,7 +21,7 @@
    Arguments
    Returns

    The stored value or None if nothing stored.

    -

    Exported for test purposes.

    +
    source

    pub fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32

    Exported for test purposes.

    Gets the number of recorded errors for the given metric and error type.

    Arguments
    Returns

    The number of errors reported.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Access the stored metadata
    Create a new metric from this with a new name.
    Create a new metric from this with a specific label.
    Whether this metric should currently be recorded Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Clone for NumeratorMetric

    source§

    fn clone(&self) -> NumeratorMetric

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl MetricType for NumeratorMetric

    source§

    fn meta(&self) -> &CommonMetricDataInternal

    Access the stored metadata
    source§

    fn with_name(&self, _name: String) -> Self
    where + Self: Sized,

    Create a new metric from this with a new name.
    source§

    fn with_dynamic_label(&self, _label: String) -> Self
    where + Self: Sized,

    Create a new metric from this with a specific label.
    source§

    fn should_record(&self, glean: &Glean) -> bool

    Whether this metric should currently be recorded Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    §

    impl<T, UT> HandleAlloc<UT> for T
    where + T: Send + Sync,

    §

    fn new_handle(value: Arc<T>) -> Handle

    Create a new handle for an Arc value Read more
    §

    fn clone_handle(handle: Handle) -> Handle

    Clone a handle Read more
    §

    fn consume_handle(handle: Handle) -> Arc<T>

    Consume a handle, getting back the initial Arc<>
    §

    fn get_arc(handle: Handle) -> Arc<Self>

    Get a clone of the Arc<> using a “borrowed” handle. Read more
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/docs/glean_core/metrics/struct.ObjectMetric.html b/docs/glean_core/metrics/struct.ObjectMetric.html index 472f1af6e1..2c548e149e 100644 --- a/docs/glean_core/metrics/struct.ObjectMetric.html +++ b/docs/glean_core/metrics/struct.ObjectMetric.html @@ -1,15 +1,16 @@ -ObjectMetric in glean_core::metrics - Rust
    pub struct ObjectMetric { /* private fields */ }
    Expand description

    An object metric.

    +ObjectMetric in glean_core::metrics - Rust +
    pub struct ObjectMetric { /* private fields */ }
    Expand description

    An object metric.

    Record structured data. The value must adhere to a predefined structure and is serialized into JSON.

    -

    Implementations§

    Creates a new object metric.

    -

    Sets to the specified structure.

    +

    Implementations§

    source§

    impl ObjectMetric

    source

    pub fn new(meta: CommonMetricData) -> Self

    Creates a new object metric.

    +
    source

    pub fn set(&self, value: JsonValue)

    Sets to the specified structure.

    No additional verification is done. The shape needs to be externally verified.

    Arguments
    • value - the value to set.
    -

    Sets to the specified structure.

    +
    source

    pub fn set_string(&self, object: String)

    Sets to the specified structure.

    Parses the passed JSON string. If it can’t be parsed into a valid object it records an invalid value error.

    Note: This does not check the structure. This needs to be done by the wrapper.

    @@ -17,12 +18,12 @@
    Arguments
    • object - JSON representation of the object to set.
    -

    Record an InvalidValue error for this metric.

    +
    source

    pub fn record_schema_error(&self)

    Record an InvalidValue error for this metric.

    Only to be used by the RLB.

    -

    Test-only API (exported for FFI purposes).

    +
    source

    pub fn test_get_value(&self, ping_name: Option<String>) -> Option<JsonValue>

    Test-only API (exported for FFI purposes).

    Gets the currently stored value as JSON.

    This doesn’t clear the stored value.

    -

    Exported for test purposes.

    +
    source

    pub fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32

    Exported for test purposes.

    Gets the number of recorded errors for the given metric and error type.

    Arguments
    Returns

    The number of errors reported.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Access the stored metadata
    Create a new metric from this with a new name.
    Create a new metric from this with a specific label.
    Whether this metric should currently be recorded Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Clone for ObjectMetric

    source§

    fn clone(&self) -> ObjectMetric

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for ObjectMetric

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl MetricType for ObjectMetric

    source§

    fn meta(&self) -> &CommonMetricDataInternal

    Access the stored metadata
    source§

    fn with_name(&self, _name: String) -> Self
    where + Self: Sized,

    Create a new metric from this with a new name.
    source§

    fn with_dynamic_label(&self, _label: String) -> Self
    where + Self: Sized,

    Create a new metric from this with a specific label.
    source§

    fn should_record(&self, glean: &Glean) -> bool

    Whether this metric should currently be recorded Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    §

    impl<T, UT> HandleAlloc<UT> for T
    where + T: Send + Sync,

    §

    fn new_handle(value: Arc<T>) -> Handle

    Create a new handle for an Arc value Read more
    §

    fn clone_handle(handle: Handle) -> Handle

    Clone a handle Read more
    §

    fn consume_handle(handle: Handle) -> Arc<T>

    Consume a handle, getting back the initial Arc<>
    §

    fn get_arc(handle: Handle) -> Arc<Self>

    Get a clone of the Arc<> using a “borrowed” handle. Read more
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/docs/glean_core/metrics/struct.PingType.html b/docs/glean_core/metrics/struct.PingType.html index 626e346e59..046fb6e586 100644 --- a/docs/glean_core/metrics/struct.PingType.html +++ b/docs/glean_core/metrics/struct.PingType.html @@ -1,7 +1,17 @@ -PingType in glean_core::metrics - Rust
    pub struct PingType(_);
    Expand description

    Stores information about a ping.

    +PingType in glean_core::metrics - Rust +
    pub struct PingType(/* private fields */);
    Expand description

    Stores information about a ping.

    This is required so that given metric data queued on disk we can send pings with the correct settings, e.g. whether it has a client_id.

    -

    Implementations§

    Creates a new ping type for the given name, whether to include the client ID and whether to +

    Implementations§

    source§

    impl PingType

    source

    pub fn new<A: Into<String>>( + name: A, + include_client_id: bool, + send_if_empty: bool, + precise_timestamps: bool, + include_info_sections: bool, + enabled: bool, + schedules_pings: Vec<String>, + reason_codes: Vec<String> +) -> Self

    Creates a new ping type for the given name, whether to include the client ID and whether to send this ping empty.

    Arguments
      @@ -14,7 +24,7 @@
      Arguments
      ping will still be collected but is discarded rather than being submitted.
    • reason_codes - The valid reason codes for this ping.
    -

    Submits the ping for eventual uploading.

    +
    source

    pub fn submit(&self, reason: Option<String>)

    Submits the ping for eventual uploading.

    The ping content is assembled as soon as possible, but upload is not guaranteed to happen immediately, as that depends on the upload policies.

    If the ping currently contains no content, it will not be sent, @@ -24,8 +34,16 @@

    Arguments
  • reason - the reason the ping was triggered. Included in the ping_info.reason part of the payload.
  • -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Clone for PingType

    source§

    fn clone(&self) -> PingType

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for PingType

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    §

    impl<T, UT> HandleAlloc<UT> for T
    where + T: Send + Sync,

    §

    fn new_handle(value: Arc<T>) -> Handle

    Create a new handle for an Arc value Read more
    §

    fn clone_handle(handle: Handle) -> Handle

    Clone a handle Read more
    §

    fn consume_handle(handle: Handle) -> Arc<T>

    Consume a handle, getting back the initial Arc<>
    §

    fn get_arc(handle: Handle) -> Arc<Self>

    Get a clone of the Arc<> using a “borrowed” handle. Read more
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/docs/glean_core/metrics/struct.QuantityMetric.html b/docs/glean_core/metrics/struct.QuantityMetric.html index c23972e7e3..69f9a25464 100644 --- a/docs/glean_core/metrics/struct.QuantityMetric.html +++ b/docs/glean_core/metrics/struct.QuantityMetric.html @@ -1,14 +1,15 @@ -QuantityMetric in glean_core::metrics - Rust
    pub struct QuantityMetric { /* private fields */ }
    Expand description

    A quantity metric.

    +QuantityMetric in glean_core::metrics - Rust +
    pub struct QuantityMetric { /* private fields */ }
    Expand description

    A quantity metric.

    Used to store explicit non-negative integers.

    -

    Implementations§

    Creates a new quantity metric.

    -

    Sets the value. Must be non-negative.

    +

    Implementations§

    source§

    impl QuantityMetric

    source

    pub fn new(meta: CommonMetricData) -> Self

    Creates a new quantity metric.

    +
    source

    pub fn set(&self, value: i64)

    Sets the value. Must be non-negative.

    Arguments
    • value - The value. Must be non-negative.
    Notes

    Logs an error if the value is negative.

    -

    Test-only API (exported for FFI purposes).

    +
    source

    pub fn test_get_value(&self, ping_name: Option<String>) -> Option<i64>

    Test-only API (exported for FFI purposes).

    Gets the currently stored value as an integer.

    This doesn’t clear the stored value.

    Arguments
    @@ -18,7 +19,7 @@
    Arguments
    Returns

    The stored value or None if nothing stored.

    -

    Exported for test purposes.

    +
    source

    pub fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32

    Exported for test purposes.

    Gets the number of recorded errors for the given metric and error type.

    Arguments
    Returns

    The number of errors reported.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Access the stored metadata
    Create a new metric from this with a new name.
    Create a new metric from this with a specific label.
    Whether this metric should currently be recorded Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Clone for QuantityMetric

    source§

    fn clone(&self) -> QuantityMetric

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for QuantityMetric

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl MetricType for QuantityMetric

    source§

    fn meta(&self) -> &CommonMetricDataInternal

    Access the stored metadata
    source§

    fn with_name(&self, _name: String) -> Self
    where + Self: Sized,

    Create a new metric from this with a new name.
    source§

    fn with_dynamic_label(&self, _label: String) -> Self
    where + Self: Sized,

    Create a new metric from this with a specific label.
    source§

    fn should_record(&self, glean: &Glean) -> bool

    Whether this metric should currently be recorded Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    §

    impl<T, UT> HandleAlloc<UT> for T
    where + T: Send + Sync,

    §

    fn new_handle(value: Arc<T>) -> Handle

    Create a new handle for an Arc value Read more
    §

    fn clone_handle(handle: Handle) -> Handle

    Clone a handle Read more
    §

    fn consume_handle(handle: Handle) -> Arc<T>

    Consume a handle, getting back the initial Arc<>
    §

    fn get_arc(handle: Handle) -> Arc<Self>

    Get a clone of the Arc<> using a “borrowed” handle. Read more
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/docs/glean_core/metrics/struct.Rate.html b/docs/glean_core/metrics/struct.Rate.html index 8269166f77..bc23cfdbcb 100644 --- a/docs/glean_core/metrics/struct.Rate.html +++ b/docs/glean_core/metrics/struct.Rate.html @@ -1,13 +1,22 @@ -Rate in glean_core::metrics - Rust

    Struct glean_core::metrics::Rate

    source ·
    pub struct Rate {
    -    pub numerator: i32,
    -    pub denominator: i32,
    -}
    Expand description

    A rate value as given by its numerator and denominator.

    -

    Fields§

    §numerator: i32

    A rate’s numerator

    -
    §denominator: i32

    A rate’s denominator

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Converts to this type from the input type.
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    +Rate in glean_core::metrics - Rust +

    Struct glean_core::metrics::Rate

    source ·
    pub struct Rate {
    +    pub numerator: i32,
    +    pub denominator: i32,
    +}
    Expand description

    A rate value as given by its numerator and denominator.

    +

    Fields§

    §numerator: i32

    A rate’s numerator

    +
    §denominator: i32

    A rate’s denominator

    +

    Trait Implementations§

    source§

    impl Clone for Rate

    source§

    fn clone(&self) -> Rate

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Rate

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<(i32, i32)> for Rate

    source§

    fn from((num, den): (i32, i32)) -> Self

    Converts to this type from the input type.
    source§

    impl PartialEq for Rate

    source§

    fn eq(&self, other: &Rate) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl Eq for Rate

    source§

    impl StructuralEq for Rate

    source§

    impl StructuralPartialEq for Rate

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Rate

    §

    impl Send for Rate

    §

    impl Sync for Rate

    §

    impl Unpin for Rate

    §

    impl UnwindSafe for Rate

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    §

    impl<T, UT> HandleAlloc<UT> for T
    where + T: Send + Sync,

    §

    fn new_handle(value: Arc<T>) -> Handle

    Create a new handle for an Arc value Read more
    §

    fn clone_handle(handle: Handle) -> Handle

    Clone a handle Read more
    §

    fn consume_handle(handle: Handle) -> Arc<T>

    Consume a handle, getting back the initial Arc<>
    §

    fn get_arc(handle: Handle) -> Arc<Self>

    Get a clone of the Arc<> using a “borrowed” handle. Read more
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/docs/glean_core/metrics/struct.RateMetric.html b/docs/glean_core/metrics/struct.RateMetric.html index 5168bea705..05d51d15fd 100644 --- a/docs/glean_core/metrics/struct.RateMetric.html +++ b/docs/glean_core/metrics/struct.RateMetric.html @@ -1,12 +1,13 @@ -RateMetric in glean_core::metrics - Rust
    pub struct RateMetric { /* private fields */ }
    Expand description

    A rate metric.

    +RateMetric in glean_core::metrics - Rust +
    pub struct RateMetric { /* private fields */ }
    Expand description

    A rate metric.

    Used to determine the proportion of things via two counts:

    • A numerator defining the amount of times something happened,
    • A denominator counting the amount of times someting could have happened.

    Both numerator and denominator can only be incremented, not decremented.

    -

    Implementations§

    Creates a new rate metric.

    -

    Increases the numerator by amount.

    +

    Implementations§

    source§

    impl RateMetric

    source

    pub fn new(meta: CommonMetricData) -> Self

    Creates a new rate metric.

    +
    source

    pub fn add_to_numerator(&self, amount: i32)

    Increases the numerator by amount.

    Arguments
    • glean - The Glean instance this metric belongs to.
    • @@ -14,7 +15,7 @@
      Arguments
    Notes

    Logs an error if the amount is negative.

    -

    Increases the denominator by amount.

    +
    source

    pub fn add_to_denominator(&self, amount: i32)

    Increases the denominator by amount.

    Arguments
    • glean - The Glean instance this metric belongs to.
    • @@ -22,7 +23,7 @@
      Arguments
    Notes

    Logs an error if the amount is negative.

    -

    Test-only API (exported for FFI purposes).

    +
    source

    pub fn test_get_value(&self, ping_name: Option<String>) -> Option<Rate>

    Test-only API (exported for FFI purposes).

    Gets the currently stored value as a pair of integers.

    This doesn’t clear the stored value.

    Arguments
    @@ -32,7 +33,7 @@
    Arguments
    Returns

    The stored value or None if nothing stored.

    -

    Exported for test purposes.

    +
    source

    pub fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32

    Exported for test purposes.

    Gets the number of recorded errors for the given metric and error type.

    Arguments
    Returns

    The number of errors reported.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Access the stored metadata
    Create a new metric from this with a new name.
    Create a new metric from this with a specific label.
    Whether this metric should currently be recorded Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Clone for RateMetric

    source§

    fn clone(&self) -> RateMetric

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for RateMetric

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl MetricType for RateMetric

    source§

    fn meta(&self) -> &CommonMetricDataInternal

    Access the stored metadata
    source§

    fn with_name(&self, _name: String) -> Self
    where + Self: Sized,

    Create a new metric from this with a new name.
    source§

    fn with_dynamic_label(&self, _label: String) -> Self
    where + Self: Sized,

    Create a new metric from this with a specific label.
    source§

    fn should_record(&self, glean: &Glean) -> bool

    Whether this metric should currently be recorded Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    §

    impl<T, UT> HandleAlloc<UT> for T
    where + T: Send + Sync,

    §

    fn new_handle(value: Arc<T>) -> Handle

    Create a new handle for an Arc value Read more
    §

    fn clone_handle(handle: Handle) -> Handle

    Clone a handle Read more
    §

    fn consume_handle(handle: Handle) -> Arc<T>

    Consume a handle, getting back the initial Arc<>
    §

    fn get_arc(handle: Handle) -> Arc<Self>

    Get a clone of the Arc<> using a “borrowed” handle. Read more
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/docs/glean_core/metrics/struct.RecordedEvent.html b/docs/glean_core/metrics/struct.RecordedEvent.html index c5007492b5..a347777a57 100644 --- a/docs/glean_core/metrics/struct.RecordedEvent.html +++ b/docs/glean_core/metrics/struct.RecordedEvent.html @@ -1,21 +1,35 @@ -RecordedEvent in glean_core::metrics - Rust
    pub struct RecordedEvent {
    -    pub timestamp: u64,
    -    pub category: String,
    -    pub name: String,
    -    pub extra: Option<HashMap<String, String>>,
    -}
    Expand description

    Represents the recorded data for a single event.

    -

    Fields§

    §timestamp: u64

    The timestamp of when the event was recorded.

    +RecordedEvent in glean_core::metrics - Rust +
    pub struct RecordedEvent {
    +    pub timestamp: u64,
    +    pub category: String,
    +    pub name: String,
    +    pub extra: Option<HashMap<String, String>>,
    +}
    Expand description

    Represents the recorded data for a single event.

    +

    Fields§

    §timestamp: u64

    The timestamp of when the event was recorded.

    This allows to order events from a single process run.

    -
    §category: String

    The event’s category.

    +
    §category: String

    The event’s category.

    This is defined by users in the metrics file.

    -
    §name: String

    The event’s name.

    +
    §name: String

    The event’s name.

    This is defined by users in the metrics file.

    -
    §extra: Option<HashMap<String, String>>

    A map of all extra data values.

    +
    §extra: Option<HashMap<String, String>>

    A map of all extra data values.

    The set of allowed extra keys is defined by users in the metrics file.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Deserialize this value from the given Serde deserializer. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    Serialize this value into the given Serde serializer. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Clone for RecordedEvent

    source§

    fn clone(&self) -> RecordedEvent

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for RecordedEvent

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<'de> Deserialize<'de> for RecordedEvent

    source§

    fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
    where + __D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    source§

    impl PartialEq for RecordedEvent

    source§

    fn eq(&self, other: &RecordedEvent) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl Serialize for RecordedEvent

    source§

    fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
    where + __S: Serializer,

    Serialize this value into the given Serde serializer. Read more
    source§

    impl Eq for RecordedEvent

    source§

    impl StructuralEq for RecordedEvent

    source§

    impl StructuralPartialEq for RecordedEvent

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> EncodableKey for T
    where + T: Serialize,

    §

    fn to_bytes(&self) -> Result<Vec<u8>, DataError>

    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    §

    impl<T, UT> HandleAlloc<UT> for T
    where + T: Send + Sync,

    §

    fn new_handle(value: Arc<T>) -> Handle

    Create a new handle for an Arc value Read more
    §

    fn clone_handle(handle: Handle) -> Handle

    Clone a handle Read more
    §

    fn consume_handle(handle: Handle) -> Arc<T>

    Consume a handle, getting back the initial Arc<>
    §

    fn get_arc(handle: Handle) -> Arc<Self>

    Get a clone of the Arc<> using a “borrowed” handle. Read more
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<V> ObjectSerialize for V
    where + V: Serialize + for<'de> Deserialize<'de>,

    source§

    fn from_str(obj: &str) -> Result<V, ObjectError>

    Deserialize the object from its JSON representation. Read more
    source§

    fn into_serialized_object(self) -> Result<Value, ObjectError>

    Serialize this object into a JSON string.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> DeserializeOwned for T
    where + T: for<'de> Deserialize<'de>,

    \ No newline at end of file diff --git a/docs/glean_core/metrics/struct.RecordedExperiment.html b/docs/glean_core/metrics/struct.RecordedExperiment.html index 14143fef42..be63476177 100644 --- a/docs/glean_core/metrics/struct.RecordedExperiment.html +++ b/docs/glean_core/metrics/struct.RecordedExperiment.html @@ -1,19 +1,33 @@ -RecordedExperiment in glean_core::metrics - Rust
    pub struct RecordedExperiment {
    -    pub branch: String,
    -    pub extra: Option<HashMap<String, String>>,
    -}
    Expand description

    Deserialized experiment data.

    -

    Fields§

    §branch: String

    The experiment’s branch as set through set_experiment_active.

    -
    §extra: Option<HashMap<String, String>>

    Any extra data associated with this experiment through set_experiment_active. +RecordedExperiment in glean_core::metrics - Rust

    +
    pub struct RecordedExperiment {
    +    pub branch: String,
    +    pub extra: Option<HashMap<String, String>>,
    +}
    Expand description

    Deserialized experiment data.

    +

    Fields§

    §branch: String

    The experiment’s branch as set through set_experiment_active.

    +
    §extra: Option<HashMap<String, String>>

    Any extra data associated with this experiment through set_experiment_active. Note: Option required to keep backwards-compatibility.

    -

    Implementations§

    Gets the recorded experiment data as a JSON value.

    +

    Implementations§

    source§

    impl RecordedExperiment

    source

    pub fn as_json(&self) -> JsonValue

    Gets the recorded experiment data as a JSON value.

    For JSON, we don’t want to include {"extra": null} – we just want to skip extra entirely. Unfortunately, we can’t use a serde field annotation for this, since that would break bincode serialization, which doesn’t support skipping fields. Therefore, we use a custom serialization function just for JSON here.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Deserialize this value from the given Serde deserializer. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    Serialize this value into the given Serde serializer. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Clone for RecordedExperiment

    source§

    fn clone(&self) -> RecordedExperiment

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for RecordedExperiment

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<'de> Deserialize<'de> for RecordedExperiment

    source§

    fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
    where + __D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    source§

    impl PartialEq for RecordedExperiment

    source§

    fn eq(&self, other: &RecordedExperiment) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl Serialize for RecordedExperiment

    source§

    fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
    where + __S: Serializer,

    Serialize this value into the given Serde serializer. Read more
    source§

    impl Eq for RecordedExperiment

    source§

    impl StructuralEq for RecordedExperiment

    source§

    impl StructuralPartialEq for RecordedExperiment

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> EncodableKey for T
    where + T: Serialize,

    §

    fn to_bytes(&self) -> Result<Vec<u8>, DataError>

    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    §

    impl<T, UT> HandleAlloc<UT> for T
    where + T: Send + Sync,

    §

    fn new_handle(value: Arc<T>) -> Handle

    Create a new handle for an Arc value Read more
    §

    fn clone_handle(handle: Handle) -> Handle

    Clone a handle Read more
    §

    fn consume_handle(handle: Handle) -> Arc<T>

    Consume a handle, getting back the initial Arc<>
    §

    fn get_arc(handle: Handle) -> Arc<Self>

    Get a clone of the Arc<> using a “borrowed” handle. Read more
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<V> ObjectSerialize for V
    where + V: Serialize + for<'de> Deserialize<'de>,

    source§

    fn from_str(obj: &str) -> Result<V, ObjectError>

    Deserialize the object from its JSON representation. Read more
    source§

    fn into_serialized_object(self) -> Result<Value, ObjectError>

    Serialize this object into a JSON string.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> DeserializeOwned for T
    where + T: for<'de> Deserialize<'de>,

    \ No newline at end of file diff --git a/docs/glean_core/metrics/struct.RemoteSettingsConfig.html b/docs/glean_core/metrics/struct.RemoteSettingsConfig.html index 23b2f0ea6e..ddb6eff9e7 100644 --- a/docs/glean_core/metrics/struct.RemoteSettingsConfig.html +++ b/docs/glean_core/metrics/struct.RemoteSettingsConfig.html @@ -1,29 +1,43 @@ -RemoteSettingsConfig in glean_core::metrics - Rust
    pub struct RemoteSettingsConfig {
    -    pub metrics_enabled: HashMap<String, bool>,
    -    pub pings_enabled: HashMap<String, bool>,
    -    pub event_threshold: Option<u32>,
    -}
    Expand description

    Represents a list of metrics and an associated boolean property +RemoteSettingsConfig in glean_core::metrics - Rust

    +
    pub struct RemoteSettingsConfig {
    +    pub metrics_enabled: HashMap<String, bool>,
    +    pub pings_enabled: HashMap<String, bool>,
    +    pub event_threshold: Option<u32>,
    +}
    Expand description

    Represents a list of metrics and an associated boolean property indicating if the metric is enabledfrom the remote-settings configuration store. The expected format of this data is stringified JSON in the following format:

    {
         "category.metric_name": true
     }
    -

    Fields§

    §metrics_enabled: HashMap<String, bool>

    This is a HashMap consisting of base_identifiers as keys +

    Fields§

    §metrics_enabled: HashMap<String, bool>

    This is a HashMap consisting of base_identifiers as keys and bool values representing an override for the disabled property of the metric, only inverted to reduce confusion. If a particular metric has a value of true here, it means the default of the metric will be overriden and set to the enabled state.

    -
    §pings_enabled: HashMap<String, bool>

    This is a HashMap consisting of ping names as keys and +

    §pings_enabled: HashMap<String, bool>

    This is a HashMap consisting of ping names as keys and boolean values representing on override for the default enabled state of the ping of the same name.

    -
    §event_threshold: Option<u32>

    The threshold of events that will be buffered before an events ping is +

    §event_threshold: Option<u32>

    The threshold of events that will be buffered before an events ping is collected and submitted. It overrides the value configured at initialization time.

    -

    Implementations§

    Creates a new RemoteSettingsConfig

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Returns the “default value” for a type. Read more
    Deserialize this value from the given Serde deserializer. Read more
    Serialize this value into the given Serde serializer. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    +

    Implementations§

    source§

    impl RemoteSettingsConfig

    source

    pub fn new() -> Self

    Creates a new RemoteSettingsConfig

    +

    Trait Implementations§

    source§

    impl Clone for RemoteSettingsConfig

    source§

    fn clone(&self) -> RemoteSettingsConfig

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for RemoteSettingsConfig

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for RemoteSettingsConfig

    source§

    fn default() -> RemoteSettingsConfig

    Returns the “default value” for a type. Read more
    source§

    impl<'de> Deserialize<'de> for RemoteSettingsConfig

    source§

    fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
    where + __D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    source§

    impl Serialize for RemoteSettingsConfig

    source§

    fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
    where + __S: Serializer,

    Serialize this value into the given Serde serializer. Read more
    source§

    impl TryFrom<String> for RemoteSettingsConfig

    §

    type Error = ErrorKind

    The type returned in the event of a conversion error.
    source§

    fn try_from(json: String) -> Result<Self, Self::Error>

    Performs the conversion.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> EncodableKey for T
    where + T: Serialize,

    §

    fn to_bytes(&self) -> Result<Vec<u8>, DataError>

    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    §

    impl<T, UT> HandleAlloc<UT> for T
    where + T: Send + Sync,

    §

    fn new_handle(value: Arc<T>) -> Handle

    Create a new handle for an Arc value Read more
    §

    fn clone_handle(handle: Handle) -> Handle

    Clone a handle Read more
    §

    fn consume_handle(handle: Handle) -> Arc<T>

    Consume a handle, getting back the initial Arc<>
    §

    fn get_arc(handle: Handle) -> Arc<Self>

    Get a clone of the Arc<> using a “borrowed” handle. Read more
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<V> ObjectSerialize for V
    where + V: Serialize + for<'de> Deserialize<'de>,

    source§

    fn from_str(obj: &str) -> Result<V, ObjectError>

    Deserialize the object from its JSON representation. Read more
    source§

    fn into_serialized_object(self) -> Result<Value, ObjectError>

    Serialize this object into a JSON string.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> DeserializeOwned for T
    where + T: for<'de> Deserialize<'de>,

    \ No newline at end of file diff --git a/docs/glean_core/metrics/struct.StringListMetric.html b/docs/glean_core/metrics/struct.StringListMetric.html index 874b76a0b8..a33d35350b 100644 --- a/docs/glean_core/metrics/struct.StringListMetric.html +++ b/docs/glean_core/metrics/struct.StringListMetric.html @@ -1,14 +1,15 @@ -StringListMetric in glean_core::metrics - Rust
    pub struct StringListMetric { /* private fields */ }
    Expand description

    A string list metric.

    +StringListMetric in glean_core::metrics - Rust +
    pub struct StringListMetric { /* private fields */ }
    Expand description

    A string list metric.

    This allows appending a string value with arbitrary content to a list.

    -

    Implementations§

    Creates a new string list metric.

    -

    Adds a new string to the list.

    +

    Implementations§

    source§

    impl StringListMetric

    source

    pub fn new(meta: CommonMetricData) -> Self

    Creates a new string list metric.

    +
    source

    pub fn add(&self, value: String)

    Adds a new string to the list.

    Arguments
    • value - The string to add.
    Notes

    Truncates the value if it is longer than MAX_STRING_LENGTH bytes and logs an error.

    -

    Sets to a specific list of strings.

    +
    source

    pub fn set(&self, values: Vec<String>)

    Sets to a specific list of strings.

    Arguments
    • value - The list of string to set the metric to.
    • @@ -17,7 +18,7 @@
      Notes

      If passed an empty list, records an error and returns.

      Truncates the list if it is longer than MAX_LIST_LENGTH and logs an error.

      Truncates any value in the list if it is longer than MAX_STRING_LENGTH and logs an error.

      -

    Test-only API (exported for FFI purposes).

    +
    source

    pub fn test_get_value(&self, ping_name: Option<String>) -> Option<Vec<String>>

    Test-only API (exported for FFI purposes).

    Gets the currently-stored values.

    This doesn’t clear the stored value.

    Arguments
    @@ -27,7 +28,7 @@
    Arguments
    Returns

    The stored value or None if nothing stored.

    -

    Exported for test purposes.

    +
    source

    pub fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32

    Exported for test purposes.

    Gets the number of recorded errors for the given metric and error type.

    Arguments
    Returns

    The number of errors reported.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Access the stored metadata
    Create a new metric from this with a new name.
    Create a new metric from this with a specific label.
    Whether this metric should currently be recorded Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Clone for StringListMetric

    source§

    fn clone(&self) -> StringListMetric

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for StringListMetric

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl MetricType for StringListMetric

    source§

    fn meta(&self) -> &CommonMetricDataInternal

    Access the stored metadata
    source§

    fn with_name(&self, _name: String) -> Self
    where + Self: Sized,

    Create a new metric from this with a new name.
    source§

    fn with_dynamic_label(&self, _label: String) -> Self
    where + Self: Sized,

    Create a new metric from this with a specific label.
    source§

    fn should_record(&self, glean: &Glean) -> bool

    Whether this metric should currently be recorded Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    §

    impl<T, UT> HandleAlloc<UT> for T
    where + T: Send + Sync,

    §

    fn new_handle(value: Arc<T>) -> Handle

    Create a new handle for an Arc value Read more
    §

    fn clone_handle(handle: Handle) -> Handle

    Clone a handle Read more
    §

    fn consume_handle(handle: Handle) -> Arc<T>

    Consume a handle, getting back the initial Arc<>
    §

    fn get_arc(handle: Handle) -> Arc<Self>

    Get a clone of the Arc<> using a “borrowed” handle. Read more
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/docs/glean_core/metrics/struct.StringMetric.html b/docs/glean_core/metrics/struct.StringMetric.html index 966989b9d7..17d3bd41ab 100644 --- a/docs/glean_core/metrics/struct.StringMetric.html +++ b/docs/glean_core/metrics/struct.StringMetric.html @@ -1,15 +1,16 @@ -StringMetric in glean_core::metrics - Rust
    pub struct StringMetric { /* private fields */ }
    Expand description

    A string metric.

    +StringMetric in glean_core::metrics - Rust +
    pub struct StringMetric { /* private fields */ }
    Expand description

    A string metric.

    Record an Unicode string value with arbitrary content. Strings are length-limited to MAX_LENGTH_VALUE bytes.

    -

    Implementations§

    Creates a new string metric.

    -

    Sets to the specified value.

    +

    Implementations§

    source§

    impl StringMetric

    source

    pub fn new(meta: CommonMetricData) -> Self

    Creates a new string metric.

    +
    source

    pub fn set(&self, value: String)

    Sets to the specified value.

    Arguments
    • value - The string to set the metric to.
    Notes

    Truncates the value if it is longer than MAX_LENGTH_VALUE bytes and logs an error.

    -

    Test-only API (exported for FFI purposes).

    +
    source

    pub fn test_get_value(&self, ping_name: Option<String>) -> Option<String>

    Test-only API (exported for FFI purposes).

    Gets the currently stored value as a string.

    This doesn’t clear the stored value.

    Arguments
    @@ -19,7 +20,7 @@
    Arguments
    Returns

    The stored value or None if nothing stored.

    -

    Exported for test purposes.

    +
    source

    pub fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32

    Exported for test purposes.

    Gets the number of recorded errors for the given metric and error type.

    Arguments
    Returns

    The number of errors reported.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Access the stored metadata
    Create a new metric from this with a new name.
    Create a new metric from this with a specific label.
    Whether this metric should currently be recorded Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Clone for StringMetric

    source§

    fn clone(&self) -> StringMetric

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for StringMetric

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl MetricType for StringMetric

    source§

    fn meta(&self) -> &CommonMetricDataInternal

    Access the stored metadata
    source§

    fn with_name(&self, name: String) -> Self

    Create a new metric from this with a new name.
    source§

    fn with_dynamic_label(&self, label: String) -> Self

    Create a new metric from this with a specific label.
    source§

    fn should_record(&self, glean: &Glean) -> bool

    Whether this metric should currently be recorded Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> AllowLabeled for T
    where + T: MetricType + Sealed,

    source§

    fn new_labeled(meta: LabeledMetricData) -> T

    Create a new labeled metric.
    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    §

    impl<T, UT> HandleAlloc<UT> for T
    where + T: Send + Sync,

    §

    fn new_handle(value: Arc<T>) -> Handle

    Create a new handle for an Arc value Read more
    §

    fn clone_handle(handle: Handle) -> Handle

    Clone a handle Read more
    §

    fn consume_handle(handle: Handle) -> Arc<T>

    Consume a handle, getting back the initial Arc<>
    §

    fn get_arc(handle: Handle) -> Arc<Self>

    Get a clone of the Arc<> using a “borrowed” handle. Read more
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/docs/glean_core/metrics/struct.TextMetric.html b/docs/glean_core/metrics/struct.TextMetric.html index 19a8ea3aa7..156c980fc7 100644 --- a/docs/glean_core/metrics/struct.TextMetric.html +++ b/docs/glean_core/metrics/struct.TextMetric.html @@ -1,9 +1,10 @@ -TextMetric in glean_core::metrics - Rust
    pub struct TextMetric { /* private fields */ }
    Expand description

    A text metric.

    +TextMetric in glean_core::metrics - Rust +
    pub struct TextMetric { /* private fields */ }
    Expand description

    A text metric.

    Records a single long Unicode text, used when the limits on String are too low. Text is length-limited to MAX_LENGTH_VALUE bytes.

    -

    Implementations§

    Creates a new text metric.

    -

    Sets to the specified value.

    +

    Implementations§

    source§

    impl TextMetric

    source

    pub fn new(meta: CommonMetricData) -> Self

    Creates a new text metric.

    +
    source

    pub fn set(&self, value: String)

    Sets to the specified value.

    Arguments
    • value - The text to set the metric to.
    • @@ -11,7 +12,7 @@
      Arguments
      Notes

      Truncates the value (at codepoint boundaries) if it is longer than MAX_LENGTH_VALUE bytes and logs an error.

      -

    Test-only API (exported for FFI purposes).

    +
    source

    pub fn test_get_value(&self, ping_name: Option<String>) -> Option<String>

    Test-only API (exported for FFI purposes).

    Gets the currently stored value as a string.

    This doesn’t clear the stored value.

    Arguments
    @@ -21,7 +22,7 @@
    Arguments
    Returns

    The stored value or None if nothing stored.

    -

    Exported for test purposes.

    +
    source

    pub fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32

    Exported for test purposes.

    Gets the number of recorded errors for the given metric and error type.

    Arguments
    Returns

    The number of errors reported.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Access the stored metadata
    Create a new metric from this with a new name.
    Create a new metric from this with a specific label.
    Whether this metric should currently be recorded Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Clone for TextMetric

    source§

    fn clone(&self) -> TextMetric

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for TextMetric

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl MetricType for TextMetric

    source§

    fn meta(&self) -> &CommonMetricDataInternal

    Access the stored metadata
    source§

    fn with_name(&self, name: String) -> Self

    Create a new metric from this with a new name.
    source§

    fn with_dynamic_label(&self, label: String) -> Self

    Create a new metric from this with a specific label.
    source§

    fn should_record(&self, glean: &Glean) -> bool

    Whether this metric should currently be recorded Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    §

    impl<T, UT> HandleAlloc<UT> for T
    where + T: Send + Sync,

    §

    fn new_handle(value: Arc<T>) -> Handle

    Create a new handle for an Arc value Read more
    §

    fn clone_handle(handle: Handle) -> Handle

    Clone a handle Read more
    §

    fn consume_handle(handle: Handle) -> Arc<T>

    Consume a handle, getting back the initial Arc<>
    §

    fn get_arc(handle: Handle) -> Arc<Self>

    Get a clone of the Arc<> using a “borrowed” handle. Read more
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/docs/glean_core/metrics/struct.TimerId.html b/docs/glean_core/metrics/struct.TimerId.html index 450e4dd33f..ce35d47470 100644 --- a/docs/glean_core/metrics/struct.TimerId.html +++ b/docs/glean_core/metrics/struct.TimerId.html @@ -1,13 +1,24 @@ -TimerId in glean_core::metrics - Rust

    Struct glean_core::metrics::TimerId

    source ·
    pub struct TimerId {
    -    pub id: u64,
    -}
    Expand description

    Identifier for a running timer.

    +TimerId in glean_core::metrics - Rust +

    Struct glean_core::metrics::TimerId

    source ·
    pub struct TimerId {
    +    pub id: u64,
    +}
    Expand description

    Identifier for a running timer.

    Its internals are considered private, but due to UniFFI’s behavior we expose its field for now.

    -

    Fields§

    §id: u64

    This timer’s id.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Converts to this type from the input type.
    Converts to this type from the input type.
    Feeds this value into the given Hasher. Read more
    Feeds a slice of this type into the given Hasher. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    +

    Fields§

    §id: u64

    This timer’s id.

    +

    Trait Implementations§

    source§

    impl Clone for TimerId

    source§

    fn clone(&self) -> TimerId

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for TimerId

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<u64> for TimerId

    source§

    fn from(val: u64) -> TimerId

    Converts to this type from the input type.
    source§

    impl From<usize> for TimerId

    source§

    fn from(val: usize) -> TimerId

    Converts to this type from the input type.
    source§

    impl Hash for TimerId

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq for TimerId

    source§

    fn eq(&self, other: &TimerId) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl Copy for TimerId

    source§

    impl Eq for TimerId

    source§

    impl StructuralEq for TimerId

    source§

    impl StructuralPartialEq for TimerId

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    §

    impl<T, UT> HandleAlloc<UT> for T
    where + T: Send + Sync,

    §

    fn new_handle(value: Arc<T>) -> Handle

    Create a new handle for an Arc value Read more
    §

    fn clone_handle(handle: Handle) -> Handle

    Clone a handle Read more
    §

    fn consume_handle(handle: Handle) -> Arc<T>

    Consume a handle, getting back the initial Arc<>
    §

    fn get_arc(handle: Handle) -> Arc<Self>

    Get a clone of the Arc<> using a “borrowed” handle. Read more
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/docs/glean_core/metrics/struct.TimespanMetric.html b/docs/glean_core/metrics/struct.TimespanMetric.html index 3b1d473434..0133178073 100644 --- a/docs/glean_core/metrics/struct.TimespanMetric.html +++ b/docs/glean_core/metrics/struct.TimespanMetric.html @@ -1,41 +1,42 @@ -TimespanMetric in glean_core::metrics - Rust
    pub struct TimespanMetric { /* private fields */ }
    Expand description

    A timespan metric.

    +TimespanMetric in glean_core::metrics - Rust +
    pub struct TimespanMetric { /* private fields */ }
    Expand description

    A timespan metric.

    Timespans are used to make a measurement of how much time is spent in a particular task.

    -

    Implementations§

    Creates a new timespan metric.

    -

    Starts tracking time for the provided metric.

    +

    Implementations§

    source§

    impl TimespanMetric

    source

    pub fn new(meta: CommonMetricData, time_unit: TimeUnit) -> Self

    Creates a new timespan metric.

    +
    source

    pub fn start(&self)

    Starts tracking time for the provided metric.

    This records an error if it’s already tracking time (i.e. start was already called with no corresponding -set_stop): in that case the original start +set_stop): in that case the original start time will be preserved.

    -

    Stops tracking time for the provided metric. Sets the metric to the elapsed time.

    -

    This will record an error if no set_start was called.

    -

    Aborts a previous set_start call. No -error is recorded if no set_start was +

    source

    pub fn stop(&self)

    Stops tracking time for the provided metric. Sets the metric to the elapsed time.

    +

    This will record an error if no set_start was called.

    +
    source

    pub fn cancel(&self)

    Aborts a previous set_start call. No +error is recorded if no set_start was called.

    -

    Explicitly sets the timespan value.

    +
    source

    pub fn set_raw(&self, elapsed: Duration)

    Explicitly sets the timespan value.

    This API should only be used if your library or application requires recording times in a way that can not make use of -set_start/set_stop/cancel.

    +set_start/set_stop/cancel.

    Care should be taken using this if the ping lifetime might contain more than one timespan measurement. To be safe, -set_raw should generally be followed by +set_raw should generally be followed by sending a custom ping containing the timespan.

    Arguments
    • elapsed - The elapsed time to record.
    -

    Explicitly sets the timespan value in nanoseconds.

    +
    source

    pub fn set_raw_nanos(&self, elapsed_nanos: i64)

    Explicitly sets the timespan value in nanoseconds.

    This API should only be used if your library or application requires recording times in a way that can not make use of -set_start/set_stop/cancel.

    +set_start/set_stop/cancel.

    Care should be taken using this if the ping lifetime might contain more than one timespan measurement. To be safe, -set_raw should generally be followed by +set_raw should generally be followed by sending a custom ping containing the timespan.

    Arguments
    • elapsed_nanos - The elapsed time to record, in nanoseconds.
    -

    Test-only API (exported for FFI purposes).

    +
    source

    pub fn test_get_value(&self, ping_name: Option<String>) -> Option<i64>

    Test-only API (exported for FFI purposes).

    Gets the currently stored value as an integer.

    This doesn’t clear the stored value.

    Arguments
    @@ -45,7 +46,7 @@
    Arguments
    Returns

    The stored value or None if nothing stored.

    -

    Exported for test purposes.

    +
    source

    pub fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32

    Exported for test purposes.

    Gets the number of recorded errors for the given metric and error type.

    Arguments
    Returns

    The number of errors reported.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Access the stored metadata
    Create a new metric from this with a new name.
    Create a new metric from this with a specific label.
    Whether this metric should currently be recorded Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Clone for TimespanMetric

    source§

    fn clone(&self) -> TimespanMetric

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for TimespanMetric

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl MetricType for TimespanMetric

    source§

    fn meta(&self) -> &CommonMetricDataInternal

    Access the stored metadata
    source§

    fn with_name(&self, _name: String) -> Self
    where + Self: Sized,

    Create a new metric from this with a new name.
    source§

    fn with_dynamic_label(&self, _label: String) -> Self
    where + Self: Sized,

    Create a new metric from this with a specific label.
    source§

    fn should_record(&self, glean: &Glean) -> bool

    Whether this metric should currently be recorded Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    §

    impl<T, UT> HandleAlloc<UT> for T
    where + T: Send + Sync,

    §

    fn new_handle(value: Arc<T>) -> Handle

    Create a new handle for an Arc value Read more
    §

    fn clone_handle(handle: Handle) -> Handle

    Clone a handle Read more
    §

    fn consume_handle(handle: Handle) -> Arc<T>

    Consume a handle, getting back the initial Arc<>
    §

    fn get_arc(handle: Handle) -> Arc<Self>

    Get a clone of the Arc<> using a “borrowed” handle. Read more
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/docs/glean_core/metrics/struct.TimingDistributionMetric.html b/docs/glean_core/metrics/struct.TimingDistributionMetric.html index a975a90222..749235975c 100644 --- a/docs/glean_core/metrics/struct.TimingDistributionMetric.html +++ b/docs/glean_core/metrics/struct.TimingDistributionMetric.html @@ -1,54 +1,55 @@ -TimingDistributionMetric in glean_core::metrics - Rust
    pub struct TimingDistributionMetric { /* private fields */ }
    Expand description

    A timing distribution metric.

    +TimingDistributionMetric in glean_core::metrics - Rust +
    pub struct TimingDistributionMetric { /* private fields */ }
    Expand description

    A timing distribution metric.

    Timing distributions are used to accumulate and store time measurement, for analyzing distributions of the timing data.

    -

    Implementations§

    Creates a new timing distribution metric.

    -

    Starts tracking time for the provided metric.

    +

    Implementations§

    source§

    impl TimingDistributionMetric

    source

    pub fn new(meta: CommonMetricData, time_unit: TimeUnit) -> Self

    Creates a new timing distribution metric.

    +
    source

    pub fn start(&self) -> TimerId

    Starts tracking time for the provided metric.

    This records an error if it’s already tracking time (i.e. -set_start was already called with no -corresponding set_stop_and_accumulate): in +set_start was already called with no +corresponding set_stop_and_accumulate): in that case the original start time will be preserved.

    Arguments
    • start_time - Timestamp in nanoseconds.
    Returns
    -

    A unique TimerId for the new timer.

    -

    Stops tracking time for the provided metric and associated timer id.

    +

    A unique TimerId for the new timer.

    +
    source

    pub fn stop_and_accumulate(&self, id: TimerId)

    Stops tracking time for the provided metric and associated timer id.

    Adds a count to the corresponding bucket in the timing distribution. This will record an error if no -set_start was called.

    +set_start was called.

    Arguments
      -
    • id - The TimerId to associate with this timing. This allows +
    • id - The TimerId to associate with this timing. This allows for concurrent timing of events associated with different ids to the same timespan metric.
    • stop_time - Timestamp in nanoseconds.
    -

    Aborts a previous start call.

    -

    No error is recorded if no start was called.

    +
    source

    pub fn cancel(&self, id: TimerId)

    Aborts a previous start call.

    +

    No error is recorded if no start was called.

    Arguments
      -
    • id - The TimerId to associate with this timing. This allows +
    • id - The TimerId to associate with this timing. This allows for concurrent timing of events associated with different ids to the same timing distribution metric.
    -

    Accumulates the provided signed samples in the metric.

    +
    source

    pub fn accumulate_samples(&self, samples: Vec<i64>)

    Accumulates the provided signed samples in the metric.

    This is required so that the platform-specific code can provide us with 64 bit signed integers if no u64 comparable type is available. This will take care of filtering and reporting errors for any provided negative sample.

    Please note that this assumes that the provided samples are already in the “unit” declared by the instance of the metric type (e.g. if the -instance this method was called on is using TimeUnit::Second, then +instance this method was called on is using TimeUnit::Second, then samples are assumed to be in that unit).

    Arguments
    • samples - The vector holding the samples to be recorded by the metric.
    Notes
    -

    Discards any negative value in samples and report an ErrorType::InvalidValue -for each of them. Reports an ErrorType::InvalidOverflow error for samples that +

    Discards any negative value in samples and report an ErrorType::InvalidValue +for each of them. Reports an ErrorType::InvalidOverflow error for samples that are longer than MAX_SAMPLE_TIME.

    -

    Accumulates precisely one signed sample and appends it to the metric.

    +
    source

    pub fn accumulate_single_sample(&self, sample: i64)

    Accumulates precisely one signed sample and appends it to the metric.

    Precludes the need for a collection in the most common use case.

    Sign is required so that the platform-specific code can provide us with a 64 bit signed integer if no u64 comparable type is available. This @@ -56,26 +57,26 @@

    Notes
    sample.

    Please note that this assumes that the provided sample is already in the “unit” declared by the instance of the metric type (e.g. if the -instance this method was called on is using crate::TimeUnit::Second, then +instance this method was called on is using crate::TimeUnit::Second, then sample is assumed to be in that unit).

    Arguments
    • sample - The singular sample to be recorded by the metric.
    Notes
    -

    Discards any negative value and reports an ErrorType::InvalidValue. -Reports an ErrorType::InvalidOverflow error if the sample is longer than +

    Discards any negative value and reports an ErrorType::InvalidValue. +Reports an ErrorType::InvalidOverflow error if the sample is longer than MAX_SAMPLE_TIME.

    -

    Accumulates the provided samples in the metric.

    +
    source

    pub fn accumulate_raw_samples_nanos(&self, samples: Vec<u64>)

    Accumulates the provided samples in the metric.

    Arguments
    • samples - A list of samples recorded by the metric. Samples must be in nanoseconds.
    Notes
    -

    Reports an ErrorType::InvalidOverflow error for samples that +

    Reports an ErrorType::InvalidOverflow error for samples that are longer than MAX_SAMPLE_TIME.

    -

    Accumulates precisely one duration to the metric.

    +
    source

    pub fn accumulate_raw_duration(&self, duration: Duration)

    Accumulates precisely one duration to the metric.

    Like TimingDistribution::accumulate_single_sample, but for use when the duration is:

      @@ -87,13 +88,16 @@
      Arguments
    • duration - The single duration to be recorded in the metric.
    Notes
    -

    Reports an ErrorType::InvalidOverflow error if duration is longer than +

    Reports an ErrorType::InvalidOverflow error if duration is longer than MAX_SAMPLE_TIME.

    The API client is responsible for ensuring that duration is derived from a monotonic clock source that behaves consistently over computer sleep across the application’s platforms. Otherwise the resulting data may not share the same guarantees that other timing_distribution metrics’ data do.

    -

    Test-only API (exported for FFI purposes).

    +
    source

    pub fn test_get_value( + &self, + ping_name: Option<String> +) -> Option<DistributionData>

    Test-only API (exported for FFI purposes).

    Gets the currently stored value as an integer.

    This doesn’t clear the stored value.

    Arguments
    @@ -103,7 +107,7 @@
    Arguments
    Returns

    The stored value or None if nothing stored.

    -

    Exported for test purposes.

    +
    source

    pub fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32

    Exported for test purposes.

    Gets the number of recorded errors for the given metric and error type.

    Arguments
    Returns

    The number of errors reported.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Access the stored metadata
    Create a new metric from this with a new name.
    Create a new metric from this with a specific label.
    Whether this metric should currently be recorded Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Clone for TimingDistributionMetric

    source§

    fn clone(&self) -> TimingDistributionMetric

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for TimingDistributionMetric

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl MetricType for TimingDistributionMetric

    source§

    fn meta(&self) -> &CommonMetricDataInternal

    Access the stored metadata
    source§

    fn with_name(&self, name: String) -> Self

    Create a new metric from this with a new name.
    source§

    fn with_dynamic_label(&self, label: String) -> Self

    Create a new metric from this with a specific label.
    source§

    fn should_record(&self, glean: &Glean) -> bool

    Whether this metric should currently be recorded Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> AllowLabeled for T
    where + T: MetricType + Sealed,

    source§

    fn new_labeled(meta: LabeledMetricData) -> T

    Create a new labeled metric.
    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    §

    impl<T, UT> HandleAlloc<UT> for T
    where + T: Send + Sync,

    §

    fn new_handle(value: Arc<T>) -> Handle

    Create a new handle for an Arc value Read more
    §

    fn clone_handle(handle: Handle) -> Handle

    Clone a handle Read more
    §

    fn consume_handle(handle: Handle) -> Arc<T>

    Consume a handle, getting back the initial Arc<>
    §

    fn get_arc(handle: Handle) -> Arc<Self>

    Get a clone of the Arc<> using a “borrowed” handle. Read more
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/docs/glean_core/metrics/struct.UrlMetric.html b/docs/glean_core/metrics/struct.UrlMetric.html index cb6356a3bf..8fa137a732 100644 --- a/docs/glean_core/metrics/struct.UrlMetric.html +++ b/docs/glean_core/metrics/struct.UrlMetric.html @@ -1,15 +1,16 @@ -UrlMetric in glean_core::metrics - Rust
    pub struct UrlMetric { /* private fields */ }
    Expand description

    A URL metric.

    +UrlMetric in glean_core::metrics - Rust +
    pub struct UrlMetric { /* private fields */ }
    Expand description

    A URL metric.

    Record an Unicode string value a URL content. The URL is length-limited to MAX_URL_LENGTH bytes.

    -

    Implementations§

    Creates a new string metric.

    -

    Sets to the specified stringified URL.

    +

    Implementations§

    source§

    impl UrlMetric

    source

    pub fn new(meta: CommonMetricData) -> Self

    Creates a new string metric.

    +
    source

    pub fn set<S: Into<String>>(&self, value: S)

    Sets to the specified stringified URL.

    Arguments
    • value - The stringified URL to set the metric to.
    Notes

    Truncates the value if it is longer than MAX_URL_LENGTH bytes and logs an error.

    -

    Test-only API (exported for FFI purposes).

    +
    source

    pub fn test_get_value(&self, ping_name: Option<String>) -> Option<String>

    Test-only API (exported for FFI purposes).

    Gets the currently stored value as a string.

    This doesn’t clear the stored value.

    Arguments
    @@ -19,7 +20,7 @@
    Arguments
    Returns

    The stored value or None if nothing stored.

    -

    Exported for test purposes.

    +
    source

    pub fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32

    Exported for test purposes.

    Gets the number of recorded errors for the given metric and error type.

    Arguments
    Returns

    The number of errors reported.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Access the stored metadata
    Create a new metric from this with a new name.
    Create a new metric from this with a specific label.
    Whether this metric should currently be recorded Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Clone for UrlMetric

    source§

    fn clone(&self) -> UrlMetric

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for UrlMetric

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl MetricType for UrlMetric

    source§

    fn meta(&self) -> &CommonMetricDataInternal

    Access the stored metadata
    source§

    fn with_name(&self, _name: String) -> Self
    where + Self: Sized,

    Create a new metric from this with a new name.
    source§

    fn with_dynamic_label(&self, _label: String) -> Self
    where + Self: Sized,

    Create a new metric from this with a specific label.
    source§

    fn should_record(&self, glean: &Glean) -> bool

    Whether this metric should currently be recorded Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    §

    impl<T, UT> HandleAlloc<UT> for T
    where + T: Send + Sync,

    §

    fn new_handle(value: Arc<T>) -> Handle

    Create a new handle for an Arc value Read more
    §

    fn clone_handle(handle: Handle) -> Handle

    Clone a handle Read more
    §

    fn consume_handle(handle: Handle) -> Arc<T>

    Consume a handle, getting back the initial Arc<>
    §

    fn get_arc(handle: Handle) -> Arc<Self>

    Get a clone of the Arc<> using a “borrowed” handle. Read more
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/docs/glean_core/metrics/struct.UuidMetric.html b/docs/glean_core/metrics/struct.UuidMetric.html index ee937e7ca5..023ad789ab 100644 --- a/docs/glean_core/metrics/struct.UuidMetric.html +++ b/docs/glean_core/metrics/struct.UuidMetric.html @@ -1,13 +1,14 @@ -UuidMetric in glean_core::metrics - Rust
    pub struct UuidMetric { /* private fields */ }
    Expand description

    An UUID metric.

    +UuidMetric in glean_core::metrics - Rust +
    pub struct UuidMetric { /* private fields */ }
    Expand description

    An UUID metric.

    Stores UUID v4 (randomly generated) values.

    -

    Implementations§

    Creates a new UUID metric

    -

    Sets to the specified value.

    +

    Implementations§

    source§

    impl UuidMetric

    source

    pub fn new(meta: CommonMetricData) -> Self

    Creates a new UUID metric

    +
    source

    pub fn set(&self, value: String)

    Sets to the specified value.

    Arguments
      -
    • value - The Uuid to set the metric to.
    • +
    • value - The Uuid to set the metric to.
    -

    Generates a new random [Uuid’] and sets the metric to it.

    -

    Test-only API (exported for FFI purposes).

    +
    source

    pub fn generate_and_set(&self) -> String

    Generates a new random [Uuid’] and sets the metric to it.

    +
    source

    pub fn test_get_value(&self, ping_name: Option<String>) -> Option<String>

    Test-only API (exported for FFI purposes).

    Gets the currently stored value as a string.

    This doesn’t clear the stored value.

    Arguments
    @@ -17,7 +18,7 @@
    Arguments
    Returns

    The stored value or None if nothing stored.

    -

    Exported for test purposes.

    +
    source

    pub fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32

    Exported for test purposes.

    Gets the number of recorded errors for the given metric and error type.

    Arguments
    Returns

    The number of errors reported.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Access the stored metadata
    Create a new metric from this with a new name.
    Create a new metric from this with a specific label.
    Whether this metric should currently be recorded Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Clone for UuidMetric

    source§

    fn clone(&self) -> UuidMetric

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for UuidMetric

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl MetricType for UuidMetric

    source§

    fn meta(&self) -> &CommonMetricDataInternal

    Access the stored metadata
    source§

    fn with_name(&self, _name: String) -> Self
    where + Self: Sized,

    Create a new metric from this with a new name.
    source§

    fn with_dynamic_label(&self, _label: String) -> Self
    where + Self: Sized,

    Create a new metric from this with a specific label.
    source§

    fn should_record(&self, glean: &Glean) -> bool

    Whether this metric should currently be recorded Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    §

    impl<T, UT> HandleAlloc<UT> for T
    where + T: Send + Sync,

    §

    fn new_handle(value: Arc<T>) -> Handle

    Create a new handle for an Arc value Read more
    §

    fn clone_handle(handle: Handle) -> Handle

    Clone a handle Read more
    §

    fn consume_handle(handle: Handle) -> Arc<T>

    Consume a handle, getting back the initial Arc<>
    §

    fn get_arc(handle: Handle) -> Arc<Self>

    Get a clone of the Arc<> using a “borrowed” handle. Read more
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/docs/glean_core/metrics/trait.MetricType.html b/docs/glean_core/metrics/trait.MetricType.html index ef979475ac..30ab179a46 100644 --- a/docs/glean_core/metrics/trait.MetricType.html +++ b/docs/glean_core/metrics/trait.MetricType.html @@ -1,16 +1,21 @@ -MetricType in glean_core::metrics - Rust
    pub trait MetricType {
    +MetricType in glean_core::metrics - Rust
    +    
    pub trait MetricType {
    +    // Required method
         fn meta(&self) -> &CommonMetricDataInternal;
     
    -    fn with_name(&self, _name: String) -> Self
        where
            Self: Sized
    , - { ... } - fn with_dynamic_label(&self, _label: String) -> Self
        where
            Self: Sized
    , - { ... } - fn should_record(&self, glean: &Glean) -> bool { ... } -}
    Expand description

    A MetricType describes common behavior across all metrics.

    -

    Required Methods§

    Access the stored metadata

    -

    Provided Methods§

    Create a new metric from this with a new name.

    -

    Create a new metric from this with a specific label.

    -

    Whether this metric should currently be recorded

    + // Provided methods + fn with_name(&self, _name: String) -> Self + where Self: Sized { ... } + fn with_dynamic_label(&self, _label: String) -> Self + where Self: Sized { ... } + fn should_record(&self, glean: &Glean) -> bool { ... } +}
    Expand description

    A MetricType describes common behavior across all metrics.

    +

    Required Methods§

    source

    fn meta(&self) -> &CommonMetricDataInternal

    Access the stored metadata

    +

    Provided Methods§

    source

    fn with_name(&self, _name: String) -> Self
    where + Self: Sized,

    Create a new metric from this with a new name.

    +
    source

    fn with_dynamic_label(&self, _label: String) -> Self
    where + Self: Sized,

    Create a new metric from this with a specific label.

    +
    source

    fn should_record(&self, glean: &Glean) -> bool

    Whether this metric should currently be recorded

    This depends on the metrics own state, as determined by its metadata, and whether upload is enabled on the Glean object.

    -

    Implementors§

    \ No newline at end of file +

    Implementors§

    source§

    impl MetricType for BooleanMetric

    source§

    impl MetricType for CounterMetric

    source§

    impl MetricType for CustomDistributionMetric

    source§

    impl MetricType for DatetimeMetric

    source§

    impl MetricType for DenominatorMetric

    source§

    impl MetricType for EventMetric

    source§

    impl MetricType for MemoryDistributionMetric

    source§

    impl MetricType for NumeratorMetric

    source§

    impl MetricType for ObjectMetric

    source§

    impl MetricType for QuantityMetric

    source§

    impl MetricType for RateMetric

    source§

    impl MetricType for StringListMetric

    source§

    impl MetricType for StringMetric

    source§

    impl MetricType for TextMetric

    source§

    impl MetricType for TimespanMetric

    source§

    impl MetricType for TimingDistributionMetric

    source§

    impl MetricType for UrlMetric

    source§

    impl MetricType for UuidMetric

    \ No newline at end of file diff --git a/docs/glean_core/metrics/type.LabeledBoolean.html b/docs/glean_core/metrics/type.LabeledBoolean.html index 52270fefaa..df244ba19d 100644 --- a/docs/glean_core/metrics/type.LabeledBoolean.html +++ b/docs/glean_core/metrics/type.LabeledBoolean.html @@ -1,2 +1,3 @@ -LabeledBoolean in glean_core::metrics - Rust

    Type Definition glean_core::metrics::LabeledBoolean

    source ·
    pub type LabeledBoolean = LabeledMetric<BooleanMetric>;
    Expand description

    A labeled boolean.

    -
    \ No newline at end of file +LabeledBoolean in glean_core::metrics - Rust +
    pub type LabeledBoolean = LabeledMetric<BooleanMetric>;
    Expand description

    A labeled boolean.

    +

    Aliased Type§

    struct LabeledBoolean { /* private fields */ }
    \ No newline at end of file diff --git a/docs/glean_core/metrics/type.LabeledCounter.html b/docs/glean_core/metrics/type.LabeledCounter.html index bdba1518c1..f902ff99af 100644 --- a/docs/glean_core/metrics/type.LabeledCounter.html +++ b/docs/glean_core/metrics/type.LabeledCounter.html @@ -1,2 +1,3 @@ -LabeledCounter in glean_core::metrics - Rust

    Type Definition glean_core::metrics::LabeledCounter

    source ·
    pub type LabeledCounter = LabeledMetric<CounterMetric>;
    Expand description

    A labeled counter.

    -
    \ No newline at end of file +LabeledCounter in glean_core::metrics - Rust +
    pub type LabeledCounter = LabeledMetric<CounterMetric>;
    Expand description

    A labeled counter.

    +

    Aliased Type§

    struct LabeledCounter { /* private fields */ }
    \ No newline at end of file diff --git a/docs/glean_core/metrics/type.LabeledCustomDistribution.html b/docs/glean_core/metrics/type.LabeledCustomDistribution.html index ffd88b36f5..221ef8a669 100644 --- a/docs/glean_core/metrics/type.LabeledCustomDistribution.html +++ b/docs/glean_core/metrics/type.LabeledCustomDistribution.html @@ -1,2 +1,3 @@ -LabeledCustomDistribution in glean_core::metrics - Rust
    pub type LabeledCustomDistribution = LabeledMetric<CustomDistributionMetric>;
    Expand description

    A labeled custom_distribution.

    -
    \ No newline at end of file +LabeledCustomDistribution in glean_core::metrics - Rust +
    pub type LabeledCustomDistribution = LabeledMetric<CustomDistributionMetric>;
    Expand description

    A labeled custom_distribution.

    +

    Aliased Type§

    struct LabeledCustomDistribution { /* private fields */ }
    \ No newline at end of file diff --git a/docs/glean_core/metrics/type.LabeledMemoryDistribution.html b/docs/glean_core/metrics/type.LabeledMemoryDistribution.html index 4bf49d4ebe..56e1558770 100644 --- a/docs/glean_core/metrics/type.LabeledMemoryDistribution.html +++ b/docs/glean_core/metrics/type.LabeledMemoryDistribution.html @@ -1,2 +1,3 @@ -LabeledMemoryDistribution in glean_core::metrics - Rust
    pub type LabeledMemoryDistribution = LabeledMetric<MemoryDistributionMetric>;
    Expand description

    A labeled memory_distribution.

    -
    \ No newline at end of file +LabeledMemoryDistribution in glean_core::metrics - Rust +
    pub type LabeledMemoryDistribution = LabeledMetric<MemoryDistributionMetric>;
    Expand description

    A labeled memory_distribution.

    +

    Aliased Type§

    struct LabeledMemoryDistribution { /* private fields */ }
    \ No newline at end of file diff --git a/docs/glean_core/metrics/type.LabeledString.html b/docs/glean_core/metrics/type.LabeledString.html index 135cab3cd6..664fe64b84 100644 --- a/docs/glean_core/metrics/type.LabeledString.html +++ b/docs/glean_core/metrics/type.LabeledString.html @@ -1,2 +1,3 @@ -LabeledString in glean_core::metrics - Rust

    Type Definition glean_core::metrics::LabeledString

    source ·
    pub type LabeledString = LabeledMetric<StringMetric>;
    Expand description

    A labeled string.

    -
    \ No newline at end of file +LabeledString in glean_core::metrics - Rust +

    Type Alias glean_core::metrics::LabeledString

    source ·
    pub type LabeledString = LabeledMetric<StringMetric>;
    Expand description

    A labeled string.

    +

    Aliased Type§

    struct LabeledString { /* private fields */ }
    \ No newline at end of file diff --git a/docs/glean_core/metrics/type.LabeledTimingDistribution.html b/docs/glean_core/metrics/type.LabeledTimingDistribution.html index e95e2cd743..f4c5eea6c4 100644 --- a/docs/glean_core/metrics/type.LabeledTimingDistribution.html +++ b/docs/glean_core/metrics/type.LabeledTimingDistribution.html @@ -1,2 +1,3 @@ -LabeledTimingDistribution in glean_core::metrics - Rust
    pub type LabeledTimingDistribution = LabeledMetric<TimingDistributionMetric>;
    Expand description

    A labeled timing_distribution.

    -
    \ No newline at end of file +LabeledTimingDistribution in glean_core::metrics - Rust +
    pub type LabeledTimingDistribution = LabeledMetric<TimingDistributionMetric>;
    Expand description

    A labeled timing_distribution.

    +

    Aliased Type§

    struct LabeledTimingDistribution { /* private fields */ }
    \ No newline at end of file diff --git a/docs/glean_core/ping/index.html b/docs/glean_core/ping/index.html index 0c4fe242a1..332f97b64b 100644 --- a/docs/glean_core/ping/index.html +++ b/docs/glean_core/ping/index.html @@ -1,2 +1,3 @@ -glean_core::ping - Rust

    Module glean_core::ping

    source ·
    Expand description

    Ping collection, assembly & submission.

    -

    Structs

    Holds everything you need to store or send a ping.
    Collect a ping’s data, assemble it into its full payload and store it on disk.
    \ No newline at end of file +glean_core::ping - Rust +

    Module glean_core::ping

    source ·
    Expand description

    Ping collection, assembly & submission.

    +

    Structs

    • Holds everything you need to store or send a ping.
    • Collect a ping’s data, assemble it into its full payload and store it on disk.
    \ No newline at end of file diff --git a/docs/glean_core/ping/sidebar-items.js b/docs/glean_core/ping/sidebar-items.js index 292bf9d713..52767abc82 100644 --- a/docs/glean_core/ping/sidebar-items.js +++ b/docs/glean_core/ping/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"struct":[["Ping","Holds everything you need to store or send a ping."],["PingMaker","Collect a ping’s data, assemble it into its full payload and store it on disk."]]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"struct":["Ping","PingMaker"]}; \ No newline at end of file diff --git a/docs/glean_core/ping/struct.Ping.html b/docs/glean_core/ping/struct.Ping.html index 717de1f68c..e812aa72c6 100644 --- a/docs/glean_core/ping/struct.Ping.html +++ b/docs/glean_core/ping/struct.Ping.html @@ -1,21 +1,29 @@ -Ping in glean_core::ping - Rust

    Struct glean_core::ping::Ping

    source ·
    pub struct Ping<'a> {
    -    pub doc_id: &'a str,
    -    pub name: &'a str,
    -    pub url_path: &'a str,
    -    pub content: JsonValue,
    +Ping in glean_core::ping - Rust
    +    

    Struct glean_core::ping::Ping

    source ·
    pub struct Ping<'a> {
    +    pub doc_id: &'a str,
    +    pub name: &'a str,
    +    pub url_path: &'a str,
    +    pub content: Value,
         pub headers: HeaderMap,
    -    pub includes_info_sections: bool,
    -    pub schedules_pings: Vec<String>,
    -}
    Expand description

    Holds everything you need to store or send a ping.

    -

    Fields§

    §doc_id: &'a str

    The unique document id.

    -
    §name: &'a str

    The ping’s name.

    -
    §url_path: &'a str

    The path on the server to use when uplaoding this ping.

    -
    §content: JsonValue

    The payload, including *_info fields.

    -
    §headers: HeaderMap

    The headers to upload with the payload.

    -
    §includes_info_sections: bool

    Whether the content contains {client|ping}_info sections.

    -
    §schedules_pings: Vec<String>

    Other pings that should be scheduled when this ping is sent.

    -

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    + pub includes_info_sections: bool, + pub schedules_pings: Vec<String>, +}
    Expand description

    Holds everything you need to store or send a ping.

    +

    Fields§

    §doc_id: &'a str

    The unique document id.

    +
    §name: &'a str

    The ping’s name.

    +
    §url_path: &'a str

    The path on the server to use when uplaoding this ping.

    +
    §content: Value

    The payload, including *_info fields.

    +
    §headers: HeaderMap

    The headers to upload with the payload.

    +
    §includes_info_sections: bool

    Whether the content contains {client|ping}_info sections.

    +
    §schedules_pings: Vec<String>

    Other pings that should be scheduled when this ping is sent.

    +

    Auto Trait Implementations§

    §

    impl<'a> RefUnwindSafe for Ping<'a>

    §

    impl<'a> Send for Ping<'a>

    §

    impl<'a> Sync for Ping<'a>

    §

    impl<'a> Unpin for Ping<'a>

    §

    impl<'a> UnwindSafe for Ping<'a>

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    §

    impl<T, UT> HandleAlloc<UT> for T
    where + T: Send + Sync,

    §

    fn new_handle(value: Arc<T>) -> Handle

    Create a new handle for an Arc value Read more
    §

    fn clone_handle(handle: Handle) -> Handle

    Clone a handle Read more
    §

    fn consume_handle(handle: Handle) -> Arc<T>

    Consume a handle, getting back the initial Arc<>
    §

    fn get_arc(handle: Handle) -> Arc<Self>

    Get a clone of the Arc<> using a “borrowed” handle. Read more
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/docs/glean_core/ping/struct.PingMaker.html b/docs/glean_core/ping/struct.PingMaker.html index 0577927d52..716e732fe6 100644 --- a/docs/glean_core/ping/struct.PingMaker.html +++ b/docs/glean_core/ping/struct.PingMaker.html @@ -1,9 +1,17 @@ -PingMaker in glean_core::ping - Rust

    Struct glean_core::ping::PingMaker

    source ·
    pub struct PingMaker;
    Expand description

    Collect a ping’s data, assemble it into its full payload and store it on disk.

    -

    Implementations§

    Creates a new PingMaker.

    -

    Collects a snapshot for the given ping from storage and attach required meta information.

    +PingMaker in glean_core::ping - Rust +

    Struct glean_core::ping::PingMaker

    source ·
    pub struct PingMaker;
    Expand description

    Collect a ping’s data, assemble it into its full payload and store it on disk.

    +

    Implementations§

    source§

    impl PingMaker

    source

    pub fn new() -> Self

    Creates a new PingMaker.

    +
    source

    pub fn collect<'a>( + &self, + glean: &Glean, + ping: &'a PingType, + reason: Option<&str>, + doc_id: &'a str, + url_path: &'a str +) -> Option<Ping<'a>>

    Collects a snapshot for the given ping from storage and attach required meta information.

    Arguments
      -
    • glean - the Glean instance to collect data from.
    • +
    • glean - the Glean instance to collect data from.
    • ping - the ping to collect for.
    • reason - an optional reason code to include in the ping.
    • doc_id - the ping’s unique document identifier.
    • @@ -12,10 +20,17 @@
      Arguments
      Returns

      A fully assembled representation of the ping payload and associated metadata. If there is no data stored for the ping, None is returned.

      -

    Stores a ping to disk in the pings directory.

    -

    Clears any pending pings in the queue.

    -

    Trait Implementations§

    Returns the “default value” for a type. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    +
    source

    pub fn store_ping(&self, data_path: &Path, ping: &Ping<'_>) -> Result<()>

    Stores a ping to disk in the pings directory.

    +
    source

    pub fn clear_pending_pings(&self, data_path: &Path) -> Result<()>

    Clears any pending pings in the queue.

    +

    Trait Implementations§

    source§

    impl Default for PingMaker

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    §

    impl<T, UT> HandleAlloc<UT> for T
    where + T: Send + Sync,

    §

    fn new_handle(value: Arc<T>) -> Handle

    Create a new handle for an Arc value Read more
    §

    fn clone_handle(handle: Handle) -> Handle

    Clone a handle Read more
    §

    fn consume_handle(handle: Handle) -> Arc<T>

    Consume a handle, getting back the initial Arc<>
    §

    fn get_arc(handle: Handle) -> Arc<Self>

    Get a clone of the Arc<> using a “borrowed” handle. Read more
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/docs/glean_core/sidebar-items.js b/docs/glean_core/sidebar-items.js index 4f7d7d753a..7b3aae3de3 100644 --- a/docs/glean_core/sidebar-items.js +++ b/docs/glean_core/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"enum":[["CallbackError","An error returned from callbacks."],["ErrorKind","A list enumerating the categories of errors in this crate."],["ErrorType","The possible error types for metric recording. Note: the cases in this enum must be kept in sync with the ones in the platform-specific code (e.g. `ErrorType.kt`) and with the metrics in the registry files."],["HistogramType","Different kinds of histograms."],["LabeledMetricData","The metric data needed to construct inner submetrics."],["Lifetime","The supported metrics’ lifetimes."],["MemoryUnit","Different resolutions supported by the memory related metric types (e.g. MemoryDistributionMetric)."],["TimeUnit","Different resolutions supported by the time related metric types (e.g. DatetimeMetric)."],["UploadResult","The result of an attempted ping upload."],["UploadTaskAction","Communication back whether the uploader loop should continue."]],"fn":[["get_timestamp_ms","Returns a timestamp corresponding to “now” with millisecond precision."],["glean_apply_server_knobs_config","Sets a remote configuration to override metrics’ default enabled/disabled state"],["glean_enable_logging","Initialize the logging system based on the target platform. This ensures that logging is shown when executing the Glean SDK unit tests."],["glean_enable_logging_to_fd","Initialize the logging system to send JSON messages to a file descriptor (Unix) or file handle (Windows)."],["glean_get_upload_task","Get the next upload task"],["glean_handle_client_active","Performs the collection/cleanup operations required by becoming active."],["glean_handle_client_inactive","Performs the collection/cleanup operations required by becoming inactive."],["glean_initialize","Initializes Glean."],["glean_initialize_for_subprocess","Creates and initializes a new Glean object for use in a subprocess."],["glean_persist_ping_lifetime_data","Asks the database to persist ping-lifetime data to disk. Probably expensive to call. Only has effect when Glean is configured with `delay_ping_lifetime_io: true`. If Glean hasn’t been initialized this will dispatch and return Ok(()), otherwise it will block until the persist is done and return its Result."],["glean_process_ping_upload_response","Processes the response from an attempt to upload a ping."],["glean_register_event_listener","EXPERIMENTAL: Register a listener object to recieve notifications of event recordings."],["glean_set_debug_view_tag","Sets a debug view tag."],["glean_set_dirty_flag","TEST-ONLY Method"],["glean_set_experiment_active","Indicate that an experiment is running. Glean will then add an experiment annotation to the environment which is sent with pings. This infomration is not persisted between runs."],["glean_set_experiment_inactive","Indicate that an experiment is no longer running."],["glean_set_experimentation_id","Set an experimentation identifier dynamically."],["glean_set_log_pings","Sets the log pings debug option."],["glean_set_source_tags","Sets source tags."],["glean_set_test_mode","TEST-ONLY Method"],["glean_set_upload_enabled","Sets whether upload is enabled or not."],["glean_shutdown","Shuts down Glean in an orderly fashion."],["glean_submit_ping_by_name","Collect and submit a ping for eventual upload by name."],["glean_submit_ping_by_name_sync","Collect and submit a ping (by its name) for eventual upload, synchronously."],["glean_test_destroy_glean","TEST-ONLY Method"],["glean_test_get_experiment_data","TEST ONLY FUNCTION. Returns the [`RecordedExperiment`] for the given `experiment_id` or `None` if the id isn’t found."],["glean_test_get_experimentation_id","TEST ONLY FUNCTION. Gets stored experimentation id annotation."],["glean_unregister_event_listener","Unregister an event listener from recieving notifications."],["join_init","TEST ONLY FUNCTION Waits on all the glean.init threads’ join handles."],["shutdown","Shuts down Glean in an orderly fashion."],["test_get_num_recorded_errors","Gets the number of recorded errors for the given metric and error type."]],"mod":[["metrics","The different metric types supported by the Glean SDK to handle data."],["ping","Ping collection, assembly & submission."],["storage","Storage snapshotting."],["traits","API definitions for the different metric types supported by the Glean SDK."],["upload","Manages the pending pings queue and directory."]],"struct":[["BooleanMetric","A boolean metric."],["ClientInfoMetrics","Metrics included in every ping as `client_info`."],["CommonMetricData","The common set of data shared across all different metric types."],["CounterMetric","A counter metric."],["CustomDistributionMetric","A custom distribution metric."],["Datetime","Representation of a date, time and timezone."],["DatetimeMetric","A datetime metric."],["DenominatorMetric","A Denominator metric (a kind of count shared among Rate metrics)."],["Error","A specialized `Error` type for this crate’s operations."],["EventMetric","An event metric."],["Glean","The object holding meta information about a Glean instance."],["InternalConfiguration","Configuration for Glean"],["LabeledMetric","A labeled metric."],["MemoryDistributionMetric","A memory distribution metric."],["NumeratorMetric","Developer-facing API for recording rate metrics with external denominators."],["ObjectMetric","An object metric."],["PingRateLimit","How to specify the rate at which pings may be uploaded before they are throttled."],["PingRequest","Represents a request to upload a ping."],["PingType","Stores information about a ping."],["QuantityMetric","A quantity metric."],["Rate","A rate value as given by its numerator and denominator."],["RateMetric","A rate metric."],["RecordedEvent","Represents the recorded data for a single event."],["RecordedExperiment","Deserialized experiment data."],["StringListMetric","A string list metric."],["StringMetric","A string metric."],["TextMetric","A text metric."],["TimerId","Identifier for a running timer."],["TimespanMetric","A timespan metric."],["TimingDistributionMetric","A timing distribution metric."],["UrlMetric","A URL metric."],["UuidMetric","An UUID metric."]],"trait":[["AllowLabeled","Trait for metrics that can be nested inside a labeled metric."],["GleanEventListener","A callback handler that receives the base identifier of recorded events The identifier is in the format: `.`"],["OnGleanEvents","A callback object used to trigger actions on the foreign-language side."]],"type":[["LabeledBoolean","A labeled boolean."],["LabeledCounter","A labeled counter."],["LabeledCustomDistribution","A labeled custom_distribution."],["LabeledMemoryDistribution","A labeled memory_distribution."],["LabeledString","A labeled string."],["LabeledTimingDistribution","A labeled timing_distribution."],["Result","A specialized `Result` type for this crate’s operations."]]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"enum":["CallbackError","ErrorKind","ErrorType","HistogramType","LabeledMetricData","Lifetime"],"fn":["get_timestamp_ms","glean_apply_server_knobs_config","glean_enable_logging","glean_enable_logging_to_fd","glean_get_upload_task","glean_handle_client_active","glean_handle_client_inactive","glean_initialize","glean_initialize_for_subprocess","glean_persist_ping_lifetime_data","glean_process_ping_upload_response","glean_register_event_listener","glean_set_debug_view_tag","glean_set_dirty_flag","glean_set_experiment_active","glean_set_experiment_inactive","glean_set_experimentation_id","glean_set_log_pings","glean_set_source_tags","glean_set_test_mode","glean_set_upload_enabled","glean_shutdown","glean_submit_ping_by_name","glean_submit_ping_by_name_sync","glean_test_destroy_glean","glean_test_get_experiment_data","glean_test_get_experimentation_id","glean_unregister_event_listener","join_init","shutdown","test_get_num_recorded_errors"],"mod":["metrics","ping","storage","traits","upload"],"struct":["ClientInfoMetrics","CommonMetricData","Error","Glean","InternalConfiguration","LabeledMetric","PingRateLimit"],"trait":["AllowLabeled","GleanEventListener","OnGleanEvents"],"type":["LabeledBoolean","LabeledCounter","LabeledCustomDistribution","LabeledMemoryDistribution","LabeledString","LabeledTimingDistribution","Result"]}; \ No newline at end of file diff --git a/docs/glean_core/storage/index.html b/docs/glean_core/storage/index.html index ad6aef49f6..a39156fc07 100644 --- a/docs/glean_core/storage/index.html +++ b/docs/glean_core/storage/index.html @@ -1,2 +1,3 @@ -glean_core::storage - Rust

    Module glean_core::storage

    source ·
    Expand description

    Storage snapshotting.

    -

    Structs

    Snapshot metrics from the underlying database.
    \ No newline at end of file +glean_core::storage - Rust +

    Module glean_core::storage

    source ·
    Expand description

    Storage snapshotting.

    +

    Structs

    \ No newline at end of file diff --git a/docs/glean_core/storage/sidebar-items.js b/docs/glean_core/storage/sidebar-items.js index 70026c785a..f038674c8e 100644 --- a/docs/glean_core/storage/sidebar-items.js +++ b/docs/glean_core/storage/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"struct":[["StorageManager","Snapshot metrics from the underlying database."]]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"struct":["StorageManager"]}; \ No newline at end of file diff --git a/docs/glean_core/storage/struct.StorageManager.html b/docs/glean_core/storage/struct.StorageManager.html index 398638b3c0..0362361ba6 100644 --- a/docs/glean_core/storage/struct.StorageManager.html +++ b/docs/glean_core/storage/struct.StorageManager.html @@ -1,5 +1,11 @@ -StorageManager in glean_core::storage - Rust
    pub struct StorageManager;
    Expand description

    Snapshot metrics from the underlying database.

    -

    Implementations§

    Snapshots the given store and optionally clear it.

    +StorageManager in glean_core::storage - Rust +
    pub struct StorageManager;
    Expand description

    Snapshot metrics from the underlying database.

    +

    Implementations§

    source§

    impl StorageManager

    source

    pub fn snapshot( + &self, + storage: &Database, + store_name: &str, + clear_store: bool +) -> Option<String>

    Snapshots the given store and optionally clear it.

    Arguments
    • storage - the database to read from.
    • @@ -9,7 +15,12 @@
      Arguments
      Returns

      The stored data in a string encoded as JSON. If no data for the store exists, None is returned.

      -

    Snapshots the given store and optionally clear it.

    +
    source

    pub fn snapshot_as_json( + &self, + storage: &Database, + store_name: &str, + clear_store: bool +) -> Option<JsonValue>

    Snapshots the given store and optionally clear it.

    Arguments
    • storage - the database to read from.
    • @@ -19,7 +30,13 @@
      Arguments
      Returns

      A JSON representation of the stored data. If no data for the store exists, None is returned.

      -

    Gets the current value of a single metric identified by name.

    +
    source

    pub fn snapshot_metric( + &self, + storage: &Database, + store_name: &str, + metric_id: &str, + metric_lifetime: Lifetime +) -> Option<Metric>

    Gets the current value of a single metric identified by name.

    Arguments
    • storage - The database to get data from.
    • @@ -28,7 +45,13 @@
      Arguments
    Returns

    The decoded metric or None if no data is found.

    -

    Gets the current value of a single metric identified by name.

    +
    source

    pub fn snapshot_metric_for_test( + &self, + storage: &Database, + store_name: &str, + metric_id: &str, + metric_lifetime: Lifetime +) -> Option<Metric>

    Gets the current value of a single metric identified by name.

    Use this API, rather than snapshot_metric within the testing API, so that the usage will be reported in coverage, if enabled.

    Arguments
    @@ -39,7 +62,11 @@
    Arguments
    Returns

    The decoded metric or None if no data is found.

    -

    Snapshots the experiments.

    +
    source

    pub fn snapshot_experiments_as_json( + &self, + storage: &Database, + store_name: &str +) -> Option<JsonValue>

    Snapshots the experiments.

    Arguments
    • storage - The database to get data from.
    • @@ -58,8 +85,15 @@
      Returns
      }

    If no data for the store exists, None is returned.

    -

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    +

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    §

    impl<T, UT> HandleAlloc<UT> for T
    where + T: Send + Sync,

    §

    fn new_handle(value: Arc<T>) -> Handle

    Create a new handle for an Arc value Read more
    §

    fn clone_handle(handle: Handle) -> Handle

    Clone a handle Read more
    §

    fn consume_handle(handle: Handle) -> Arc<T>

    Consume a handle, getting back the initial Arc<>
    §

    fn get_arc(handle: Handle) -> Arc<Self>

    Get a clone of the Arc<> using a “borrowed” handle. Read more
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/docs/glean_core/struct.BooleanMetric.html b/docs/glean_core/struct.BooleanMetric.html deleted file mode 100644 index 88fe48a5b2..0000000000 --- a/docs/glean_core/struct.BooleanMetric.html +++ /dev/null @@ -1,31 +0,0 @@ -BooleanMetric in glean_core - Rust
    pub struct BooleanMetric { /* private fields */ }
    Expand description

    A boolean metric.

    -

    Records a simple flag.

    -

    Implementations§

    Creates a new boolean metric.

    -

    Sets to the specified boolean value.

    -
    Arguments
    -
      -
    • value - the value to set.
    • -
    -

    Test-only API (exported for FFI purposes).

    -

    Gets the currently stored value as an integer.

    -

    This doesn’t clear the stored value.

    -
    Arguments
    -
      -
    • ping_name - the optional name of the ping to retrieve the metric -for. Defaults to the first value in send_in_pings.
    • -
    -
    Returns
    -

    The stored value or None if nothing stored.

    -

    Exported for test purposes.

    -

    Gets the number of recorded errors for the given metric and error type.

    -
    Arguments
    -
      -
    • error - The type of error
    • -
    -
    Returns
    -

    The number of errors reported.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Access the stored metadata
    Create a new metric from this with a new name.
    Create a new metric from this with a specific label.
    Whether this metric should currently be recorded Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    -

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file diff --git a/docs/glean_core/struct.ClientInfoMetrics.html b/docs/glean_core/struct.ClientInfoMetrics.html index 152ea67308..28c68ba001 100644 --- a/docs/glean_core/struct.ClientInfoMetrics.html +++ b/docs/glean_core/struct.ClientInfoMetrics.html @@ -1,35 +1,43 @@ -ClientInfoMetrics in glean_core - Rust
    pub struct ClientInfoMetrics {
    -    pub app_build: String,
    -    pub app_display_version: String,
    +ClientInfoMetrics in glean_core - Rust
    +    
    pub struct ClientInfoMetrics {
    +    pub app_build: String,
    +    pub app_display_version: String,
         pub app_build_date: Datetime,
    -    pub architecture: String,
    -    pub os_version: String,
    -    pub channel: Option<String>,
    -    pub android_sdk_version: Option<String>,
    -    pub windows_build_number: Option<i64>,
    -    pub device_manufacturer: Option<String>,
    -    pub device_model: Option<String>,
    -    pub locale: Option<String>,
    -}
    Expand description

    Metrics included in every ping as client_info.

    -

    Fields§

    §app_build: String

    The build identifier generated by the CI system (e.g. “1234/A”).

    -
    §app_display_version: String

    The user visible version string (e.g. “1.0.3”).

    -
    §app_build_date: Datetime

    The app’s build date

    -
    §architecture: String

    The architecture of the device (e.g. “arm”, “x86”).

    -
    §os_version: String

    The name of the operating system (e.g. “Linux”, “Android”, “iOS”).

    -
    §channel: Option<String>

    The product-provided release channel (e.g. “beta”).

    -
    §android_sdk_version: Option<String>

    The Android specific SDK version of the software running on this hardware device (e.g. “23”).

    -
    §windows_build_number: Option<i64>

    The Windows specific OS build version (e.g. 19043)

    -
    §device_manufacturer: Option<String>

    The manufacturer of the device the application is running on. + pub architecture: String, + pub os_version: String, + pub channel: Option<String>, + pub android_sdk_version: Option<String>, + pub windows_build_number: Option<i64>, + pub device_manufacturer: Option<String>, + pub device_model: Option<String>, + pub locale: Option<String>, +}

    Expand description

    Metrics included in every ping as client_info.

    +

    Fields§

    §app_build: String

    The build identifier generated by the CI system (e.g. “1234/A”).

    +
    §app_display_version: String

    The user visible version string (e.g. “1.0.3”).

    +
    §app_build_date: Datetime

    The app’s build date

    +
    §architecture: String

    The architecture of the device (e.g. “arm”, “x86”).

    +
    §os_version: String

    The name of the operating system (e.g. “Linux”, “Android”, “iOS”).

    +
    §channel: Option<String>

    The product-provided release channel (e.g. “beta”).

    +
    §android_sdk_version: Option<String>

    The Android specific SDK version of the software running on this hardware device (e.g. “23”).

    +
    §windows_build_number: Option<i64>

    The Windows specific OS build version (e.g. 19043)

    +
    §device_manufacturer: Option<String>

    The manufacturer of the device the application is running on. Not set if the device manufacturer can’t be determined (e.g. on Desktop).

    -
    §device_model: Option<String>

    The model of the device the application is running on. +

    §device_model: Option<String>

    The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like “Pixel 2 XL”. Not set if the device model can’t be determined (e.g. on Desktop).

    -
    §locale: Option<String>

    The locale of the application during initialization (e.g. “es-ES”). +

    §locale: Option<String>

    The locale of the application during initialization (e.g. “es-ES”). If the locale can’t be determined on the system, the value is “und”, to indicate “undetermined”.

    -

    Implementations§

    Metrics included in every ping as client_info.

    -

    Creates the client info with dummy values for all.

    -

    Trait Implementations§

    Formats the value using the given formatter. Read more
    Returns the “default value” for a type. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    +

    Implementations§

    source§

    impl ClientInfoMetrics

    Metrics included in every ping as client_info.

    +
    source

    pub fn unknown() -> Self

    Creates the client info with dummy values for all.

    +

    Trait Implementations§

    source§

    impl Debug for ClientInfoMetrics

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for ClientInfoMetrics

    source§

    fn default() -> ClientInfoMetrics

    Returns the “default value” for a type. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    §

    impl<T, UT> HandleAlloc<UT> for T
    where + T: Send + Sync,

    §

    fn new_handle(value: Arc<T>) -> Handle

    Create a new handle for an Arc value Read more
    §

    fn clone_handle(handle: Handle) -> Handle

    Clone a handle Read more
    §

    fn consume_handle(handle: Handle) -> Arc<T>

    Consume a handle, getting back the initial Arc<>
    §

    fn get_arc(handle: Handle) -> Arc<Self>

    Get a clone of the Arc<> using a “borrowed” handle. Read more
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/docs/glean_core/struct.CommonMetricData.html b/docs/glean_core/struct.CommonMetricData.html index c3da97836c..e4ae463af7 100644 --- a/docs/glean_core/struct.CommonMetricData.html +++ b/docs/glean_core/struct.CommonMetricData.html @@ -1,24 +1,38 @@ -CommonMetricData in glean_core - Rust
    pub struct CommonMetricData {
    -    pub name: String,
    -    pub category: String,
    -    pub send_in_pings: Vec<String>,
    +CommonMetricData in glean_core - Rust
    +    
    pub struct CommonMetricData {
    +    pub name: String,
    +    pub category: String,
    +    pub send_in_pings: Vec<String>,
         pub lifetime: Lifetime,
    -    pub disabled: bool,
    -    pub dynamic_label: Option<String>,
    -}
    Expand description

    The common set of data shared across all different metric types.

    -

    Fields§

    §name: String

    The metric’s name.

    -
    §category: String

    The metric’s category.

    -
    §send_in_pings: Vec<String>

    List of ping names to include this metric in.

    -
    §lifetime: Lifetime

    The metric’s lifetime.

    -
    §disabled: bool

    Whether or not the metric is disabled.

    + pub disabled: bool, + pub dynamic_label: Option<String>, +}
    Expand description

    The common set of data shared across all different metric types.

    +

    Fields§

    §name: String

    The metric’s name.

    +
    §category: String

    The metric’s category.

    +
    §send_in_pings: Vec<String>

    List of ping names to include this metric in.

    +
    §lifetime: Lifetime

    The metric’s lifetime.

    +
    §disabled: bool

    Whether or not the metric is disabled.

    Disabled metrics are never recorded.

    -
    §dynamic_label: Option<String>

    Dynamic label.

    -

    When a LabeledMetric<T> factory creates the specific +

    §dynamic_label: Option<String>

    Dynamic label.

    +

    When a LabeledMetric<T> factory creates the specific metric to be recorded to, dynamic labels are stored in the specific label so that we can validate them when the Glean singleton is available.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Returns the “default value” for a type. Read more
    Deserialize this value from the given Serde deserializer. Read more
    Serialize this value into the given Serde serializer. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Clone for CommonMetricData

    source§

    fn clone(&self) -> CommonMetricData

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for CommonMetricData

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for CommonMetricData

    source§

    fn default() -> CommonMetricData

    Returns the “default value” for a type. Read more
    source§

    impl<'de> Deserialize<'de> for CommonMetricData

    source§

    fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
    where + __D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    source§

    impl Serialize for CommonMetricData

    source§

    fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
    where + __S: Serializer,

    Serialize this value into the given Serde serializer. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> EncodableKey for T
    where + T: Serialize,

    §

    fn to_bytes(&self) -> Result<Vec<u8>, DataError>

    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    §

    impl<T, UT> HandleAlloc<UT> for T
    where + T: Send + Sync,

    §

    fn new_handle(value: Arc<T>) -> Handle

    Create a new handle for an Arc value Read more
    §

    fn clone_handle(handle: Handle) -> Handle

    Clone a handle Read more
    §

    fn consume_handle(handle: Handle) -> Arc<T>

    Consume a handle, getting back the initial Arc<>
    §

    fn get_arc(handle: Handle) -> Arc<Self>

    Get a clone of the Arc<> using a “borrowed” handle. Read more
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<V> ObjectSerialize for V
    where + V: Serialize + for<'de> Deserialize<'de>,

    source§

    fn from_str(obj: &str) -> Result<V, ObjectError>

    Deserialize the object from its JSON representation. Read more
    source§

    fn into_serialized_object(self) -> Result<Value, ObjectError>

    Serialize this object into a JSON string.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> DeserializeOwned for T
    where + T: for<'de> Deserialize<'de>,

    \ No newline at end of file diff --git a/docs/glean_core/struct.CounterMetric.html b/docs/glean_core/struct.CounterMetric.html deleted file mode 100644 index ebb2821309..0000000000 --- a/docs/glean_core/struct.CounterMetric.html +++ /dev/null @@ -1,34 +0,0 @@ -CounterMetric in glean_core - Rust
    pub struct CounterMetric { /* private fields */ }
    Expand description

    A counter metric.

    -

    Used to count things. -The value can only be incremented, not decremented.

    -

    Implementations§

    Creates a new counter metric.

    -

    Increases the counter by amount.

    -
    Arguments
    -
      -
    • amount - The amount to increase by. Should be positive.
    • -
    -
    Notes
    -

    Logs an error if the amount is 0 or negative.

    -

    Test-only API (exported for FFI purposes).

    -

    Gets the currently stored value as an integer.

    -

    This doesn’t clear the stored value.

    -
    Arguments
    -
      -
    • ping_name - the optional name of the ping to retrieve the metric -for. Defaults to the first value in send_in_pings.
    • -
    -
    Returns
    -

    The stored value or None if nothing stored.

    -

    Exported for test purposes.

    -

    Gets the number of recorded errors for the given metric and error type.

    -
    Arguments
    -
      -
    • error - The type of error
    • -
    -
    Returns
    -

    The number of errors reported.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Access the stored metadata
    Create a new metric from this with a new name.
    Create a new metric from this with a specific label.
    Whether this metric should currently be recorded Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    -

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file diff --git a/docs/glean_core/struct.CustomDistributionMetric.html b/docs/glean_core/struct.CustomDistributionMetric.html deleted file mode 100644 index 387a4836aa..0000000000 --- a/docs/glean_core/struct.CustomDistributionMetric.html +++ /dev/null @@ -1,49 +0,0 @@ -CustomDistributionMetric in glean_core - Rust
    pub struct CustomDistributionMetric { /* private fields */ }
    Expand description

    A custom distribution metric.

    -

    Memory distributions are used to accumulate and store memory sizes.

    -

    Implementations§

    Creates a new memory distribution metric.

    -

    Accumulates the provided signed samples in the metric.

    -

    This is required so that the platform-specific code can provide us with -64 bit signed integers if no u64 comparable type is available. This -will take care of filtering and reporting errors for any provided negative -sample.

    -
    Arguments
    -
      -
    • samples - The vector holding the samples to be recorded by the metric.
    • -
    -
    Notes
    -

    Discards any negative value in samples and report an ErrorType::InvalidValue -for each of them.

    -

    Accumulates precisely one signed sample and appends it to the metric.

    -

    Signed is required so that the platform-specific code can provide us with a -64 bit signed integer if no u64 comparable type is available. This -will take care of filtering and reporting errors.

    -
    Arguments
    -
      -
    • sample - The singular sample to be recorded by the metric.
    • -
    -
    Notes
    -

    Discards any negative value of sample and reports an -ErrorType::InvalidValue.

    -

    Test-only API (exported for FFI purposes).

    -

    Gets the currently stored value as an integer.

    -

    This doesn’t clear the stored value.

    -
    Arguments
    -
      -
    • ping_name - the optional name of the ping to retrieve the metric -for. Defaults to the first value in send_in_pings.
    • -
    -
    Returns
    -

    The stored value or None if nothing stored.

    -

    Exported for test purposes.

    -

    Gets the number of recorded errors for the given metric and error type.

    -
    Arguments
    -
      -
    • error - The type of error
    • -
    -
    Returns
    -

    The number of errors reported.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Access the stored metadata
    Create a new metric from this with a new name.
    Create a new metric from this with a specific label.
    Whether this metric should currently be recorded Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    -

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file diff --git a/docs/glean_core/struct.Datetime.html b/docs/glean_core/struct.Datetime.html deleted file mode 100644 index ff3158794d..0000000000 --- a/docs/glean_core/struct.Datetime.html +++ /dev/null @@ -1,26 +0,0 @@ -Datetime in glean_core - Rust

    Struct glean_core::Datetime

    source ·
    pub struct Datetime {
    -    pub year: i32,
    -    pub month: u32,
    -    pub day: u32,
    -    pub hour: u32,
    -    pub minute: u32,
    -    pub second: u32,
    -    pub nanosecond: u32,
    -    pub offset_seconds: i32,
    -}
    Expand description

    Representation of a date, time and timezone.

    -

    Fields§

    §year: i32

    The year, e.g. 2021.

    -
    §month: u32

    The month, 1=January.

    -
    §day: u32

    The day of the month.

    -
    §hour: u32

    The hour. 0-23

    -
    §minute: u32

    The minute. 0-59.

    -
    §second: u32

    The second. 0-60.

    -
    §nanosecond: u32

    The nanosecond part of the time.

    -
    §offset_seconds: i32

    The timezone offset from UTC in seconds. -Negative for west, positive for east of UTC.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Returns the “default value” for a type. Read more
    Converts to this type from the input type.
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    -

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file diff --git a/docs/glean_core/struct.DatetimeMetric.html b/docs/glean_core/struct.DatetimeMetric.html deleted file mode 100644 index 9fdfdca5fa..0000000000 --- a/docs/glean_core/struct.DatetimeMetric.html +++ /dev/null @@ -1,42 +0,0 @@ -DatetimeMetric in glean_core - Rust
    pub struct DatetimeMetric { /* private fields */ }
    Expand description

    A datetime metric.

    -

    Used to record an absolute date and time, such as the time the user first ran -the application.

    -

    Implementations§

    Creates a new datetime metric.

    -

    Sets the metric to a date/time including the timezone offset.

    -
    Arguments
    -
      -
    • dt - the optinal datetime to set this to. If missing the current date is used.
    • -
    -

    Test-only API (exported for FFI purposes).

    -

    Gets the stored datetime value.

    -

    The precision of this value is truncated to the time_unit precision.

    -
    Arguments
    -
      -
    • ping_name - the optional name of the ping to retrieve the metric -for. Defaults to the first value in send_in_pings.
    • -
    -
    Returns
    -

    The stored value or None if nothing stored.

    -

    Test-only API (exported for FFI purposes).

    -

    Gets the stored datetime value, formatted as an ISO8601 string.

    -

    The precision of this value is truncated to the time_unit precision.

    -
    Arguments
    -
      -
    • ping_name - the optional name of the ping to retrieve the metric -for. Defaults to the first value in send_in_pings.
    • -
    -
    Returns
    -

    The stored value or None if nothing stored.

    -

    Exported for test purposes.

    -

    Gets the number of recorded errors for the given metric and error type.

    -
    Arguments
    -
      -
    • error - The type of error
    • -
    -
    Returns
    -

    The number of errors reported.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Access the stored metadata
    Create a new metric from this with a new name.
    Create a new metric from this with a specific label.
    Whether this metric should currently be recorded Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    -

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file diff --git a/docs/glean_core/struct.DenominatorMetric.html b/docs/glean_core/struct.DenominatorMetric.html deleted file mode 100644 index 0eaa3c85f6..0000000000 --- a/docs/glean_core/struct.DenominatorMetric.html +++ /dev/null @@ -1,35 +0,0 @@ -DenominatorMetric in glean_core - Rust
    pub struct DenominatorMetric { /* private fields */ }
    Expand description

    A Denominator metric (a kind of count shared among Rate metrics).

    -

    Used to count things. -The value can only be incremented, not decremented.

    -

    Implementations§

    Creates a new denominator metric.

    -

    Increases the denominator by amount.

    -
    Arguments
    -
      -
    • glean - The Glean instance this metric belongs to.
    • -
    • amount - The amount to increase by. Should be positive.
    • -
    -
    Notes
    -

    Logs an error if the amount is 0 or negative.

    -

    Test-only API (exported for FFI purposes).

    -

    Gets the currently stored value as an integer.

    -

    This doesn’t clear the stored value.

    -
    Arguments
    -
      -
    • ping_name - the optional name of the ping to retrieve the metric -for. Defaults to the first value in send_in_pings.
    • -
    -
    Returns
    -

    The stored value or None if nothing stored.

    -

    Exported for test purposes.

    -

    Gets the number of recorded errors for the given metric and error type.

    -
    Arguments
    -
      -
    • error - The type of error
    • -
    -
    Returns
    -

    The number of errors reported.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Access the stored metadata
    Create a new metric from this with a new name.
    Create a new metric from this with a specific label.
    Whether this metric should currently be recorded Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    -

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file diff --git a/docs/glean_core/struct.Error.html b/docs/glean_core/struct.Error.html index 1168d38ebc..c3c186c364 100644 --- a/docs/glean_core/struct.Error.html +++ b/docs/glean_core/struct.Error.html @@ -1,14 +1,22 @@ -Error in glean_core - Rust

    Struct glean_core::Error

    source ·
    pub struct Error { /* private fields */ }
    Expand description

    A specialized Error type for this crate’s operations.

    -

    Implementations§

    Returns a new UTF-8 error

    +Error in glean_core - Rust +

    Struct glean_core::Error

    source ·
    pub struct Error { /* private fields */ }
    Expand description

    A specialized Error type for this crate’s operations.

    +

    Implementations§

    source§

    impl Error

    source

    pub fn utf8_error() -> Error

    Returns a new UTF-8 error

    This is exposed in order to expose conversion errors on the FFI layer.

    -

    Indicates an error that no requested global object is initialized

    -

    Returns the kind of the current error instance.

    -

    Trait Implementations§

    Formats the value using the given formatter. Read more
    Formats the value using the given formatter. Read more
    The lower-level source of this error, if any. Read more
    👎Deprecated since 1.42.0: use the Display impl or to_string()
    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    Converts to this type from the input type.
    Converts to this type from the input type.
    Converts to this type from the input type.

    To satisfy integer conversion done by the macros on the FFI side, we need to be able to turn +

    source

    pub fn not_initialized() -> Error

    Indicates an error that no requested global object is initialized

    +
    source

    pub fn kind(&self) -> &ErrorKind

    Returns the kind of the current error instance.

    +

    Trait Implementations§

    source§

    impl Debug for Error

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for Error

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for Error

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

    The lower-level source of this error, if any. Read more
    1.0.0 · source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    source§

    impl From<Error> for Error

    source§

    fn from(error: Error) -> Error

    Converts to this type from the input type.
    source§

    impl From<Error> for Error

    source§

    fn from(error: Error) -> Error

    Converts to this type from the input type.
    source§

    impl From<ErrorKind> for Error

    source§

    fn from(kind: ErrorKind) -> Error

    Converts to this type from the input type.
    source§

    impl From<Infallible> for Error

    To satisfy integer conversion done by the macros on the FFI side, we need to be able to turn something infallible into an error. This will never actually be reached, as an integer-to-integer conversion is infallible.

    -
    Converts to this type from the input type.
    Converts to this type from the input type.
    Converts to this type from the input type.

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    +
    source§

    fn from(_: Infallible) -> Error

    Converts to this type from the input type.
    source§

    impl From<OsString> for Error

    source§

    fn from(error: OsString) -> Error

    Converts to this type from the input type.
    source§

    impl From<StoreError> for Error

    source§

    fn from(error: StoreError) -> Error

    Converts to this type from the input type.

    Auto Trait Implementations§

    §

    impl !RefUnwindSafe for Error

    §

    impl Send for Error

    §

    impl Sync for Error

    §

    impl Unpin for Error

    §

    impl !UnwindSafe for Error

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    §

    impl<T, UT> HandleAlloc<UT> for T
    where + T: Send + Sync,

    §

    fn new_handle(value: Arc<T>) -> Handle

    Create a new handle for an Arc value Read more
    §

    fn clone_handle(handle: Handle) -> Handle

    Clone a handle Read more
    §

    fn consume_handle(handle: Handle) -> Arc<T>

    Consume a handle, getting back the initial Arc<>
    §

    fn get_arc(handle: Handle) -> Arc<Self>

    Get a clone of the Arc<> using a “borrowed” handle. Read more
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    🔬This is a nightly-only experimental API. (provide_any)
    Data providers should implement this method to provide all values they are able to -provide by using demand. Read more
    Converts the given value to a String. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/docs/glean_core/struct.EventMetric.html b/docs/glean_core/struct.EventMetric.html deleted file mode 100644 index 71d3169c0c..0000000000 --- a/docs/glean_core/struct.EventMetric.html +++ /dev/null @@ -1,42 +0,0 @@ -EventMetric in glean_core - Rust

    Struct glean_core::EventMetric

    source ·
    pub struct EventMetric { /* private fields */ }
    Expand description

    An event metric.

    -

    Events allow recording of e.g. individual occurences of user actions, say -every time a view was open and from where. Each time you record an event, it -records a timestamp, the event’s name and a set of custom values.

    -

    Implementations§

    Creates a new event metric.

    -

    Records an event.

    -
    Arguments
    -
      -
    • extra - A HashMap of (key, value) pairs. -Keys must be one of the allowed extra keys. -If any key is not allowed, an error is reported and no event is recorded.
    • -
    -

    Record a new event with a provided timestamp.

    -

    It’s the caller’s responsibility to ensure the timestamp comes from the same clock source.

    -
    Arguments
    -
      -
    • timestamp - The event timestamp, in milliseconds.
    • -
    • extra - A HashMap of (key, value) pairs. -Keys must be one of the allowed extra keys. -If any key is not allowed, an error is reported and no event is recorded.
    • -
    -

    Test-only API (exported for FFI purposes).

    -

    Get the vector of currently stored events for this event metric.

    -

    This doesn’t clear the stored value.

    -
    Arguments
    -
      -
    • ping_name - the optional name of the ping to retrieve the metric -for. Defaults to the first value in send_in_pings.
    • -
    -

    Exported for test purposes.

    -

    Gets the number of recorded errors for the given metric and error type.

    -
    Arguments
    -
      -
    • error - The type of error
    • -
    -
    Returns
    -

    The number of errors reported.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Access the stored metadata
    Create a new metric from this with a new name.
    Create a new metric from this with a specific label.
    Whether this metric should currently be recorded Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    -

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file diff --git a/docs/glean_core/struct.Glean.html b/docs/glean_core/struct.Glean.html index 905159cd0b..138427ae76 100644 --- a/docs/glean_core/struct.Glean.html +++ b/docs/glean_core/struct.Glean.html @@ -1,16 +1,17 @@ -Glean in glean_core - Rust

    Struct glean_core::Glean

    source ·
    pub struct Glean { /* private fields */ }
    Expand description

    The object holding meta information about a Glean instance.

    +Glean in glean_core - Rust +

    Struct glean_core::Glean

    source ·
    pub struct Glean { /* private fields */ }
    Expand description

    The object holding meta information about a Glean instance.

    Example

    Create a new Glean instance, register a ping, record a simple counter and then send the final ping.

    let cfg = InternalConfiguration {
    -    data_path: "/tmp/glean".into(),
    -    application_id: "glean.sample.app".into(),
    -    language_binding_name: "Rust".into(),
    +    data_path: "/tmp/glean".into(),
    +    application_id: "glean.sample.app".into(),
    +    language_binding_name: "Rust".into(),
         upload_enabled: true,
         max_events: None,
         delay_ping_lifetime_io: false,
    -    app_build: "".into(),
    +    app_build: "".into(),
         use_core_mps: false,
         trim_data_to_registered_pings: false,
         log_level: None,
    @@ -23,13 +24,13 @@ 

    Example

    ping_lifetime_max_time: 2000, }; let mut glean = Glean::new(cfg).unwrap(); -let ping = PingType::new("sample", true, false, true, true, true, vec![], vec![]); +let ping = PingType::new("sample", true, false, true, true, true, vec![], vec![]); glean.register_ping_type(&ping); let call_counter: CounterMetric = CounterMetric::new(CommonMetricData { - name: "calls".into(), - category: "local".into(), - send_in_pings: vec!["sample".into()], + name: "calls".into(), + category: "local".into(), + send_in_pings: vec!["sample".into()], ..Default::default() }); @@ -39,16 +40,22 @@

    Example

    Note

    In specific language bindings, this is usually wrapped in a singleton and all metric recording goes to a single instance of this object. In the Rust core, it is possible to create multiple instances, which is used in testing.

    -

    Implementations§

    Creates and initializes a new Glean object for use in a subprocess.

    +

    Implementations§

    source§

    impl Glean

    source

    pub fn new_for_subprocess( + cfg: &InternalConfiguration, + scan_directories: bool +) -> Result<Self>

    Creates and initializes a new Glean object for use in a subprocess.

    Importantly, this will not send any pings at startup, since that sort of management should only happen in the main process.

    -

    Creates and initializes a new Glean object.

    +
    source

    pub fn new(cfg: InternalConfiguration) -> Result<Self>

    Creates and initializes a new Glean object.

    This will create the necessary directories and files in -cfg.data_path. This will also initialize +cfg.data_path. This will also initialize the core metrics.

    -

    Destroys the database.

    +
    source

    pub fn destroy_db(&mut self)

    Destroys the database.

    After this Glean needs to be reinitialized.

    -

    Signals that the environment is ready to submit pings.

    +
    source

    pub fn on_ready_to_submit_pings( + &self, + trim_data_to_registered_pings: bool +) -> bool

    Signals that the environment is ready to submit pings.

    Should be called when Glean is initialized to the point where it can correctly assemble pings. Usually called from the language binding after all of the core metrics have been set and the ping types have been registered.

    @@ -59,7 +66,7 @@
    Arguments
    Returns

    Whether the “events” ping was submitted.

    -

    Sets whether upload is enabled or not.

    +
    source

    pub fn set_upload_enabled(&mut self, flag: bool) -> bool

    Sets whether upload is enabled or not.

    When uploading is disabled, metrics aren’t recorded at all and no data is uploaded.

    When disabling, all pending metrics, events and queued pings are cleared.

    @@ -72,33 +79,37 @@
    Arguments
    Returns

    Whether the flag was different from the current value, and actual work was done to clear or reinstate metrics.

    -

    Determines whether upload is enabled.

    +
    source

    pub fn is_upload_enabled(&self) -> bool

    Determines whether upload is enabled.

    When upload is disabled, no data will be recorded.

    -

    Gets the application ID as specified on instantiation.

    -

    Gets the data path of this instance.

    -

    Gets a handle to the database.

    -

    Gets an optional handle to the database.

    -

    Gets a handle to the event database.

    -

    Gets the maximum number of events to store before sending a ping.

    -

    Gets the next task for an uploader.

    +
    source

    pub fn get_application_id(&self) -> &str

    Gets the application ID as specified on instantiation.

    +
    source

    pub fn get_data_path(&self) -> &Path

    Gets the data path of this instance.

    +
    source

    pub fn storage(&self) -> &Database

    Gets a handle to the database.

    +
    source

    pub fn storage_opt(&self) -> Option<&Database>

    Gets an optional handle to the database.

    +
    source

    pub fn event_storage(&self) -> &EventDatabase

    Gets a handle to the event database.

    +
    source

    pub fn get_max_events(&self) -> usize

    Gets the maximum number of events to store before sending a ping.

    +
    source

    pub fn get_upload_task(&self) -> PingUploadTask

    Gets the next task for an uploader.

    This can be one of:

      -
    • Wait - which means the requester should ask +
    • Wait - which means the requester should ask again later;
    • -
    • Upload(PingRequest) - which means there is +
    • Upload(PingRequest) - which means there is a ping to upload. This wraps the actual request object;
    • -
    • Done - which means requester should stop +
    • Done - which means requester should stop asking for now.
    Returns
    -

    A PingUploadTask representing the next task.

    -

    Processes the response from an attempt to upload a ping.

    +

    A PingUploadTask representing the next task.

    +
    source

    pub fn process_ping_upload_response( + &self, + uuid: &str, + status: UploadResult +) -> UploadTaskAction

    Processes the response from an attempt to upload a ping.

    Arguments
    • uuid - The UUID of the ping in question.
    • status - The upload result.
    -

    Takes a snapshot for the given store and optionally clear it.

    +
    source

    pub fn snapshot(&mut self, store_name: &str, clear_store: bool) -> String

    Takes a snapshot for the given store and optionally clear it.

    Arguments
    • store_name - The store to snapshot.
    • @@ -106,7 +117,7 @@
      Arguments
    Returns

    The snapshot in a string encoded as JSON. If the snapshot is empty, returns an empty string.

    -

    Collects and submits a ping by name for eventual uploading.

    +
    source

    pub fn submit_ping_by_name(&self, ping_name: &str, reason: Option<&str>) -> bool

    Collects and submits a ping by name for eventual uploading.

    The ping content is assembled as soon as possible, but upload is not guaranteed to happen immediately, as that depends on the upload policies.

    If the ping currently contains no content, it will not be sent, @@ -120,12 +131,17 @@

    Returns

    Whether the ping was succesfully assembled and queued.

    Errors

    If collecting or writing the ping to disk failed.

    -

    Gets a PingType by name.

    +
    source

    pub fn get_ping_by_name(&self, ping_name: &str) -> Option<&PingType>

    Gets a PingType by name.

    Returns
    -

    The PingType of a ping if the given name was registered before, None +

    The PingType of a ping if the given name was registered before, None otherwise.

    -

    Register a new PingType.

    -

    Indicates that an experiment is running.

    +
    source

    pub fn register_ping_type(&mut self, ping: &PingType)

    Register a new PingType.

    +
    source

    pub fn set_experiment_active( + &self, + experiment_id: String, + branch: String, + extra: HashMap<String, String> +)

    Indicates that an experiment is running.

    Glean will then add an experiment annotation to the environment which is sent with pings. This information is not persisted between runs.

    Arguments
    @@ -134,33 +150,36 @@
    Arguments
  • branch - The experiment branch (maximum 30 bytes).
  • extra - Optional metadata to output with the ping.
  • -

    Indicates that an experiment is no longer running.

    +
    source

    pub fn set_experiment_inactive(&self, experiment_id: String)

    Indicates that an experiment is no longer running.

    Arguments
    • experiment_id - The id of the active experiment to deactivate (maximum 30 bytes).
    -

    Test-only API (exported for FFI purposes).

    +
    source

    pub fn test_get_experiment_data( + &self, + experiment_id: String +) -> Option<RecordedExperiment>

    Test-only API (exported for FFI purposes).

    Gets stored data for the requested experiment.

    Arguments
    • experiment_id - The id of the active experiment (maximum 30 bytes).
    -

    Test-only API (exported for FFI purposes).

    +
    source

    pub fn test_get_experimentation_id(&self) -> Option<String>

    Test-only API (exported for FFI purposes).

    Gets stored experimentation id annotation.

    -

    Set configuration to override the default state, typically initiated from a +

    source

    pub fn apply_server_knobs_config(&self, cfg: RemoteSettingsConfig)

    Set configuration to override the default state, typically initiated from a remote_settings experiment or rollout

    Arguments
    • cfg - The stringified JSON representation of a RemoteSettingsConfig object
    -

    Persists Lifetime::Ping data that might be in memory in case -delay_ping_lifetime_io is set +

    source

    pub fn persist_ping_lifetime_data(&self) -> Result<()>

    Persists Lifetime::Ping data that might be in memory in case +delay_ping_lifetime_io is set or was set at a previous time.

    If there is no data to persist, this function does nothing.

    -

    This is not meant to be used directly.

    -

    Clears all the metrics that have Lifetime::Application.

    -

    Whether or not this is the first run on this profile.

    -

    Sets a debug view tag.

    +
    source

    pub fn clear_application_lifetime_metrics(&self)

    This is not meant to be used directly.

    +

    Clears all the metrics that have Lifetime::Application.

    +
    source

    pub fn is_first_run(&self) -> bool

    Whether or not this is the first run on this profile.

    +
    source

    pub fn set_debug_view_tag(&mut self, value: &str) -> bool

    Sets a debug view tag.

    This will return false in case value is not a valid tag.

    When the debug view tag is set, pings are sent with a X-Debug-ID header with the value of the tag and are sent to the “Ping Debug Viewer”.

    @@ -168,7 +187,7 @@
    Arguments
    • value - A valid HTTP header value. Must match the regex: “[a-zA-Z0-9-]{1,20}”.
    -

    Sets source tags.

    +
    source

    pub fn set_source_tags(&mut self, value: Vec<String>) -> bool

    Sets source tags.

    This will return false in case value contains invalid tags.

    Ping tags will show in the destination datasets, after ingestion.

    Note If one or more tags are invalid, all tags are ignored.

    @@ -176,7 +195,7 @@
    Arguments
    • value - A vector of at most 5 valid HTTP header values. Individual tags must match the regex: “[a-zA-Z0-9-]{1,20}”.
    -

    Sets the log pings debug option.

    +
    source

    pub fn set_log_pings(&mut self, value: bool) -> bool

    Sets the log pings debug option.

    This will return false in case we are unable to set the option.

    When the log pings debug option is true, we log the payload of all succesfully assembled pings.

    @@ -184,7 +203,7 @@
    Arguments
    • value - The value of the log pings option
    -

    This is not meant to be used directly.

    +
    source

    pub fn set_dirty_flag(&self, new_value: bool)

    This is not meant to be used directly.

    Sets the value of a “dirty flag” in the permanent storage.

    The “dirty flag” is meant to have the following behaviour, implemented by the consumers of the FFI layer:

    @@ -197,24 +216,30 @@
    Arguments

    At startup, before setting its new value, if the “dirty flag” value is true, then Glean knows it did not exit cleanly and can implement coping mechanisms (e.g. sending a baseline ping).

    -

    This is not meant to be used directly.

    +
    source

    pub fn is_dirty_flag_set(&self) -> bool

    This is not meant to be used directly.

    Checks the stored value of the “dirty flag”.

    -

    Performs the collection/cleanup operations required by becoming active.

    +
    source

    pub fn handle_client_active(&mut self)

    Performs the collection/cleanup operations required by becoming active.

    This functions generates a baseline ping with reason active and then sets the dirty bit.

    -

    Performs the collection/cleanup operations required by becoming inactive.

    +
    source

    pub fn handle_client_inactive(&mut self)

    Performs the collection/cleanup operations required by becoming inactive.

    This functions generates a baseline and an events ping with reason inactive and then clears the dirty bit.

    -

    Test-only API (exported for FFI purposes).

    +
    source

    pub fn test_clear_all_stores(&self)

    Test-only API (exported for FFI purposes).

    Deletes all stored metrics.

    Note that this also includes the ping sequence numbers, so it has the effect of resetting those to their initial values.

    -

    Instructs the Metrics Ping Scheduler’s thread to exit cleanly. +

    source

    pub fn cancel_metrics_ping_scheduler(&self)

    Instructs the Metrics Ping Scheduler’s thread to exit cleanly. If Glean was configured with use_core_mps: false, this has no effect.

    -

    Instructs the Metrics Ping Scheduler to being scheduling metrics pings. +

    source

    pub fn start_metrics_ping_scheduler(&self)

    Instructs the Metrics Ping Scheduler to being scheduling metrics pings. If Glean wsa configured with use_core_mps: false, this has no effect.

    -

    Trait Implementations§

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Debug for Glean

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    §

    impl !RefUnwindSafe for Glean

    §

    impl Send for Glean

    §

    impl !Sync for Glean

    §

    impl Unpin for Glean

    §

    impl !UnwindSafe for Glean

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/docs/glean_core/struct.InternalConfiguration.html b/docs/glean_core/struct.InternalConfiguration.html index 2a391e13a3..3101516ce7 100644 --- a/docs/glean_core/struct.InternalConfiguration.html +++ b/docs/glean_core/struct.InternalConfiguration.html @@ -1,46 +1,55 @@ -InternalConfiguration in glean_core - Rust
    pub struct InternalConfiguration {
    Show 17 fields - pub upload_enabled: bool, - pub data_path: String, - pub application_id: String, - pub language_binding_name: String, - pub max_events: Option<u32>, - pub delay_ping_lifetime_io: bool, - pub app_build: String, - pub use_core_mps: bool, - pub trim_data_to_registered_pings: bool, - pub log_level: Option<LevelFilter>, - pub rate_limit: Option<PingRateLimit>, - pub enable_event_timestamps: bool, - pub experimentation_id: Option<String>, - pub enable_internal_pings: bool, - pub ping_schedule: HashMap<String, Vec<String>>, - pub ping_lifetime_threshold: u64, - pub ping_lifetime_max_time: u64, -
    }
    Expand description

    Configuration for Glean

    -

    Fields§

    §upload_enabled: bool

    Whether upload should be enabled.

    -
    §data_path: String

    Path to a directory to store all data in.

    -
    §application_id: String

    The application ID (will be sanitized during initialization).

    -
    §language_binding_name: String

    The name of the programming language used by the binding creating this instance of Glean.

    -
    §max_events: Option<u32>

    The maximum number of events to store before sending a ping containing events.

    -
    §delay_ping_lifetime_io: bool

    Whether Glean should delay persistence of data from metrics with ping lifetime.

    -
    §app_build: String

    The application’s build identifier. If this is different from the one provided for a previous init, +InternalConfiguration in glean_core - Rust

    +
    pub struct InternalConfiguration {
    Show 17 fields + pub upload_enabled: bool, + pub data_path: String, + pub application_id: String, + pub language_binding_name: String, + pub max_events: Option<u32>, + pub delay_ping_lifetime_io: bool, + pub app_build: String, + pub use_core_mps: bool, + pub trim_data_to_registered_pings: bool, + pub log_level: Option<LevelFilter>, + pub rate_limit: Option<PingRateLimit>, + pub enable_event_timestamps: bool, + pub experimentation_id: Option<String>, + pub enable_internal_pings: bool, + pub ping_schedule: HashMap<String, Vec<String>>, + pub ping_lifetime_threshold: u64, + pub ping_lifetime_max_time: u64, +
    }
    Expand description

    Configuration for Glean

    +

    Fields§

    §upload_enabled: bool

    Whether upload should be enabled.

    +
    §data_path: String

    Path to a directory to store all data in.

    +
    §application_id: String

    The application ID (will be sanitized during initialization).

    +
    §language_binding_name: String

    The name of the programming language used by the binding creating this instance of Glean.

    +
    §max_events: Option<u32>

    The maximum number of events to store before sending a ping containing events.

    +
    §delay_ping_lifetime_io: bool

    Whether Glean should delay persistence of data from metrics with ping lifetime.

    +
    §app_build: String

    The application’s build identifier. If this is different from the one provided for a previous init, and use_core_mps is true, we will trigger a “metrics” ping.

    -
    §use_core_mps: bool

    Whether Glean should schedule “metrics” pings.

    -
    §trim_data_to_registered_pings: bool

    Whether Glean should, on init, trim its event storage to only the registered pings.

    -
    §log_level: Option<LevelFilter>

    The internal logging level.

    -
    §rate_limit: Option<PingRateLimit>

    The rate at which pings may be uploaded before they are throttled.

    -
    §enable_event_timestamps: bool

    Whether to add a wallclock timestamp to all events.

    -
    §experimentation_id: Option<String>

    An experimentation identifier derived by the application to be sent with all pings, it should +

    §use_core_mps: bool

    Whether Glean should schedule “metrics” pings.

    +
    §trim_data_to_registered_pings: bool

    Whether Glean should, on init, trim its event storage to only the registered pings.

    +
    §log_level: Option<LevelFilter>

    The internal logging level.

    +
    §rate_limit: Option<PingRateLimit>

    The rate at which pings may be uploaded before they are throttled.

    +
    §enable_event_timestamps: bool

    Whether to add a wallclock timestamp to all events.

    +
    §experimentation_id: Option<String>

    An experimentation identifier derived by the application to be sent with all pings, it should be noted that this has an underlying StringMetric and so should conform to the limitations that StringMetric places on length, etc.

    -
    §enable_internal_pings: bool

    Whether to enable internal pings. Default: true

    -
    §ping_schedule: HashMap<String, Vec<String>>

    A ping schedule map. +

    §enable_internal_pings: bool

    Whether to enable internal pings. Default: true

    +
    §ping_schedule: HashMap<String, Vec<String>>

    A ping schedule map. Maps a ping name to a list of pings to schedule along with it. Only used if the ping’s own ping schedule list is empty.

    -
    §ping_lifetime_threshold: u64

    Write count threshold when to auto-flush. 0 disables it.

    -
    §ping_lifetime_max_time: u64

    After what time to auto-flush. 0 disables it.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    +
    §ping_lifetime_threshold: u64

    Write count threshold when to auto-flush. 0 disables it.

    +
    §ping_lifetime_max_time: u64

    After what time to auto-flush. 0 disables it.

    +

    Trait Implementations§

    source§

    impl Clone for InternalConfiguration

    source§

    fn clone(&self) -> InternalConfiguration

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for InternalConfiguration

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    §

    impl<T, UT> HandleAlloc<UT> for T
    where + T: Send + Sync,

    §

    fn new_handle(value: Arc<T>) -> Handle

    Create a new handle for an Arc value Read more
    §

    fn clone_handle(handle: Handle) -> Handle

    Clone a handle Read more
    §

    fn consume_handle(handle: Handle) -> Arc<T>

    Consume a handle, getting back the initial Arc<>
    §

    fn get_arc(handle: Handle) -> Arc<Self>

    Get a clone of the Arc<> using a “borrowed” handle. Read more
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/docs/glean_core/struct.LabeledMetric.html b/docs/glean_core/struct.LabeledMetric.html index 6f8a156696..7db523346e 100644 --- a/docs/glean_core/struct.LabeledMetric.html +++ b/docs/glean_core/struct.LabeledMetric.html @@ -1,8 +1,13 @@ -LabeledMetric in glean_core - Rust
    pub struct LabeledMetric<T> { /* private fields */ }
    Expand description

    A labeled metric.

    +LabeledMetric in glean_core - Rust +
    pub struct LabeledMetric<T> { /* private fields */ }
    Expand description

    A labeled metric.

    Labeled metrics allow to record multiple sub-metrics of the same type under different string labels.

    -

    Implementations§

    Creates a new labeled metric from the given metric instance and optional list of labels.

    -

    See get for information on how static or dynamic labels are handled.

    -

    Gets a specific metric for a given label.

    +

    Implementations§

    source§

    impl<T> LabeledMetric<T>
    where + T: AllowLabeled + Clone,

    source

    pub fn new( + meta: LabeledMetricData, + labels: Option<Vec<Cow<'static, str>>> +) -> LabeledMetric<T>

    Creates a new labeled metric from the given metric instance and optional list of labels.

    +

    See get for information on how static or dynamic labels are handled.

    +
    source

    pub fn get<S: AsRef<str>>(&self, label: S) -> Arc<T>

    Gets a specific metric for a given label.

    If a set of acceptable labels were specified in the metrics.yaml file, and the given label is not in the set, it will be recorded under the special OTHER_LABEL label.

    If a set of acceptable labels was not specified in the metrics.yaml file, @@ -10,7 +15,7 @@ After that, any additional labels will be recorded under the special OTHER_LABEL label.

    Labels must be snake_case and less than 30 characters. If an invalid label is used, the metric will be recorded in the special OTHER_LABEL label.

    -

    Exported for test purposes.

    +
    source

    pub fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32

    Exported for test purposes.

    Gets the number of recorded errors for the given metric and error type.

    Arguments
    Returns

    The number of errors reported.

    -

    Trait Implementations§

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl<T: Debug> Debug for LabeledMetric<T>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    §

    impl<T> RefUnwindSafe for LabeledMetric<T>
    where + T: RefUnwindSafe,

    §

    impl<T> Send for LabeledMetric<T>
    where + T: Send + Sync,

    §

    impl<T> Sync for LabeledMetric<T>
    where + T: Send + Sync,

    §

    impl<T> Unpin for LabeledMetric<T>
    where + T: Unpin,

    §

    impl<T> UnwindSafe for LabeledMetric<T>
    where + T: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    §

    impl<T, UT> HandleAlloc<UT> for T
    where + T: Send + Sync,

    §

    fn new_handle(value: Arc<T>) -> Handle

    Create a new handle for an Arc value Read more
    §

    fn clone_handle(handle: Handle) -> Handle

    Clone a handle Read more
    §

    fn consume_handle(handle: Handle) -> Arc<T>

    Consume a handle, getting back the initial Arc<>
    §

    fn get_arc(handle: Handle) -> Arc<Self>

    Get a clone of the Arc<> using a “borrowed” handle. Read more
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/docs/glean_core/struct.MemoryDistributionMetric.html b/docs/glean_core/struct.MemoryDistributionMetric.html deleted file mode 100644 index ccfa990793..0000000000 --- a/docs/glean_core/struct.MemoryDistributionMetric.html +++ /dev/null @@ -1,53 +0,0 @@ -MemoryDistributionMetric in glean_core - Rust
    pub struct MemoryDistributionMetric { /* private fields */ }
    Expand description

    A memory distribution metric.

    -

    Memory distributions are used to accumulate and store memory sizes.

    -

    Implementations§

    Creates a new memory distribution metric.

    -

    Accumulates the provided sample in the metric.

    -
    Arguments
    -
      -
    • sample - The sample to be recorded by the metric. The sample is assumed to be in the -configured memory unit of the metric.
    • -
    -
    Notes
    -

    Values bigger than 1 Terabyte (240 bytes) are truncated -and an ErrorType::InvalidValue error is recorded.

    -

    Accumulates the provided signed samples in the metric.

    -

    This is required so that the platform-specific code can provide us with -64 bit signed integers if no u64 comparable type is available. This -will take care of filtering and reporting errors for any provided negative -sample.

    -

    Please note that this assumes that the provided samples are already in -the “unit” declared by the instance of the metric type (e.g. if the the -instance this method was called on is using MemoryUnit::Kilobyte, then -samples are assumed to be in that unit).

    -
    Arguments
    -
      -
    • samples - The vector holding the samples to be recorded by the metric.
    • -
    -
    Notes
    -

    Discards any negative value in samples and report an ErrorType::InvalidValue -for each of them.

    -

    Values bigger than 1 Terabyte (240 bytes) are truncated -and an ErrorType::InvalidValue error is recorded.

    -

    Test-only API (exported for FFI purposes).

    -

    Gets the currently stored value.

    -

    This doesn’t clear the stored value.

    -
    Arguments
    -
      -
    • ping_name - the optional name of the ping to retrieve the metric -for. Defaults to the first value in send_in_pings.
    • -
    -
    Returns
    -

    The stored value or None if nothing stored.

    -

    Exported for test purposes.

    -

    Gets the number of recorded errors for the given metric and error type.

    -
    Arguments
    -
      -
    • error - The type of error
    • -
    -
    Returns
    -

    The number of errors reported.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Access the stored metadata
    Create a new metric from this with a new name.
    Create a new metric from this with a specific label.
    Whether this metric should currently be recorded Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    -

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file diff --git a/docs/glean_core/struct.NumeratorMetric.html b/docs/glean_core/struct.NumeratorMetric.html deleted file mode 100644 index 6a60492bd8..0000000000 --- a/docs/glean_core/struct.NumeratorMetric.html +++ /dev/null @@ -1,35 +0,0 @@ -NumeratorMetric in glean_core - Rust
    pub struct NumeratorMetric(_);
    Expand description

    Developer-facing API for recording rate metrics with external denominators.

    -

    Instances of this class type are automatically generated by the parsers -at build time, allowing developers to record values that were previously -registered in the metrics.yaml file.

    -

    Implementations§

    The public constructor used by automatically generated metrics.

    -

    Increases the numerator by amount.

    -
    Arguments
    -
      -
    • amount - The amount to increase by. Should be non-negative.
    • -
    -
    Notes
    -

    Logs an error if the amount is negative.

    -

    Exported for test purposes.

    -

    Gets the currently stored value as a pair of integers.

    -

    This doesn’t clear the stored value.

    -
    Arguments
    -
      -
    • ping_name - the optional name of the ping to retrieve the metric -for. Defaults to the first value in send_in_pings.
    • -
    -
    Returns
    -

    The stored value or None if nothing stored.

    -

    Exported for test purposes.

    -

    Gets the number of recorded errors for the given metric and error type.

    -
    Arguments
    -
      -
    • error - The type of error
    • -
    -
    Returns
    -

    The number of errors reported.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Access the stored metadata
    Create a new metric from this with a new name.
    Create a new metric from this with a specific label.
    Whether this metric should currently be recorded Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    -

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file diff --git a/docs/glean_core/struct.ObjectMetric.html b/docs/glean_core/struct.ObjectMetric.html deleted file mode 100644 index a925380f13..0000000000 --- a/docs/glean_core/struct.ObjectMetric.html +++ /dev/null @@ -1,39 +0,0 @@ -ObjectMetric in glean_core - Rust
    pub struct ObjectMetric { /* private fields */ }
    Expand description

    An object metric.

    -

    Record structured data. -The value must adhere to a predefined structure and is serialized into JSON.

    -

    Implementations§

    Creates a new object metric.

    -

    Sets to the specified structure.

    -

    No additional verification is done. -The shape needs to be externally verified.

    -
    Arguments
    -
      -
    • value - the value to set.
    • -
    -

    Sets to the specified structure.

    -

    Parses the passed JSON string. -If it can’t be parsed into a valid object it records an invalid value error.

    -

    Note: This does not check the structure. This needs to be done by the wrapper.

    -
    Arguments
    -
      -
    • object - JSON representation of the object to set.
    • -
    -

    Record an InvalidValue error for this metric.

    -

    Only to be used by the RLB.

    -

    Test-only API (exported for FFI purposes).

    -

    Gets the currently stored value as JSON.

    -

    This doesn’t clear the stored value.

    -

    Exported for test purposes.

    -

    Gets the number of recorded errors for the given metric and error type.

    -
    Arguments
    -
      -
    • error - The type of error
    • -
    • ping_name - represents the optional name of the ping to retrieve the -metric for. inner to the first value in send_in_pings.
    • -
    -
    Returns
    -

    The number of errors reported.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Access the stored metadata
    Create a new metric from this with a new name.
    Create a new metric from this with a specific label.
    Whether this metric should currently be recorded Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    -

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file diff --git a/docs/glean_core/struct.PingRateLimit.html b/docs/glean_core/struct.PingRateLimit.html index dfcb839cd1..b96d33d194 100644 --- a/docs/glean_core/struct.PingRateLimit.html +++ b/docs/glean_core/struct.PingRateLimit.html @@ -1,11 +1,20 @@ -PingRateLimit in glean_core - Rust
    pub struct PingRateLimit {
    -    pub seconds_per_interval: u64,
    -    pub pings_per_interval: u32,
    -}
    Expand description

    How to specify the rate at which pings may be uploaded before they are throttled.

    -

    Fields§

    §seconds_per_interval: u64

    Length of time in seconds of a ping uploading interval.

    -
    §pings_per_interval: u32

    Number of pings that may be uploaded in a ping uploading interval.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    +PingRateLimit in glean_core - Rust +
    pub struct PingRateLimit {
    +    pub seconds_per_interval: u64,
    +    pub pings_per_interval: u32,
    +}
    Expand description

    How to specify the rate at which pings may be uploaded before they are throttled.

    +

    Fields§

    §seconds_per_interval: u64

    Length of time in seconds of a ping uploading interval.

    +
    §pings_per_interval: u32

    Number of pings that may be uploaded in a ping uploading interval.

    +

    Trait Implementations§

    source§

    impl Clone for PingRateLimit

    source§

    fn clone(&self) -> PingRateLimit

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for PingRateLimit

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    §

    impl<T, UT> HandleAlloc<UT> for T
    where + T: Send + Sync,

    §

    fn new_handle(value: Arc<T>) -> Handle

    Create a new handle for an Arc value Read more
    §

    fn clone_handle(handle: Handle) -> Handle

    Clone a handle Read more
    §

    fn consume_handle(handle: Handle) -> Arc<T>

    Consume a handle, getting back the initial Arc<>
    §

    fn get_arc(handle: Handle) -> Arc<Self>

    Get a clone of the Arc<> using a “borrowed” handle. Read more
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/docs/glean_core/struct.PingRequest.html b/docs/glean_core/struct.PingRequest.html deleted file mode 100644 index 96e8f7171c..0000000000 --- a/docs/glean_core/struct.PingRequest.html +++ /dev/null @@ -1,35 +0,0 @@ -PingRequest in glean_core - Rust

    Struct glean_core::PingRequest

    source ·
    pub struct PingRequest {
    -    pub document_id: String,
    -    pub path: String,
    -    pub body: Vec<u8>,
    -    pub headers: HeaderMap,
    -    pub body_has_info_sections: bool,
    -    pub ping_name: String,
    -}
    Expand description

    Represents a request to upload a ping.

    -

    Fields§

    §document_id: String

    The Job ID to identify this request, -this is the same as the ping UUID.

    -
    §path: String

    The path for the server to upload the ping to.

    -
    §body: Vec<u8>

    The body of the request, as a byte array. If gzip encoded, then -the headers list will contain a Content-Encoding header with -the value gzip.

    -
    §headers: HeaderMap

    A map with all the headers to be sent with the request.

    -
    §body_has_info_sections: bool

    Whether the body has {client|ping}_info sections.

    -
    §ping_name: String

    The ping’s name. Likely also somewhere in path.

    -

    Implementations§

    Creates a new builder-style structure to help build a PingRequest.

    -
    Arguments
    -
      -
    • language_binding_name - The name of the language used by the binding that instantiated this Glean instance. -This is used to build the X-Telemetry-Agent header value.
    • -
    • body_max_size - The maximum size in bytes the compressed ping body may have to be eligible for upload.
    • -
    -

    Verifies if current request is for a deletion-request ping.

    -

    Decompresses and pretty-format the ping payload

    -

    Should be used for logging when required. -This decompresses the payload in memory.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    -

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file diff --git a/docs/glean_core/struct.PingType.html b/docs/glean_core/struct.PingType.html deleted file mode 100644 index 1c7173300d..0000000000 --- a/docs/glean_core/struct.PingType.html +++ /dev/null @@ -1,31 +0,0 @@ -PingType in glean_core - Rust

    Struct glean_core::PingType

    source ·
    pub struct PingType(_);
    Expand description

    Stores information about a ping.

    -

    This is required so that given metric data queued on disk we can send -pings with the correct settings, e.g. whether it has a client_id.

    -

    Implementations§

    Creates a new ping type for the given name, whether to include the client ID and whether to -send this ping empty.

    -
    Arguments
    -
      -
    • name - The name of the ping.
    • -
    • include_client_id - Whether to include the client ID in the assembled ping when submitting.
    • -
    • send_if_empty - Whether the ping should be sent empty or not.
    • -
    • precise_timestamps - Whether the ping should use precise timestamps for the start and end time.
    • -
    • include_info_sections - Whether the ping should include the client/ping_info sections.
    • -
    • enabled - Whether or not this ping is enabled. Note: Data that would be sent on a disabled -ping will still be collected but is discarded rather than being submitted.
    • -
    • reason_codes - The valid reason codes for this ping.
    • -
    -

    Submits the ping for eventual uploading.

    -

    The ping content is assembled as soon as possible, but upload is not -guaranteed to happen immediately, as that depends on the upload policies.

    -

    If the ping currently contains no content, it will not be sent, -unless it is configured to be sent if empty.

    -
    Arguments
    -
      -
    • reason - the reason the ping was triggered. Included in the -ping_info.reason part of the payload.
    • -
    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    -

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file diff --git a/docs/glean_core/struct.QuantityMetric.html b/docs/glean_core/struct.QuantityMetric.html deleted file mode 100644 index 9d3e72e95d..0000000000 --- a/docs/glean_core/struct.QuantityMetric.html +++ /dev/null @@ -1,33 +0,0 @@ -QuantityMetric in glean_core - Rust
    pub struct QuantityMetric { /* private fields */ }
    Expand description

    A quantity metric.

    -

    Used to store explicit non-negative integers.

    -

    Implementations§

    Creates a new quantity metric.

    -

    Sets the value. Must be non-negative.

    -
    Arguments
    -
      -
    • value - The value. Must be non-negative.
    • -
    -
    Notes
    -

    Logs an error if the value is negative.

    -

    Test-only API (exported for FFI purposes).

    -

    Gets the currently stored value as an integer.

    -

    This doesn’t clear the stored value.

    -
    Arguments
    -
      -
    • ping_name - the optional name of the ping to retrieve the metric -for. Defaults to the first value in send_in_pings.
    • -
    -
    Returns
    -

    The stored value or None if nothing stored.

    -

    Exported for test purposes.

    -

    Gets the number of recorded errors for the given metric and error type.

    -
    Arguments
    -
      -
    • error - The type of error
    • -
    -
    Returns
    -

    The number of errors reported.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Access the stored metadata
    Create a new metric from this with a new name.
    Create a new metric from this with a specific label.
    Whether this metric should currently be recorded Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    -

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file diff --git a/docs/glean_core/struct.Rate.html b/docs/glean_core/struct.Rate.html deleted file mode 100644 index 09c01c83ae..0000000000 --- a/docs/glean_core/struct.Rate.html +++ /dev/null @@ -1,13 +0,0 @@ -Rate in glean_core - Rust

    Struct glean_core::Rate

    source ·
    pub struct Rate {
    -    pub numerator: i32,
    -    pub denominator: i32,
    -}
    Expand description

    A rate value as given by its numerator and denominator.

    -

    Fields§

    §numerator: i32

    A rate’s numerator

    -
    §denominator: i32

    A rate’s denominator

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Converts to this type from the input type.
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    -

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file diff --git a/docs/glean_core/struct.RateMetric.html b/docs/glean_core/struct.RateMetric.html deleted file mode 100644 index 43581084d6..0000000000 --- a/docs/glean_core/struct.RateMetric.html +++ /dev/null @@ -1,47 +0,0 @@ -RateMetric in glean_core - Rust

    Struct glean_core::RateMetric

    source ·
    pub struct RateMetric { /* private fields */ }
    Expand description

    A rate metric.

    -

    Used to determine the proportion of things via two counts:

    -
      -
    • A numerator defining the amount of times something happened,
    • -
    • A denominator counting the amount of times someting could have happened.
    • -
    -

    Both numerator and denominator can only be incremented, not decremented.

    -

    Implementations§

    Creates a new rate metric.

    -

    Increases the numerator by amount.

    -
    Arguments
    -
      -
    • glean - The Glean instance this metric belongs to.
    • -
    • amount - The amount to increase by. Should be non-negative.
    • -
    -
    Notes
    -

    Logs an error if the amount is negative.

    -

    Increases the denominator by amount.

    -
    Arguments
    -
      -
    • glean - The Glean instance this metric belongs to.
    • -
    • amount - The amount to increase by. Should be non-negative.
    • -
    -
    Notes
    -

    Logs an error if the amount is negative.

    -

    Test-only API (exported for FFI purposes).

    -

    Gets the currently stored value as a pair of integers.

    -

    This doesn’t clear the stored value.

    -
    Arguments
    -
      -
    • ping_name - the optional name of the ping to retrieve the metric -for. Defaults to the first value in send_in_pings.
    • -
    -
    Returns
    -

    The stored value or None if nothing stored.

    -

    Exported for test purposes.

    -

    Gets the number of recorded errors for the given metric and error type.

    -
    Arguments
    -
      -
    • error - The type of error
    • -
    -
    Returns
    -

    The number of errors reported.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Access the stored metadata
    Create a new metric from this with a new name.
    Create a new metric from this with a specific label.
    Whether this metric should currently be recorded Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    -

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file diff --git a/docs/glean_core/struct.RecordedEvent.html b/docs/glean_core/struct.RecordedEvent.html deleted file mode 100644 index 994d30553b..0000000000 --- a/docs/glean_core/struct.RecordedEvent.html +++ /dev/null @@ -1,21 +0,0 @@ -RecordedEvent in glean_core - Rust
    pub struct RecordedEvent {
    -    pub timestamp: u64,
    -    pub category: String,
    -    pub name: String,
    -    pub extra: Option<HashMap<String, String>>,
    -}
    Expand description

    Represents the recorded data for a single event.

    -

    Fields§

    §timestamp: u64

    The timestamp of when the event was recorded.

    -

    This allows to order events from a single process run.

    -
    §category: String

    The event’s category.

    -

    This is defined by users in the metrics file.

    -
    §name: String

    The event’s name.

    -

    This is defined by users in the metrics file.

    -
    §extra: Option<HashMap<String, String>>

    A map of all extra data values.

    -

    The set of allowed extra keys is defined by users in the metrics file.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Deserialize this value from the given Serde deserializer. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    Serialize this value into the given Serde serializer. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    -

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file diff --git a/docs/glean_core/struct.RecordedExperiment.html b/docs/glean_core/struct.RecordedExperiment.html deleted file mode 100644 index ee53f14fb5..0000000000 --- a/docs/glean_core/struct.RecordedExperiment.html +++ /dev/null @@ -1,19 +0,0 @@ -RecordedExperiment in glean_core - Rust
    pub struct RecordedExperiment {
    -    pub branch: String,
    -    pub extra: Option<HashMap<String, String>>,
    -}
    Expand description

    Deserialized experiment data.

    -

    Fields§

    §branch: String

    The experiment’s branch as set through set_experiment_active.

    -
    §extra: Option<HashMap<String, String>>

    Any extra data associated with this experiment through set_experiment_active. -Note: Option required to keep backwards-compatibility.

    -

    Implementations§

    Gets the recorded experiment data as a JSON value.

    -

    For JSON, we don’t want to include {"extra": null} – we just want to skip -extra entirely. Unfortunately, we can’t use a serde field annotation for this, -since that would break bincode serialization, which doesn’t support skipping -fields. Therefore, we use a custom serialization function just for JSON here.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Deserialize this value from the given Serde deserializer. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    Serialize this value into the given Serde serializer. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    -

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file diff --git a/docs/glean_core/struct.StringListMetric.html b/docs/glean_core/struct.StringListMetric.html deleted file mode 100644 index b33bb5c6da..0000000000 --- a/docs/glean_core/struct.StringListMetric.html +++ /dev/null @@ -1,42 +0,0 @@ -StringListMetric in glean_core - Rust
    pub struct StringListMetric { /* private fields */ }
    Expand description

    A string list metric.

    -

    This allows appending a string value with arbitrary content to a list.

    -

    Implementations§

    Creates a new string list metric.

    -

    Adds a new string to the list.

    -
    Arguments
    -
      -
    • value - The string to add.
    • -
    -
    Notes
    -

    Truncates the value if it is longer than MAX_STRING_LENGTH bytes and logs an error.

    -

    Sets to a specific list of strings.

    -
    Arguments
    -
      -
    • value - The list of string to set the metric to.
    • -
    -
    Notes
    -

    If passed an empty list, records an error and returns.

    -

    Truncates the list if it is longer than MAX_LIST_LENGTH and logs an error.

    -

    Truncates any value in the list if it is longer than MAX_STRING_LENGTH and logs an error.

    -

    Test-only API (exported for FFI purposes).

    -

    Gets the currently-stored values.

    -

    This doesn’t clear the stored value.

    -
    Arguments
    -
      -
    • ping_name - the optional name of the ping to retrieve the metric -for. Defaults to the first value in send_in_pings.
    • -
    -
    Returns
    -

    The stored value or None if nothing stored.

    -

    Exported for test purposes.

    -

    Gets the number of recorded errors for the given metric and error type.

    -
    Arguments
    -
      -
    • error - The type of error
    • -
    -
    Returns
    -

    The number of errors reported.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Access the stored metadata
    Create a new metric from this with a new name.
    Create a new metric from this with a specific label.
    Whether this metric should currently be recorded Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    -

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file diff --git a/docs/glean_core/struct.StringMetric.html b/docs/glean_core/struct.StringMetric.html deleted file mode 100644 index 1a74635f58..0000000000 --- a/docs/glean_core/struct.StringMetric.html +++ /dev/null @@ -1,34 +0,0 @@ -StringMetric in glean_core - Rust
    pub struct StringMetric { /* private fields */ }
    Expand description

    A string metric.

    -

    Record an Unicode string value with arbitrary content. -Strings are length-limited to MAX_LENGTH_VALUE bytes.

    -

    Implementations§

    Creates a new string metric.

    -

    Sets to the specified value.

    -
    Arguments
    -
      -
    • value - The string to set the metric to.
    • -
    -
    Notes
    -

    Truncates the value if it is longer than MAX_LENGTH_VALUE bytes and logs an error.

    -

    Test-only API (exported for FFI purposes).

    -

    Gets the currently stored value as a string.

    -

    This doesn’t clear the stored value.

    -
    Arguments
    -
      -
    • ping_name - the optional name of the ping to retrieve the metric -for. Defaults to the first value in send_in_pings.
    • -
    -
    Returns
    -

    The stored value or None if nothing stored.

    -

    Exported for test purposes.

    -

    Gets the number of recorded errors for the given metric and error type.

    -
    Arguments
    -
      -
    • error - The type of error
    • -
    -
    Returns
    -

    The number of errors reported.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Access the stored metadata
    Create a new metric from this with a new name.
    Create a new metric from this with a specific label.
    Whether this metric should currently be recorded Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    -

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file diff --git a/docs/glean_core/struct.TextMetric.html b/docs/glean_core/struct.TextMetric.html deleted file mode 100644 index 264b4ef3ff..0000000000 --- a/docs/glean_core/struct.TextMetric.html +++ /dev/null @@ -1,36 +0,0 @@ -TextMetric in glean_core - Rust

    Struct glean_core::TextMetric

    source ·
    pub struct TextMetric { /* private fields */ }
    Expand description

    A text metric.

    -

    Records a single long Unicode text, -used when the limits on String are too low. -Text is length-limited to MAX_LENGTH_VALUE bytes.

    -

    Implementations§

    Creates a new text metric.

    -

    Sets to the specified value.

    -
    Arguments
    -
      -
    • value - The text to set the metric to.
    • -
    -
    Notes
    -

    Truncates the value (at codepoint boundaries) if it is longer than MAX_LENGTH_VALUE bytes -and logs an error.

    -

    Test-only API (exported for FFI purposes).

    -

    Gets the currently stored value as a string.

    -

    This doesn’t clear the stored value.

    -
    Arguments
    -
      -
    • ping_name - the optional name of the ping to retrieve the metric -for. Defaults to the first value in send_in_pings.
    • -
    -
    Returns
    -

    The stored value or None if nothing stored.

    -

    Exported for test purposes.

    -

    Gets the number of recorded errors for the given metric and error type.

    -
    Arguments
    -
      -
    • error - The type of error
    • -
    -
    Returns
    -

    The number of errors reported.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Access the stored metadata
    Create a new metric from this with a new name.
    Create a new metric from this with a specific label.
    Whether this metric should currently be recorded Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    -

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file diff --git a/docs/glean_core/struct.TimerId.html b/docs/glean_core/struct.TimerId.html deleted file mode 100644 index 5923229406..0000000000 --- a/docs/glean_core/struct.TimerId.html +++ /dev/null @@ -1,13 +0,0 @@ -TimerId in glean_core - Rust

    Struct glean_core::TimerId

    source ·
    pub struct TimerId {
    -    pub id: u64,
    -}
    Expand description

    Identifier for a running timer.

    -

    Its internals are considered private, -but due to UniFFI’s behavior we expose its field for now.

    -

    Fields§

    §id: u64

    This timer’s id.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Converts to this type from the input type.
    Converts to this type from the input type.
    Feeds this value into the given Hasher. Read more
    Feeds a slice of this type into the given Hasher. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    -

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file diff --git a/docs/glean_core/struct.TimespanMetric.html b/docs/glean_core/struct.TimespanMetric.html deleted file mode 100644 index 6c0b945198..0000000000 --- a/docs/glean_core/struct.TimespanMetric.html +++ /dev/null @@ -1,60 +0,0 @@ -TimespanMetric in glean_core - Rust
    pub struct TimespanMetric { /* private fields */ }
    Expand description

    A timespan metric.

    -

    Timespans are used to make a measurement of how much time is spent in a particular task.

    -

    Implementations§

    Creates a new timespan metric.

    -

    Starts tracking time for the provided metric.

    -

    This records an error if it’s already tracking time (i.e. start was -already called with no corresponding -set_stop): in that case the original start -time will be preserved.

    -

    Stops tracking time for the provided metric. Sets the metric to the elapsed time.

    -

    This will record an error if no set_start was called.

    -

    Aborts a previous set_start call. No -error is recorded if no set_start was -called.

    -

    Explicitly sets the timespan value.

    -

    This API should only be used if your library or application requires -recording times in a way that can not make use of -set_start/set_stop/cancel.

    -

    Care should be taken using this if the ping lifetime might contain more -than one timespan measurement. To be safe, -set_raw should generally be followed by -sending a custom ping containing the timespan.

    -
    Arguments
    -
      -
    • elapsed - The elapsed time to record.
    • -
    -

    Explicitly sets the timespan value in nanoseconds.

    -

    This API should only be used if your library or application requires -recording times in a way that can not make use of -set_start/set_stop/cancel.

    -

    Care should be taken using this if the ping lifetime might contain more -than one timespan measurement. To be safe, -set_raw should generally be followed by -sending a custom ping containing the timespan.

    -
    Arguments
    -
      -
    • elapsed_nanos - The elapsed time to record, in nanoseconds.
    • -
    -

    Test-only API (exported for FFI purposes).

    -

    Gets the currently stored value as an integer.

    -

    This doesn’t clear the stored value.

    -
    Arguments
    -
      -
    • ping_name - the optional name of the ping to retrieve the metric -for. Defaults to the first value in send_in_pings.
    • -
    -
    Returns
    -

    The stored value or None if nothing stored.

    -

    Exported for test purposes.

    -

    Gets the number of recorded errors for the given metric and error type.

    -
    Arguments
    -
      -
    • error - The type of error
    • -
    -
    Returns
    -

    The number of errors reported.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Access the stored metadata
    Create a new metric from this with a new name.
    Create a new metric from this with a specific label.
    Whether this metric should currently be recorded Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    -

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file diff --git a/docs/glean_core/struct.TimingDistributionMetric.html b/docs/glean_core/struct.TimingDistributionMetric.html deleted file mode 100644 index 6d952ab3fc..0000000000 --- a/docs/glean_core/struct.TimingDistributionMetric.html +++ /dev/null @@ -1,118 +0,0 @@ -TimingDistributionMetric in glean_core - Rust
    pub struct TimingDistributionMetric { /* private fields */ }
    Expand description

    A timing distribution metric.

    -

    Timing distributions are used to accumulate and store time measurement, for analyzing distributions of the timing data.

    -

    Implementations§

    Creates a new timing distribution metric.

    -

    Starts tracking time for the provided metric.

    -

    This records an error if it’s already tracking time (i.e. -set_start was already called with no -corresponding set_stop_and_accumulate): in -that case the original start time will be preserved.

    -
    Arguments
    -
      -
    • start_time - Timestamp in nanoseconds.
    • -
    -
    Returns
    -

    A unique TimerId for the new timer.

    -

    Stops tracking time for the provided metric and associated timer id.

    -

    Adds a count to the corresponding bucket in the timing distribution. -This will record an error if no -set_start was called.

    -
    Arguments
    -
      -
    • id - The TimerId to associate with this timing. This allows -for concurrent timing of events associated with different ids to the -same timespan metric.
    • -
    • stop_time - Timestamp in nanoseconds.
    • -
    -

    Aborts a previous start call.

    -

    No error is recorded if no start was called.

    -
    Arguments
    -
      -
    • id - The TimerId to associate with this timing. This allows -for concurrent timing of events associated with different ids to the -same timing distribution metric.
    • -
    -

    Accumulates the provided signed samples in the metric.

    -

    This is required so that the platform-specific code can provide us with -64 bit signed integers if no u64 comparable type is available. This -will take care of filtering and reporting errors for any provided negative -sample.

    -

    Please note that this assumes that the provided samples are already in -the “unit” declared by the instance of the metric type (e.g. if the -instance this method was called on is using TimeUnit::Second, then -samples are assumed to be in that unit).

    -
    Arguments
    -
      -
    • samples - The vector holding the samples to be recorded by the metric.
    • -
    -
    Notes
    -

    Discards any negative value in samples and report an ErrorType::InvalidValue -for each of them. Reports an ErrorType::InvalidOverflow error for samples that -are longer than MAX_SAMPLE_TIME.

    -

    Accumulates precisely one signed sample and appends it to the metric.

    -

    Precludes the need for a collection in the most common use case.

    -

    Sign is required so that the platform-specific code can provide us with -a 64 bit signed integer if no u64 comparable type is available. This -will take care of filtering and reporting errors for any provided negative -sample.

    -

    Please note that this assumes that the provided sample is already in -the “unit” declared by the instance of the metric type (e.g. if the -instance this method was called on is using crate::TimeUnit::Second, then -sample is assumed to be in that unit).

    -
    Arguments
    -
      -
    • sample - The singular sample to be recorded by the metric.
    • -
    -
    Notes
    -

    Discards any negative value and reports an ErrorType::InvalidValue. -Reports an ErrorType::InvalidOverflow error if the sample is longer than -MAX_SAMPLE_TIME.

    -

    Accumulates the provided samples in the metric.

    -
    Arguments
    -
      -
    • samples - A list of samples recorded by the metric. -Samples must be in nanoseconds.
    • -
    -
    Notes
    -

    Reports an ErrorType::InvalidOverflow error for samples that -are longer than MAX_SAMPLE_TIME.

    -

    Accumulates precisely one duration to the metric.

    -

    Like TimingDistribution::accumulate_single_sample, but for use when the -duration is:

    -
      -
    • measured externally, or
    • -
    • is in a unit different from the timing_distribution’s internal TimeUnit.
    • -
    -
    Arguments
    -
      -
    • duration - The single duration to be recorded in the metric.
    • -
    -
    Notes
    -

    Reports an ErrorType::InvalidOverflow error if duration is longer than -MAX_SAMPLE_TIME.

    -

    The API client is responsible for ensuring that duration is derived from a -monotonic clock source that behaves consistently over computer sleep across -the application’s platforms. Otherwise the resulting data may not share the same -guarantees that other timing_distribution metrics’ data do.

    -

    Test-only API (exported for FFI purposes).

    -

    Gets the currently stored value as an integer.

    -

    This doesn’t clear the stored value.

    -
    Arguments
    -
      -
    • ping_name - the optional name of the ping to retrieve the metric -for. Defaults to the first value in send_in_pings.
    • -
    -
    Returns
    -

    The stored value or None if nothing stored.

    -

    Exported for test purposes.

    -

    Gets the number of recorded errors for the given metric and error type.

    -
    Arguments
    -
      -
    • error - The type of error
    • -
    -
    Returns
    -

    The number of errors reported.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Access the stored metadata
    Create a new metric from this with a new name.
    Create a new metric from this with a specific label.
    Whether this metric should currently be recorded Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    -

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file diff --git a/docs/glean_core/struct.UrlMetric.html b/docs/glean_core/struct.UrlMetric.html deleted file mode 100644 index 51b65b7562..0000000000 --- a/docs/glean_core/struct.UrlMetric.html +++ /dev/null @@ -1,34 +0,0 @@ -UrlMetric in glean_core - Rust

    Struct glean_core::UrlMetric

    source ·
    pub struct UrlMetric { /* private fields */ }
    Expand description

    A URL metric.

    -

    Record an Unicode string value a URL content. -The URL is length-limited to MAX_URL_LENGTH bytes.

    -

    Implementations§

    Creates a new string metric.

    -

    Sets to the specified stringified URL.

    -
    Arguments
    -
      -
    • value - The stringified URL to set the metric to.
    • -
    -
    Notes
    -

    Truncates the value if it is longer than MAX_URL_LENGTH bytes and logs an error.

    -

    Test-only API (exported for FFI purposes).

    -

    Gets the currently stored value as a string.

    -

    This doesn’t clear the stored value.

    -
    Arguments
    -
      -
    • ping_name - the optional name of the ping to retrieve the metric -for. Defaults to the first value in send_in_pings.
    • -
    -
    Returns
    -

    The stored value or None if nothing stored.

    -

    Exported for test purposes.

    -

    Gets the number of recorded errors for the given metric and error type.

    -
    Arguments
    -
      -
    • error - The type of error
    • -
    -
    Returns
    -

    The number of errors reported.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Access the stored metadata
    Create a new metric from this with a new name.
    Create a new metric from this with a specific label.
    Whether this metric should currently be recorded Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    -

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file diff --git a/docs/glean_core/struct.UuidMetric.html b/docs/glean_core/struct.UuidMetric.html deleted file mode 100644 index cc87fc3e3a..0000000000 --- a/docs/glean_core/struct.UuidMetric.html +++ /dev/null @@ -1,32 +0,0 @@ -UuidMetric in glean_core - Rust

    Struct glean_core::UuidMetric

    source ·
    pub struct UuidMetric { /* private fields */ }
    Expand description

    An UUID metric.

    -

    Stores UUID v4 (randomly generated) values.

    -

    Implementations§

    Creates a new UUID metric

    -

    Sets to the specified value.

    -
    Arguments
    -
      -
    • value - The Uuid to set the metric to.
    • -
    -

    Generates a new random [Uuid’] and sets the metric to it.

    -

    Test-only API (exported for FFI purposes).

    -

    Gets the currently stored value as a string.

    -

    This doesn’t clear the stored value.

    -
    Arguments
    -
      -
    • ping_name - the optional name of the ping to retrieve the metric -for. Defaults to the first value in send_in_pings.
    • -
    -
    Returns
    -

    The stored value or None if nothing stored.

    -

    Exported for test purposes.

    -

    Gets the number of recorded errors for the given metric and error type.

    -
    Arguments
    -
      -
    • error - The type of error
    • -
    -
    Returns
    -

    The number of errors reported.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Access the stored metadata
    Create a new metric from this with a new name.
    Create a new metric from this with a specific label.
    Whether this metric should currently be recorded Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    -

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file diff --git a/docs/glean_core/trait.AllowLabeled.html b/docs/glean_core/trait.AllowLabeled.html index 5f3372f5c9..745525e492 100644 --- a/docs/glean_core/trait.AllowLabeled.html +++ b/docs/glean_core/trait.AllowLabeled.html @@ -1,5 +1,8 @@ -AllowLabeled in glean_core - Rust
    pub trait AllowLabeled: MetricType {
    +AllowLabeled in glean_core - Rust
    +    
    pub trait AllowLabeled: MetricType {
    +    // Required method
         fn new_labeled(meta: LabeledMetricData) -> Self;
    -}
    Expand description

    Trait for metrics that can be nested inside a labeled metric.

    -

    Required Methods§

    Create a new labeled metric.

    -

    Implementors§

    \ No newline at end of file +}
    Expand description

    Trait for metrics that can be nested inside a labeled metric.

    +

    Required Methods§

    source

    fn new_labeled(meta: LabeledMetricData) -> Self

    Create a new labeled metric.

    +

    Object Safety§

    This trait is not object safe.

    Implementors§

    source§

    impl<T> AllowLabeled for T
    where + T: MetricType + Sealed,

    \ No newline at end of file diff --git a/docs/glean_core/trait.GleanEventListener.html b/docs/glean_core/trait.GleanEventListener.html index d90075af92..2f247192b5 100644 --- a/docs/glean_core/trait.GleanEventListener.html +++ b/docs/glean_core/trait.GleanEventListener.html @@ -1,6 +1,8 @@ -GleanEventListener in glean_core - Rust
    pub trait GleanEventListener: Send {
    -    fn on_event_recorded(&self, id: String);
    -}
    Expand description

    A callback handler that receives the base identifier of recorded events +GleanEventListener in glean_core - Rust

    +
    pub trait GleanEventListener: Send {
    +    // Required method
    +    fn on_event_recorded(&self, id: String);
    +}
    Expand description

    A callback handler that receives the base identifier of recorded events The identifier is in the format: <category>.<name>

    -

    Required Methods§

    Called when an event is recorded, indicating the id of the event

    -

    Implementors§

    \ No newline at end of file +

    Required Methods§

    source

    fn on_event_recorded(&self, id: String)

    Called when an event is recorded, indicating the id of the event

    +

    Implementors§

    \ No newline at end of file diff --git a/docs/glean_core/trait.OnGleanEvents.html b/docs/glean_core/trait.OnGleanEvents.html index 9988cba4d6..6bafb55bb7 100644 --- a/docs/glean_core/trait.OnGleanEvents.html +++ b/docs/glean_core/trait.OnGleanEvents.html @@ -1,22 +1,25 @@ -OnGleanEvents in glean_core - Rust
    pub trait OnGleanEvents: Send {
    +OnGleanEvents in glean_core - Rust
    +    
    pub trait OnGleanEvents: Send {
    +    // Required methods
         fn initialize_finished(&self);
    -    fn trigger_upload(&self) -> Result<(), CallbackError>;
    -    fn start_metrics_ping_scheduler(&self) -> bool;
    -    fn cancel_uploads(&self) -> Result<(), CallbackError>;
    +    fn trigger_upload(&self) -> Result<(), CallbackError>;
    +    fn start_metrics_ping_scheduler(&self) -> bool;
    +    fn cancel_uploads(&self) -> Result<(), CallbackError>;
     
    -    fn shutdown(&self) -> Result<(), CallbackError> { ... }
    -}
    Expand description

    A callback object used to trigger actions on the foreign-language side.

    + // Provided method + fn shutdown(&self) -> Result<(), CallbackError> { ... } +}
    Expand description

    A callback object used to trigger actions on the foreign-language side.

    A callback object is stored in glean-core for the entire lifetime of the application.

    -

    Required Methods§

    Initialization finished.

    +

    Required Methods§

    source

    fn initialize_finished(&self)

    Initialization finished.

    The language SDK can do additional things from within the same initializer thread, e.g. starting to observe application events for foreground/background behavior. The observer then needs to call the respective client activity API.

    -

    Trigger the uploader whenever a ping was submitted.

    +
    source

    fn trigger_upload(&self) -> Result<(), CallbackError>

    Trigger the uploader whenever a ping was submitted.

    This should not block. The uploader needs to asynchronously poll Glean for new pings to upload.

    -

    Start the Metrics Ping Scheduler.

    -

    Called when upload is disabled and uploads should be stopped

    -

    Provided Methods§

    Called on shutdown, before glean-core is fully shutdown.

    +
    source

    fn start_metrics_ping_scheduler(&self) -> bool

    Start the Metrics Ping Scheduler.

    +
    source

    fn cancel_uploads(&self) -> Result<(), CallbackError>

    Called when upload is disabled and uploads should be stopped

    +

    Provided Methods§

    source

    fn shutdown(&self) -> Result<(), CallbackError>

    Called on shutdown, before glean-core is fully shutdown.

    • This MUST NOT put any new tasks on the dispatcher.
        @@ -29,4 +32,4 @@
    -

    Implementors§

    \ No newline at end of file +

    Implementors§

    \ No newline at end of file diff --git a/docs/glean_core/traits/enum.EventRecordingError.html b/docs/glean_core/traits/enum.EventRecordingError.html index 50d7055689..b059200c7e 100644 --- a/docs/glean_core/traits/enum.EventRecordingError.html +++ b/docs/glean_core/traits/enum.EventRecordingError.html @@ -1,11 +1,19 @@ -EventRecordingError in glean_core::traits - Rust
    pub enum EventRecordingError {
    +EventRecordingError in glean_core::traits - Rust
    +    
    pub enum EventRecordingError {
         InvalidId,
         InvalidExtraKey,
    -}
    Expand description

    The possible errors when parsing to an extra key.

    -

    Variants§

    §

    InvalidId

    The id doesn’t correspond to a valid extra key

    +}
    Expand description

    The possible errors when parsing to an extra key.

    +

    Variants§

    §

    InvalidId

    The id doesn’t correspond to a valid extra key

    §

    InvalidExtraKey

    The value doesn’t correspond to a valid extra key

    -

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    +

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    §

    impl<T, UT> HandleAlloc<UT> for T
    where + T: Send + Sync,

    §

    fn new_handle(value: Arc<T>) -> Handle

    Create a new handle for an Arc value Read more
    §

    fn clone_handle(handle: Handle) -> Handle

    Clone a handle Read more
    §

    fn consume_handle(handle: Handle) -> Arc<T>

    Consume a handle, getting back the initial Arc<>
    §

    fn get_arc(handle: Handle) -> Arc<Self>

    Get a clone of the Arc<> using a “borrowed” handle. Read more
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/docs/glean_core/traits/enum.HistogramType.html b/docs/glean_core/traits/enum.HistogramType.html index dc28982633..0d4dfa81ee 100644 --- a/docs/glean_core/traits/enum.HistogramType.html +++ b/docs/glean_core/traits/enum.HistogramType.html @@ -1,11 +1,25 @@ -HistogramType in glean_core::traits - Rust
    pub enum HistogramType {
    +HistogramType in glean_core::traits - Rust
    +    
    pub enum HistogramType {
         Linear,
         Exponential,
    -}
    Expand description

    Different kinds of histograms.

    -

    Variants§

    §

    Linear

    A histogram with linear distributed buckets.

    +}
    Expand description

    Different kinds of histograms.

    +

    Variants§

    §

    Linear

    A histogram with linear distributed buckets.

    §

    Exponential

    A histogram with exponential distributed buckets.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Deserialize this value from the given Serde deserializer. Read more
    Serialize this value into the given Serde serializer. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Clone for HistogramType

    source§

    fn clone(&self) -> HistogramType

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for HistogramType

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<'de> Deserialize<'de> for HistogramType

    source§

    fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
    where + __D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    source§

    impl Serialize for HistogramType

    source§

    fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
    where + __S: Serializer,

    Serialize this value into the given Serde serializer. Read more
    source§

    impl TryFrom<i32> for HistogramType

    §

    type Error = Error

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: i32) -> Result<HistogramType, Self::Error>

    Performs the conversion.
    source§

    impl Copy for HistogramType

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> EncodableKey for T
    where + T: Serialize,

    §

    fn to_bytes(&self) -> Result<Vec<u8>, DataError>

    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    §

    impl<T, UT> HandleAlloc<UT> for T
    where + T: Send + Sync,

    §

    fn new_handle(value: Arc<T>) -> Handle

    Create a new handle for an Arc value Read more
    §

    fn clone_handle(handle: Handle) -> Handle

    Clone a handle Read more
    §

    fn consume_handle(handle: Handle) -> Arc<T>

    Consume a handle, getting back the initial Arc<>
    §

    fn get_arc(handle: Handle) -> Arc<Self>

    Get a clone of the Arc<> using a “borrowed” handle. Read more
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<V> ObjectSerialize for V
    where + V: Serialize + for<'de> Deserialize<'de>,

    source§

    fn from_str(obj: &str) -> Result<V, ObjectError>

    Deserialize the object from its JSON representation. Read more
    source§

    fn into_serialized_object(self) -> Result<Value, ObjectError>

    Serialize this object into a JSON string.
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> DeserializeOwned for T
    where + T: for<'de> Deserialize<'de>,

    \ No newline at end of file diff --git a/docs/glean_core/traits/enum.NoExtraKeys.html b/docs/glean_core/traits/enum.NoExtraKeys.html index e9cafcad39..7a243ea767 100644 --- a/docs/glean_core/traits/enum.NoExtraKeys.html +++ b/docs/glean_core/traits/enum.NoExtraKeys.html @@ -1,12 +1,23 @@ -NoExtraKeys in glean_core::traits - Rust
    pub enum NoExtraKeys {}
    Expand description

    Default of no extra keys for events.

    +NoExtraKeys in glean_core::traits - Rust +
    pub enum NoExtraKeys {}
    Expand description

    Default of no extra keys for events.

    An enum with no values for convenient use as the default set of extra keys -that an EventMetric can accept.

    +that an EventMetric can accept.

    Note: There exist no values for this enum, it can never exist. It its equivalent to the never / ! type.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    List of allowed extra keys as strings.
    Convert the event extras into 2 lists: Read more
    Feeds this value into the given Hasher. Read more
    Feeds a slice of this type into the given Hasher. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Clone for NoExtraKeys

    source§

    fn clone(&self) -> NoExtraKeys

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for NoExtraKeys

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl ExtraKeys for NoExtraKeys

    source§

    const ALLOWED_KEYS: &'static [&'static str] = _

    List of allowed extra keys as strings.
    source§

    fn into_ffi_extra(self) -> HashMap<String, String>

    Convert the event extras into 2 lists: Read more
    source§

    impl Hash for NoExtraKeys

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq for NoExtraKeys

    source§

    fn eq(&self, other: &NoExtraKeys) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl TryFrom<&str> for NoExtraKeys

    §

    type Error = EventRecordingError

    The type returned in the event of a conversion error.
    source§

    fn try_from(_value: &str) -> Result<Self, Self::Error>

    Performs the conversion.
    source§

    impl TryFrom<i32> for NoExtraKeys

    §

    type Error = EventRecordingError

    The type returned in the event of a conversion error.
    source§

    fn try_from(_value: i32) -> Result<Self, Self::Error>

    Performs the conversion.
    source§

    impl Copy for NoExtraKeys

    source§

    impl Eq for NoExtraKeys

    source§

    impl StructuralEq for NoExtraKeys

    source§

    impl StructuralPartialEq for NoExtraKeys

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    §

    impl<T, UT> HandleAlloc<UT> for T
    where + T: Send + Sync,

    §

    fn new_handle(value: Arc<T>) -> Handle

    Create a new handle for an Arc value Read more
    §

    fn clone_handle(handle: Handle) -> Handle

    Clone a handle Read more
    §

    fn consume_handle(handle: Handle) -> Arc<T>

    Consume a handle, getting back the initial Arc<>
    §

    fn get_arc(handle: Handle) -> Arc<Self>

    Get a clone of the Arc<> using a “borrowed” handle. Read more
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/docs/glean_core/traits/index.html b/docs/glean_core/traits/index.html index 5c321590a9..d2836a0666 100644 --- a/docs/glean_core/traits/index.html +++ b/docs/glean_core/traits/index.html @@ -1,6 +1,7 @@ -glean_core::traits - Rust

    Module glean_core::traits

    source ·
    Expand description

    API definitions for the different metric types supported by the Glean SDK.

    +glean_core::traits - Rust +

    Module glean_core::traits

    source ·
    Expand description

    API definitions for the different metric types supported by the Glean SDK.

    Individual metric types implement this trait to expose the specific metrics API. It can be used by wrapping implementations to guarantee API conformance.

    -

    Structs

    This type represents all possible errors that can occur when serializing or deserializing an object from/to JSON.

    Enums

    The possible errors when parsing to an extra key.
    Different kinds of histograms.
    Default of no extra keys for events.

    Traits

    A description for the BooleanMetric type.
    A description for the CounterMetric type.
    A description for the -CustomDistributionMetric type.
    A description for the DatetimeMetric type.
    A description for the EventMetric type.
    Extra keys for events.
    A description for the LabeledMetric type.
    A description for the -MemoryDistributionMetric type.
    A description for the NumeratorMetric subtype of the RateMetric type.
    An object that can be serialized into JSON.
    A description for the PingType type.
    A description for the QuantityMetric type.
    A description for the RateMetric type.
    A description for the StringMetric type.
    A description for the StringListMetric type.
    A description for the TextMetric type.
    A description for the TimespanMetric type.
    A description for the TimingDistributionMetric type.
    A description for the UrlMetric type.
    A description for the UuidMetric type.
    \ No newline at end of file +

    Structs

    • This type represents all possible errors that can occur when serializing or deserializing an object from/to JSON.

    Enums

    Traits

    \ No newline at end of file diff --git a/docs/glean_core/traits/sidebar-items.js b/docs/glean_core/traits/sidebar-items.js index 9dab5fdb70..391f09e0c8 100644 --- a/docs/glean_core/traits/sidebar-items.js +++ b/docs/glean_core/traits/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"enum":[["EventRecordingError","The possible errors when parsing to an extra key."],["HistogramType","Different kinds of histograms."],["NoExtraKeys","Default of no extra keys for events."]],"struct":[["ObjectError","This type represents all possible errors that can occur when serializing or deserializing an object from/to JSON."]],"trait":[["Boolean","A description for the `BooleanMetric` type."],["Counter","A description for the `CounterMetric` type."],["CustomDistribution","A description for the `CustomDistributionMetric` type."],["Datetime","A description for the `DatetimeMetric` type."],["Event","A description for the `EventMetric` type."],["ExtraKeys","Extra keys for events."],["Labeled","A description for the `LabeledMetric` type."],["MemoryDistribution","A description for the `MemoryDistributionMetric` type."],["Numerator","A description for the `NumeratorMetric` subtype of the `RateMetric` type."],["ObjectSerialize","An object that can be serialized into JSON."],["Ping","A description for the `PingType` type."],["Quantity","A description for the `QuantityMetric` type."],["Rate","A description for the `RateMetric` type."],["String","A description for the `StringMetric` type."],["StringList","A description for the `StringListMetric` type."],["Text","A description for the `TextMetric` type."],["Timespan","A description for the `TimespanMetric` type."],["TimingDistribution","A description for the `TimingDistributionMetric` type."],["Url","A description for the `UrlMetric` type."],["Uuid","A description for the `UuidMetric` type."]]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"enum":["EventRecordingError","HistogramType","NoExtraKeys"],"struct":["ObjectError"],"trait":["Boolean","Counter","CustomDistribution","Datetime","Event","ExtraKeys","Labeled","MemoryDistribution","Numerator","ObjectSerialize","Ping","Quantity","Rate","String","StringList","Text","Timespan","TimingDistribution","Url","Uuid"]}; \ No newline at end of file diff --git a/docs/glean_core/traits/struct.ObjectError.html b/docs/glean_core/traits/struct.ObjectError.html index 3ac84ca3d1..2d7f015e4f 100644 --- a/docs/glean_core/traits/struct.ObjectError.html +++ b/docs/glean_core/traits/struct.ObjectError.html @@ -1,7 +1,15 @@ -ObjectError in glean_core::traits - Rust
    pub struct ObjectError(_);
    Expand description

    This type represents all possible errors that can occur when serializing or deserializing an object from/to JSON.

    -

    Trait Implementations§

    Formats the value using the given formatter. Read more
    Formats the value using the given formatter. Read more
    The lower-level source of this error, if any. Read more
    👎Deprecated since 1.42.0: use the Display impl or to_string()
    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    +ObjectError in glean_core::traits - Rust +
    pub struct ObjectError(/* private fields */);
    Expand description

    This type represents all possible errors that can occur when serializing or deserializing an object from/to JSON.

    +

    Trait Implementations§

    source§

    impl Debug for ObjectError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for ObjectError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for ObjectError

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

    The lower-level source of this error, if any. Read more
    1.0.0 · source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    §

    impl<T, UT> HandleAlloc<UT> for T
    where + T: Send + Sync,

    §

    fn new_handle(value: Arc<T>) -> Handle

    Create a new handle for an Arc value Read more
    §

    fn clone_handle(handle: Handle) -> Handle

    Clone a handle Read more
    §

    fn consume_handle(handle: Handle) -> Arc<T>

    Consume a handle, getting back the initial Arc<>
    §

    fn get_arc(handle: Handle) -> Arc<Self>

    Get a clone of the Arc<> using a “borrowed” handle. Read more
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    🔬This is a nightly-only experimental API. (provide_any)
    Data providers should implement this method to provide all values they are able to -provide by using demand. Read more
    Converts the given value to a String. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/docs/glean_core/traits/trait.Boolean.html b/docs/glean_core/traits/trait.Boolean.html index 941b5a7a97..e5280db357 100644 --- a/docs/glean_core/traits/trait.Boolean.html +++ b/docs/glean_core/traits/trait.Boolean.html @@ -1,16 +1,24 @@ -Boolean in glean_core::traits - Rust
    pub trait Boolean {
    -    fn set(&self, value: bool);
    -    fn test_get_value<'a, S: Into<Option<&'a str>>>(
            &self,
            ping_name: S
        ) -> Option<bool>; - fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32; -}
    Expand description

    A description for the BooleanMetric type.

    +Boolean in glean_core::traits - Rust +
    pub trait Boolean {
    +    // Required methods
    +    fn set(&self, value: bool);
    +    fn test_get_value<'a, S: Into<Option<&'a str>>>(
    +        &self,
    +        ping_name: S
    +    ) -> Option<bool>;
    +    fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32;
    +}
    Expand description

    A description for the BooleanMetric type.

    When changing this trait, make sure all the operations are implemented in the related type in ../metrics/.

    -

    Required Methods§

    Sets to the specified boolean value.

    +

    Required Methods§

    source

    fn set(&self, value: bool)

    Sets to the specified boolean value.

    Arguments
    • value - the value to set.
    -

    Exported for test purposes.

    +
    source

    fn test_get_value<'a, S: Into<Option<&'a str>>>( + &self, + ping_name: S +) -> Option<bool>

    Exported for test purposes.

    Gets the currently stored value as a boolean.

    This doesn’t clear the stored value.

    Arguments
    @@ -18,7 +26,7 @@
    Arguments
  • ping_name - represents the optional name of the ping to retrieve the metric for. Defaults to the first value in send_in_pings.
  • -

    Exported for test purposes.

    +
    source

    fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32

    Exported for test purposes.

    Gets the number of recorded errors for the given metric and error type.

    Arguments
    Returns

    The number of errors reported.

    -

    Implementors§

    \ No newline at end of file +

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file diff --git a/docs/glean_core/traits/trait.Counter.html b/docs/glean_core/traits/trait.Counter.html index 152b12354f..068f54e3c8 100644 --- a/docs/glean_core/traits/trait.Counter.html +++ b/docs/glean_core/traits/trait.Counter.html @@ -1,18 +1,26 @@ -Counter in glean_core::traits - Rust
    pub trait Counter {
    -    fn add(&self, amount: i32);
    -    fn test_get_value<'a, S: Into<Option<&'a str>>>(
            &self,
            ping_name: S
        ) -> Option<i32>; - fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32; -}
    Expand description

    A description for the CounterMetric type.

    +Counter in glean_core::traits - Rust +
    pub trait Counter {
    +    // Required methods
    +    fn add(&self, amount: i32);
    +    fn test_get_value<'a, S: Into<Option<&'a str>>>(
    +        &self,
    +        ping_name: S
    +    ) -> Option<i32>;
    +    fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32;
    +}
    Expand description

    A description for the CounterMetric type.

    When changing this trait, make sure all the operations are implemented in the related type in ../metrics/.

    -

    Required Methods§

    Increases the counter by amount.

    +

    Required Methods§

    source

    fn add(&self, amount: i32)

    Increases the counter by amount.

    Arguments
    • amount - The amount to increase by. Should be positive.
    Notes

    Logs an error if the amount is 0 or negative.

    -

    Exported for test purposes.

    +
    source

    fn test_get_value<'a, S: Into<Option<&'a str>>>( + &self, + ping_name: S +) -> Option<i32>

    Exported for test purposes.

    Gets the currently stored value as an integer.

    This doesn’t clear the stored value.

    Arguments
    @@ -20,7 +28,7 @@
    Arguments
  • ping_name - represents the optional name of the ping to retrieve the metric for. Defaults to the first value in send_in_pings.
  • -

    Exported for test purposes.

    +
    source

    fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32

    Exported for test purposes.

    Gets the number of recorded errors for the given metric and error type.

    Arguments
    Returns

    The number of errors reported.

    -

    Implementors§

    \ No newline at end of file +

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file diff --git a/docs/glean_core/traits/trait.CustomDistribution.html b/docs/glean_core/traits/trait.CustomDistribution.html index 0b2abab83c..614561c36c 100644 --- a/docs/glean_core/traits/trait.CustomDistribution.html +++ b/docs/glean_core/traits/trait.CustomDistribution.html @@ -1,13 +1,18 @@ -CustomDistribution in glean_core::traits - Rust
    pub trait CustomDistribution {
    -    fn accumulate_samples_signed(&self, samples: Vec<i64>);
    -    fn accumulate_single_sample_signed(&self, sample: i64);
    -    fn test_get_value<'a, S: Into<Option<&'a str>>>(
            &self,
            ping_name: S
        ) -> Option<DistributionData>; - fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32; -}
    Expand description

    A description for the -CustomDistributionMetric type.

    +CustomDistribution in glean_core::traits - Rust +
    pub trait CustomDistribution {
    +    // Required methods
    +    fn accumulate_samples_signed(&self, samples: Vec<i64>);
    +    fn accumulate_single_sample_signed(&self, sample: i64);
    +    fn test_get_value<'a, S: Into<Option<&'a str>>>(
    +        &self,
    +        ping_name: S
    +    ) -> Option<DistributionData>;
    +    fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32;
    +}
    Expand description

    A description for the +CustomDistributionMetric type.

    When changing this trait, make sure all the operations are implemented in the related type in ../metrics/.

    -

    Required Methods§

    Accumulates the provided signed samples in the metric.

    +

    Required Methods§

    source

    fn accumulate_samples_signed(&self, samples: Vec<i64>)

    Accumulates the provided signed samples in the metric.

    This is required so that the platform-specific code can provide us with 64 bit signed integers if no u64 comparable type is available. This will take care of filtering and reporting errors for any provided negative @@ -18,9 +23,9 @@

    Arguments
    Notes

    Discards any negative value in samples and report an -ErrorType::InvalidValue for each of +ErrorType::InvalidValue for each of them.

    -

    Accumulates precisely one signed sample in the metric.

    +
    source

    fn accumulate_single_sample_signed(&self, sample: i64)

    Accumulates precisely one signed sample in the metric.

    This is required so that the platform-specific code can provide us with a 64 bit signed integer if no u64 comparable type is available. This will take care of filtering and reporting errors.

    @@ -30,8 +35,11 @@
    Arguments
    Notes

    Discards any negative value of sample and reports an -ErrorType::InvalidValue.

    -

    Exported for test purposes.

    +ErrorType::InvalidValue.

    +
    source

    fn test_get_value<'a, S: Into<Option<&'a str>>>( + &self, + ping_name: S +) -> Option<DistributionData>

    Exported for test purposes.

    Gets the currently stored histogram.

    This doesn’t clear the stored value.

    Arguments
    @@ -39,7 +47,7 @@
    Arguments
  • ping_name - represents the optional name of the ping to retrieve the metric for. Defaults to the first value in send_in_pings.
  • -

    Exported for test purposes.

    +
    source

    fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32

    Exported for test purposes.

    Gets the number of recorded errors for the given error type.

    Arguments
    Returns

    The number of errors recorded.

    -

    Implementors§

    \ No newline at end of file +

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file diff --git a/docs/glean_core/traits/trait.Datetime.html b/docs/glean_core/traits/trait.Datetime.html index 03a6ed42e0..53a810fcad 100644 --- a/docs/glean_core/traits/trait.Datetime.html +++ b/docs/glean_core/traits/trait.Datetime.html @@ -1,18 +1,26 @@ -Datetime in glean_core::traits - Rust
    pub trait Datetime {
    -    fn set(&self, value: Option<Datetime>);
    -    fn test_get_value<'a, S: Into<Option<&'a str>>>(
            &self,
            ping_name: S
        ) -> Option<Datetime>; - fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32; -}
    Expand description

    A description for the DatetimeMetric type.

    +Datetime in glean_core::traits - Rust +
    pub trait Datetime {
    +    // Required methods
    +    fn set(&self, value: Option<Datetime>);
    +    fn test_get_value<'a, S: Into<Option<&'a str>>>(
    +        &self,
    +        ping_name: S
    +    ) -> Option<Datetime>;
    +    fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32;
    +}
    Expand description

    A description for the DatetimeMetric type.

    When changing this trait, make sure all the operations are implemented in the related type in ../metrics/.

    -

    Required Methods§

    Sets the metric to a date/time which including the timezone offset.

    +

    Required Methods§

    source

    fn set(&self, value: Option<Datetime>)

    Sets the metric to a date/time which including the timezone offset.

    Arguments
      -
    • value - Some Datetime, with offset, to -set the metric to. If None, the current local time is +
    • value - Some Datetime, with offset, to +set the metric to. If None, the current local time is used.
    -

    Exported for test purposes.

    +
    source

    fn test_get_value<'a, S: Into<Option<&'a str>>>( + &self, + ping_name: S +) -> Option<Datetime>

    Exported for test purposes.

    Gets the currently stored value as a Datetime.

    The precision of this value is truncated to the time_unit precision.

    This doesn’t clear the stored value.

    @@ -21,7 +29,7 @@
    Arguments
  • ping_name - represents the optional name of the ping to retrieve the metric for. Defaults to the first value in send_in_pings.
  • -

    Exported for test purposes.

    +
    source

    fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32

    Exported for test purposes.

    Gets the number of recorded errors for the given metric and error type.

    Arguments
    Returns

    The number of errors reported.

    -

    Implementors§

    \ No newline at end of file +

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file diff --git a/docs/glean_core/traits/trait.Event.html b/docs/glean_core/traits/trait.Event.html index a4e59018b5..a7d50cf3bb 100644 --- a/docs/glean_core/traits/trait.Event.html +++ b/docs/glean_core/traits/trait.Event.html @@ -1,19 +1,27 @@ -Event in glean_core::traits - Rust

    Trait glean_core::traits::Event

    source ·
    pub trait Event {
    +Event in glean_core::traits - Rust
    +    

    Trait glean_core::traits::Event

    source ·
    pub trait Event {
         type Extra: ExtraKeys;
     
    -    fn record<M: Into<Option<Self::Extra>>>(&self, extra: M);
    -    fn test_get_value<'a, S: Into<Option<&'a str>>>(
            &self,
            ping_name: S
        ) -> Option<Vec<RecordedEvent>>; - fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32; -}
    Expand description

    A description for the EventMetric type.

    + // Required methods + fn record<M: Into<Option<Self::Extra>>>(&self, extra: M); + fn test_get_value<'a, S: Into<Option<&'a str>>>( + &self, + ping_name: S + ) -> Option<Vec<RecordedEvent>>; + fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32; +}
    Expand description

    A description for the EventMetric type.

    When changing this trait, make sure all the operations are implemented in the related type in ../metrics/.

    -

    Required Associated Types§

    The type of the allowed extra keys for this event.

    -

    Required Methods§

    Records an event.

    +

    Required Associated Types§

    source

    type Extra: ExtraKeys

    The type of the allowed extra keys for this event.

    +

    Required Methods§

    source

    fn record<M: Into<Option<Self::Extra>>>(&self, extra: M)

    Records an event.

    Arguments
    • extra - (optional) An object for the extra keys.
    -

    Exported for test purposes.

    +
    source

    fn test_get_value<'a, S: Into<Option<&'a str>>>( + &self, + ping_name: S +) -> Option<Vec<RecordedEvent>>

    Exported for test purposes.

    Get the vector of currently stored events for this event metric.

    This doesn’t clear the stored value.

    Arguments
    @@ -21,7 +29,7 @@
    Arguments
  • ping_name - represents the optional name of the ping to retrieve the metric for. Defaults to the first value in send_in_pings.
  • -

    Exported for test purposes.

    +
    source

    fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32

    Exported for test purposes.

    Gets the number of recorded errors for the given metric and error type.

    Arguments
    Returns

    The number of errors reported.

    -

    Implementors§

    \ No newline at end of file +

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file diff --git a/docs/glean_core/traits/trait.ExtraKeys.html b/docs/glean_core/traits/trait.ExtraKeys.html index c03912b654..d60d5b3383 100644 --- a/docs/glean_core/traits/trait.ExtraKeys.html +++ b/docs/glean_core/traits/trait.ExtraKeys.html @@ -1,8 +1,10 @@ -ExtraKeys in glean_core::traits - Rust
    pub trait ExtraKeys {
    -    const ALLOWED_KEYS: &'static [&'static str];
    +ExtraKeys in glean_core::traits - Rust
    +    
    pub trait ExtraKeys {
    +    const ALLOWED_KEYS: &'static [&'static str];
     
    -    fn into_ffi_extra(self) -> HashMap<String, String>;
    -}
    Expand description

    Extra keys for events.

    + // Required method + fn into_ffi_extra(self) -> HashMap<String, String>; +}
    Expand description

    Extra keys for events.

    Extra keys need to be pre-defined and map to a string representation.

    For user-defined EventMetrics these will be defined as structs. Each extra key will be a field in that struct. @@ -10,11 +12,11 @@ The Glean SDK requires the keys as strings for submission in pings, whereas in code we want to provide users a type to work with (e.g. to avoid typos or misuse of the API).

    -

    Required Associated Constants§

    List of allowed extra keys as strings.

    -

    Required Methods§

    Convert the event extras into 2 lists:

    +

    Required Associated Constants§

    source

    const ALLOWED_KEYS: &'static [&'static str]

    List of allowed extra keys as strings.

    +

    Required Methods§

    source

    fn into_ffi_extra(self) -> HashMap<String, String>

    Convert the event extras into 2 lists:

    1. The list of extra key indices. Unset keys will be skipped.
    2. The list of extra values.
    -

    Implementors§

    \ No newline at end of file +

    Object Safety§

    This trait is not object safe.

    Implementors§

    source§

    impl ExtraKeys for NoExtraKeys

    source§

    const ALLOWED_KEYS: &'static [&'static str] = _

    \ No newline at end of file diff --git a/docs/glean_core/traits/trait.Labeled.html b/docs/glean_core/traits/trait.Labeled.html index 926dd87623..3bfd4b509c 100644 --- a/docs/glean_core/traits/trait.Labeled.html +++ b/docs/glean_core/traits/trait.Labeled.html @@ -1,10 +1,13 @@ -Labeled in glean_core::traits - Rust
    pub trait Labeled<T>where
        T: Clone,
    { - fn get(&self, label: &str) -> T; - fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32; -}
    Expand description

    A description for the LabeledMetric type.

    +Labeled in glean_core::traits - Rust +
    pub trait Labeled<T>
    where + T: Clone,
    { + // Required methods + fn get(&self, label: &str) -> T; + fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32; +}
    Expand description

    A description for the LabeledMetric type.

    When changing this trait, make sure all the operations are implemented in the related type in ../metrics/.

    -

    Required Methods§

    Gets a specific metric for a given label.

    +

    Required Methods§

    source

    fn get(&self, label: &str) -> T

    Gets a specific metric for a given label.

    If a set of acceptable labels were specified in the metrics.yaml file, and the given label is not in the set, it will be recorded under the special OTHER_LABEL label.

    If a set of acceptable labels was not specified in the metrics.yaml file, @@ -12,7 +15,7 @@ After that, any additional labels will be recorded under the special OTHER_LABEL label.

    Labels must be snake_case and less than 30 characters. If an invalid label is used, the metric will be recorded in the special OTHER_LABEL label.

    -

    Exported for test purposes.

    +
    source

    fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32

    Exported for test purposes.

    Gets the number of recorded errors for the given metric and error type.

    Arguments
    Returns

    The number of errors reported.

    -

    Implementors§

    \ No newline at end of file +

    Implementors§

    \ No newline at end of file diff --git a/docs/glean_core/traits/trait.MemoryDistribution.html b/docs/glean_core/traits/trait.MemoryDistribution.html index e959163380..fa68f070da 100644 --- a/docs/glean_core/traits/trait.MemoryDistribution.html +++ b/docs/glean_core/traits/trait.MemoryDistribution.html @@ -1,12 +1,17 @@ -MemoryDistribution in glean_core::traits - Rust
    pub trait MemoryDistribution {
    -    fn accumulate(&self, sample: u64);
    -    fn test_get_value<'a, S: Into<Option<&'a str>>>(
            &self,
            ping_name: S
        ) -> Option<DistributionData>; - fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32; -}
    Expand description

    A description for the -MemoryDistributionMetric type.

    +MemoryDistribution in glean_core::traits - Rust +
    pub trait MemoryDistribution {
    +    // Required methods
    +    fn accumulate(&self, sample: u64);
    +    fn test_get_value<'a, S: Into<Option<&'a str>>>(
    +        &self,
    +        ping_name: S
    +    ) -> Option<DistributionData>;
    +    fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32;
    +}
    Expand description

    A description for the +MemoryDistributionMetric type.

    When changing this trait, make sure all the operations are implemented in the related type in ../metrics/.

    -

    Required Methods§

    Accumulates the provided sample in the metric.

    +

    Required Methods§

    source

    fn accumulate(&self, sample: u64)

    Accumulates the provided sample in the metric.

    Arguments
    • sample - The sample to be recorded by the metric. The sample is assumed to be in the @@ -15,7 +20,10 @@
      Arguments
      Notes

      Values bigger than 1 Terabyte (240 bytes) are truncated and an ErrorType::InvalidValue error is recorded.

      -

    Exported for test purposes.

    +
    source

    fn test_get_value<'a, S: Into<Option<&'a str>>>( + &self, + ping_name: S +) -> Option<DistributionData>

    Exported for test purposes.

    Gets the currently stored value as a DistributionData of the serialized value.

    This doesn’t clear the stored value.

    Arguments
    @@ -23,7 +31,7 @@
    Arguments
  • ping_name - represents the optional name of the ping to retrieve the metric for. Defaults to the first value in send_in_pings.
  • -

    Exported for test purposes.

    +
    source

    fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32

    Exported for test purposes.

    Gets the number of recorded errors for the given error type.

    Arguments
    Returns

    The number of errors recorded.

    -

    Implementors§

    \ No newline at end of file +

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file diff --git a/docs/glean_core/traits/trait.Numerator.html b/docs/glean_core/traits/trait.Numerator.html index 4bb7790035..872e519d73 100644 --- a/docs/glean_core/traits/trait.Numerator.html +++ b/docs/glean_core/traits/trait.Numerator.html @@ -1,16 +1,24 @@ -Numerator in glean_core::traits - Rust
    pub trait Numerator {
    -    fn add_to_numerator(&self, amount: i32);
    -    fn test_get_value<'a, S: Into<Option<&'a str>>>(
            &self,
            ping_name: S
        ) -> Option<Rate>; - fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32; -}
    Expand description

    A description for the NumeratorMetric subtype of the RateMetric type.

    -

    Required Methods§

    Increases the numerator by amount.

    +Numerator in glean_core::traits - Rust +
    pub trait Numerator {
    +    // Required methods
    +    fn add_to_numerator(&self, amount: i32);
    +    fn test_get_value<'a, S: Into<Option<&'a str>>>(
    +        &self,
    +        ping_name: S
    +    ) -> Option<Rate>;
    +    fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32;
    +}
    Expand description

    A description for the NumeratorMetric subtype of the RateMetric type.

    +

    Required Methods§

    source

    fn add_to_numerator(&self, amount: i32)

    Increases the numerator by amount.

    Arguments
    • amount - The amount to increase by. Should be non-negative.
    Notes

    Logs an error if the amount is negative.

    -

    Exported for test purposes.

    +
    source

    fn test_get_value<'a, S: Into<Option<&'a str>>>( + &self, + ping_name: S +) -> Option<Rate>

    Exported for test purposes.

    Gets the currently stored value as a pair of integers.

    Arguments
      @@ -18,7 +26,7 @@
      Arguments
      for. Defaults to the first value in send_in_pings.

    This doesn’t clear the stored value.

    -

    Exported for test purposes.

    +
    source

    fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32

    Exported for test purposes.

    Gets the number of recorded errors for the given metric and error type.

    Arguments
    Returns

    The number of errors reported.

    -

    Implementors§

    \ No newline at end of file +

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file diff --git a/docs/glean_core/traits/trait.ObjectSerialize.html b/docs/glean_core/traits/trait.ObjectSerialize.html index f3791278e3..a421a9a388 100644 --- a/docs/glean_core/traits/trait.ObjectSerialize.html +++ b/docs/glean_core/traits/trait.ObjectSerialize.html @@ -1,12 +1,17 @@ -ObjectSerialize in glean_core::traits - Rust
    pub trait ObjectSerialize {
    -    fn from_str(obj: &str) -> Result<Self, ObjectError>
        where
            Self: Sized
    ; - fn into_serialized_object(self) -> Result<JsonValue, ObjectError>; -}
    Expand description

    An object that can be serialized into JSON.

    +ObjectSerialize in glean_core::traits - Rust +
    pub trait ObjectSerialize {
    +    // Required methods
    +    fn from_str(obj: &str) -> Result<Self, ObjectError>
    +       where Self: Sized;
    +    fn into_serialized_object(self) -> Result<JsonValue, ObjectError>;
    +}
    Expand description

    An object that can be serialized into JSON.

    Objects are defined by their structure in the metrics definition.

    This is essentially a wrapper around serde’s Serialize/Deserialize, but in a way we can name it for our JSON (de)serialization.

    -

    Required Methods§

    Deserialize the object from its JSON representation.

    +

    Required Methods§

    source

    fn from_str(obj: &str) -> Result<Self, ObjectError>
    where + Self: Sized,

    Deserialize the object from its JSON representation.

    Returns an error if deserialization fails. This should not happen for glean_parser-generated and later serialized objects.

    -

    Serialize this object into a JSON string.

    -

    Implementors§

    \ No newline at end of file +
    source

    fn into_serialized_object(self) -> Result<JsonValue, ObjectError>

    Serialize this object into a JSON string.

    +

    Implementors§

    source§

    impl<V> ObjectSerialize for V
    where + V: Serialize + for<'de> Deserialize<'de>,

    \ No newline at end of file diff --git a/docs/glean_core/traits/trait.Ping.html b/docs/glean_core/traits/trait.Ping.html index 52190b4ea1..675640404d 100644 --- a/docs/glean_core/traits/trait.Ping.html +++ b/docs/glean_core/traits/trait.Ping.html @@ -1,12 +1,14 @@ -Ping in glean_core::traits - Rust

    Trait glean_core::traits::Ping

    source ·
    pub trait Ping {
    -    fn submit(&self, reason: Option<&str>);
    -}
    Expand description

    A description for the PingType type.

    +Ping in glean_core::traits - Rust +

    Trait glean_core::traits::Ping

    source ·
    pub trait Ping {
    +    // Required method
    +    fn submit(&self, reason: Option<&str>);
    +}
    Expand description

    A description for the PingType type.

    When changing this trait, make sure all the operations are implemented in the related type in ../metrics/.

    -

    Required Methods§

    Submits the ping for eventual uploading

    +

    Required Methods§

    source

    fn submit(&self, reason: Option<&str>)

    Submits the ping for eventual uploading

    Arguments
    • reason - the reason the ping was triggered. Included in the ping_info.reason part of the payload.
    -

    Implementors§

    \ No newline at end of file +

    Implementors§

    \ No newline at end of file diff --git a/docs/glean_core/traits/trait.Quantity.html b/docs/glean_core/traits/trait.Quantity.html index 0113055746..5760ae4e52 100644 --- a/docs/glean_core/traits/trait.Quantity.html +++ b/docs/glean_core/traits/trait.Quantity.html @@ -1,18 +1,26 @@ -Quantity in glean_core::traits - Rust
    pub trait Quantity {
    -    fn set(&self, value: i64);
    -    fn test_get_value<'a, S: Into<Option<&'a str>>>(
            &self,
            ping_name: S
        ) -> Option<i64>; - fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32; -}
    Expand description

    A description for the QuantityMetric type.

    +Quantity in glean_core::traits - Rust +
    pub trait Quantity {
    +    // Required methods
    +    fn set(&self, value: i64);
    +    fn test_get_value<'a, S: Into<Option<&'a str>>>(
    +        &self,
    +        ping_name: S
    +    ) -> Option<i64>;
    +    fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32;
    +}
    Expand description

    A description for the QuantityMetric type.

    When changing this trait, make sure all the operations are implemented in the related type in ../metrics/.

    -

    Required Methods§

    Sets the value. Must be non-negative.

    +

    Required Methods§

    source

    fn set(&self, value: i64)

    Sets the value. Must be non-negative.

    Arguments
    • value - The value. Must be non-negative.
    Notes

    Logs an error if the value is negative.

    -

    Exported for test purposes.

    +
    source

    fn test_get_value<'a, S: Into<Option<&'a str>>>( + &self, + ping_name: S +) -> Option<i64>

    Exported for test purposes.

    Gets the currently stored value as an integer.

    This doesn’t clear the stored value.

    Arguments
    @@ -20,7 +28,7 @@
    Arguments
  • ping_name - represents the optional name of the ping to retrieve the metric for. Defaults to the first value in send_in_pings.
  • -

    Exported for test purposes.

    +
    source

    fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32

    Exported for test purposes.

    Gets the number of recorded errors for the given metric and error type.

    Arguments
    Returns

    The number of errors reported.

    -

    Implementors§

    \ No newline at end of file +

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file diff --git a/docs/glean_core/traits/trait.Rate.html b/docs/glean_core/traits/trait.Rate.html index e297e3511e..bb99d187d3 100644 --- a/docs/glean_core/traits/trait.Rate.html +++ b/docs/glean_core/traits/trait.Rate.html @@ -1,24 +1,32 @@ -Rate in glean_core::traits - Rust

    Trait glean_core::traits::Rate

    source ·
    pub trait Rate {
    -    fn add_to_numerator(&self, amount: i32);
    -    fn add_to_denominator(&self, amount: i32);
    -    fn test_get_value<'a, S: Into<Option<&'a str>>>(
            &self,
            ping_name: S
        ) -> Option<Rate>; - fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32; -}
    Expand description

    A description for the RateMetric type.

    -

    Required Methods§

    Increases the numerator by amount.

    +Rate in glean_core::traits - Rust +

    Trait glean_core::traits::Rate

    source ·
    pub trait Rate {
    +    // Required methods
    +    fn add_to_numerator(&self, amount: i32);
    +    fn add_to_denominator(&self, amount: i32);
    +    fn test_get_value<'a, S: Into<Option<&'a str>>>(
    +        &self,
    +        ping_name: S
    +    ) -> Option<Rate>;
    +    fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32;
    +}
    Expand description

    A description for the RateMetric type.

    +

    Required Methods§

    source

    fn add_to_numerator(&self, amount: i32)

    Increases the numerator by amount.

    Arguments
    • amount - The amount to increase by. Should be non-negative.
    Notes

    Logs an error if the amount is negative.

    -

    Increases the denominator by amount.

    +
    source

    fn add_to_denominator(&self, amount: i32)

    Increases the denominator by amount.

    Arguments
    • amount - The amount to increase by. Should be non-negative.
    Notes

    Logs an error if the amount is negative.

    -

    Exported for test purposes.

    +
    source

    fn test_get_value<'a, S: Into<Option<&'a str>>>( + &self, + ping_name: S +) -> Option<Rate>

    Exported for test purposes.

    Gets the currently stored value as a pair of integers.

    Arguments
      @@ -26,7 +34,7 @@
      Arguments
      for. Defaults to the first value in send_in_pings.

    This doesn’t clear the stored value.

    -

    Exported for test purposes.

    +
    source

    fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32

    Exported for test purposes.

    Gets the number of recorded errors for the given metric and error type.

    Arguments
    Returns

    The number of errors reported.

    -

    Implementors§

    \ No newline at end of file +

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file diff --git a/docs/glean_core/traits/trait.String.html b/docs/glean_core/traits/trait.String.html index 55901a2335..67326468d4 100644 --- a/docs/glean_core/traits/trait.String.html +++ b/docs/glean_core/traits/trait.String.html @@ -1,18 +1,26 @@ -String in glean_core::traits - Rust

    Trait glean_core::traits::String

    source ·
    pub trait String {
    -    fn set<S: Into<String>>(&self, value: S);
    -    fn test_get_value<'a, S: Into<Option<&'a str>>>(
            &self,
            ping_name: S
        ) -> Option<String>; - fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32; -}
    Expand description

    A description for the StringMetric type.

    +String in glean_core::traits - Rust +

    Trait glean_core::traits::String

    source ·
    pub trait String {
    +    // Required methods
    +    fn set<S: Into<String>>(&self, value: S);
    +    fn test_get_value<'a, S: Into<Option<&'a str>>>(
    +        &self,
    +        ping_name: S
    +    ) -> Option<String>;
    +    fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32;
    +}
    Expand description

    A description for the StringMetric type.

    When changing this trait, make sure all the operations are implemented in the related type in ../metrics/.

    -

    Required Methods§

    Sets to the specified value.

    +

    Required Methods§

    source

    fn set<S: Into<String>>(&self, value: S)

    Sets to the specified value.

    Arguments
    • value - The string to set the metric to.
    Notes

    Truncates the value if it is longer than MAX_LENGTH_VALUE bytes and logs an error.

    -

    Exported for test purposes.

    +
    source

    fn test_get_value<'a, S: Into<Option<&'a str>>>( + &self, + ping_name: S +) -> Option<String>

    Exported for test purposes.

    Gets the currently stored value as a string.

    This doesn’t clear the stored value.

    Arguments
    @@ -20,7 +28,7 @@
    Arguments
  • ping_name - represents the optional name of the ping to retrieve the metric for. Defaults to the first value in send_in_pings.
  • -

    Exported for test purposes.

    +
    source

    fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32

    Exported for test purposes.

    Gets the number of recorded errors for the given metric and error type.

    Arguments
    Returns

    The number of errors reported.

    -

    Implementors§

    \ No newline at end of file +

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file diff --git a/docs/glean_core/traits/trait.StringList.html b/docs/glean_core/traits/trait.StringList.html index 167c7e5692..ac26f50a91 100644 --- a/docs/glean_core/traits/trait.StringList.html +++ b/docs/glean_core/traits/trait.StringList.html @@ -1,19 +1,24 @@ -StringList in glean_core::traits - Rust
    pub trait StringList {
    -    fn add<S: Into<String>>(&self, value: S);
    -    fn set(&self, value: Vec<String>);
    -    fn test_get_value<'a, S: Into<Option<&'a str>>>(
            &self,
            ping_name: S
        ) -> Option<Vec<String>>; - fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32; -}
    Expand description

    A description for the StringListMetric type.

    +StringList in glean_core::traits - Rust +
    pub trait StringList {
    +    // Required methods
    +    fn add<S: Into<String>>(&self, value: S);
    +    fn set(&self, value: Vec<String>);
    +    fn test_get_value<'a, S: Into<Option<&'a str>>>(
    +        &self,
    +        ping_name: S
    +    ) -> Option<Vec<String>>;
    +    fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32;
    +}
    Expand description

    A description for the StringListMetric type.

    When changing this trait, make sure all the operations are implemented in the related type in ../metrics/.

    -

    Required Methods§

    Adds a new string to the list.

    +

    Required Methods§

    source

    fn add<S: Into<String>>(&self, value: S)

    Adds a new string to the list.

    Arguments
    • value - The string to add.
    Notes

    Truncates the value if it is longer than MAX_STRING_LENGTH bytes and logs an error.

    -

    Sets to a specific list of strings.

    +
    source

    fn set(&self, value: Vec<String>)

    Sets to a specific list of strings.

    Arguments
    • value - The list of string to set the metric to.
    • @@ -22,7 +27,10 @@
      Notes

      If passed an empty list, records an error and returns. Truncates the list if it is longer than MAX_LIST_LENGTH and logs an error. Truncates any value in the list if it is longer than MAX_STRING_LENGTH and logs an error.

      -

    Exported for test purposes.

    +
    source

    fn test_get_value<'a, S: Into<Option<&'a str>>>( + &self, + ping_name: S +) -> Option<Vec<String>>

    Exported for test purposes.

    Gets the currently-stored values.

    This doesn’t clear the stored value.

    Arguments
    @@ -30,7 +38,7 @@
    Arguments
  • ping_name - represents the optional name of the ping to retrieve the metric for. Defaults to the first value in send_in_pings.
  • -

    Exported for test purposes.

    +
    source

    fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32

    Exported for test purposes.

    Gets the number of recorded errors for the given error type.

    Arguments
    Returns

    The number of errors recorded.

    -

    Implementors§

    \ No newline at end of file +

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file diff --git a/docs/glean_core/traits/trait.Text.html b/docs/glean_core/traits/trait.Text.html index 81d0281c0f..e43eafb93a 100644 --- a/docs/glean_core/traits/trait.Text.html +++ b/docs/glean_core/traits/trait.Text.html @@ -1,18 +1,26 @@ -Text in glean_core::traits - Rust

    Trait glean_core::traits::Text

    source ·
    pub trait Text {
    -    fn set<S: Into<String>>(&self, value: S);
    -    fn test_get_value<'a, S: Into<Option<&'a str>>>(
            &self,
            ping_name: S
        ) -> Option<String>; - fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32; -}
    Expand description

    A description for the TextMetric type.

    +Text in glean_core::traits - Rust +

    Trait glean_core::traits::Text

    source ·
    pub trait Text {
    +    // Required methods
    +    fn set<S: Into<String>>(&self, value: S);
    +    fn test_get_value<'a, S: Into<Option<&'a str>>>(
    +        &self,
    +        ping_name: S
    +    ) -> Option<String>;
    +    fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32;
    +}
    Expand description

    A description for the TextMetric type.

    When changing this trait, make sure all the operations are implemented in the related type in ../metrics/.

    -

    Required Methods§

    Sets to the specified value.

    +

    Required Methods§

    source

    fn set<S: Into<String>>(&self, value: S)

    Sets to the specified value.

    Arguments
    • value - The string to set the metric to.
    Notes

    Truncates the value if it is longer than MAX_LENGTH_VALUE bytes and logs an error.

    -

    Exported for test purposes.

    +
    source

    fn test_get_value<'a, S: Into<Option<&'a str>>>( + &self, + ping_name: S +) -> Option<String>

    Exported for test purposes.

    Gets the currently stored value as a string.

    This doesn’t clear the stored value.

    Arguments
    @@ -20,7 +28,7 @@
    Arguments
  • ping_name - represents the optional name of the ping to retrieve the metric for. Defaults to the first value in send_in_pings.
  • -

    Exported for test purposes.

    +
    source

    fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32

    Exported for test purposes.

    Gets the number of recorded errors for the given metric and error type.

    Arguments
    Returns

    The number of errors reported.

    -

    Implementors§

    \ No newline at end of file +

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file diff --git a/docs/glean_core/traits/trait.Timespan.html b/docs/glean_core/traits/trait.Timespan.html index a7cc37204d..d189b7177a 100644 --- a/docs/glean_core/traits/trait.Timespan.html +++ b/docs/glean_core/traits/trait.Timespan.html @@ -1,32 +1,40 @@ -Timespan in glean_core::traits - Rust
    pub trait Timespan {
    +Timespan in glean_core::traits - Rust
    +    
    pub trait Timespan {
    +    // Required methods
         fn start(&self);
         fn stop(&self);
         fn cancel(&self);
    -    fn set_raw(&self, elapsed: Duration);
    -    fn test_get_value<'a, S: Into<Option<&'a str>>>(
            &self,
            ping_name: S
        ) -> Option<u64>; - fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32; -}
    Expand description

    A description for the TimespanMetric type.

    + fn set_raw(&self, elapsed: Duration); + fn test_get_value<'a, S: Into<Option<&'a str>>>( + &self, + ping_name: S + ) -> Option<u64>; + fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32; +}
    Expand description

    A description for the TimespanMetric type.

    When changing this trait, make sure all the operations are implemented in the related type in ../metrics/.

    -

    Required Methods§

    Starts tracking time for the provided metric.

    +

    Required Methods§

    source

    fn start(&self)

    Starts tracking time for the provided metric.

    This uses an internal monotonic timer.

    This records an error if it’s already tracking time (i.e. -start was already called with no corresponding -stop): in that case the original start time will be +start was already called with no corresponding +stop): in that case the original start time will be preserved.

    -

    Stops tracking time for the provided metric. Sets the metric to the elapsed time.

    -

    This will record an error if no start was called.

    -

    Aborts a previous start call. No error is recorded -if no start was called.

    -

    Explicitly sets the timespan value.

    +
    source

    fn stop(&self)

    Stops tracking time for the provided metric. Sets the metric to the elapsed time.

    +

    This will record an error if no start was called.

    +
    source

    fn cancel(&self)

    Aborts a previous start call. No error is recorded +if no start was called.

    +
    source

    fn set_raw(&self, elapsed: Duration)

    Explicitly sets the timespan value.

    This API should only be used if your library or application requires recording spans of time in a way that cannot make use of -start/stop/cancel.

    +start/stop/cancel.

    Arguments
    • elapsed - The elapsed time to record.
    -

    Exported for test purposes.

    +
    source

    fn test_get_value<'a, S: Into<Option<&'a str>>>( + &self, + ping_name: S +) -> Option<u64>

    Exported for test purposes.

    Gets the currently stored value as an integer.

    This doesn’t clear the stored value.

    Arguments
    @@ -34,7 +42,7 @@
    Arguments
  • ping_name - represents the optional name of the ping to retrieve the metric for. Defaults to the first value in send_in_pings.
  • -

    Exported for test purposes.

    +
    source

    fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32

    Exported for test purposes.

    Gets the number of recorded errors for the given metric and error type.

    Arguments
    Returns

    The number of errors reported.

    -

    Implementors§

    \ No newline at end of file +

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file diff --git a/docs/glean_core/traits/trait.TimingDistribution.html b/docs/glean_core/traits/trait.TimingDistribution.html index 33fa98d0ec..a44bc27faa 100644 --- a/docs/glean_core/traits/trait.TimingDistribution.html +++ b/docs/glean_core/traits/trait.TimingDistribution.html @@ -1,57 +1,62 @@ -TimingDistribution in glean_core::traits - Rust
    pub trait TimingDistribution {
    +TimingDistribution in glean_core::traits - Rust
    +    
    pub trait TimingDistribution {
    +    // Required methods
         fn start(&self) -> TimerId;
         fn stop_and_accumulate(&self, id: TimerId);
         fn cancel(&self, id: TimerId);
    -    fn accumulate_samples(&self, samples: Vec<i64>);
    -    fn accumulate_single_sample(&self, sample: i64);
    -    fn accumulate_raw_samples_nanos(&self, samples: Vec<u64>);
    -    fn accumulate_raw_duration(&self, duration: Duration);
    -    fn test_get_value<'a, S: Into<Option<&'a str>>>(
            &self,
            ping_name: S
        ) -> Option<DistributionData>; - fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32; -}
    Expand description

    A description for the TimingDistributionMetric type.

    + fn accumulate_samples(&self, samples: Vec<i64>); + fn accumulate_single_sample(&self, sample: i64); + fn accumulate_raw_samples_nanos(&self, samples: Vec<u64>); + fn accumulate_raw_duration(&self, duration: Duration); + fn test_get_value<'a, S: Into<Option<&'a str>>>( + &self, + ping_name: S + ) -> Option<DistributionData>; + fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32; +}
    Expand description

    A description for the TimingDistributionMetric type.

    When changing this trait, make sure all the operations are implemented in the related type in ../metrics/.

    -

    Required Methods§

    Start tracking time for the provided metric. +

    Required Methods§

    source

    fn start(&self) -> TimerId

    Start tracking time for the provided metric. Multiple timers can run simultaneously.

    Returns
    -

    A unique TimerId for the new timer.

    -

    Stops tracking time for the provided metric and associated timer id.

    +

    A unique TimerId for the new timer.

    +
    source

    fn stop_and_accumulate(&self, id: TimerId)

    Stops tracking time for the provided metric and associated timer id.

    Adds a count to the corresponding bucket in the timing distribution. -This will record an error if no start was +This will record an error if no start was called.

    Arguments
      -
    • id - The TimerId to associate with this timing. This allows +
    • id - The TimerId to associate with this timing. This allows for concurrent timing of events associated with different ids to the same timespan metric.
    -

    Aborts a previous start call. No -error is recorded if no start was +

    source

    fn cancel(&self, id: TimerId)

    Aborts a previous start call. No +error is recorded if no start was called.

    Arguments
      -
    • id - The TimerId to associate with this timing. This allows +
    • id - The TimerId to associate with this timing. This allows for concurrent timing of events associated with different ids to the same timing distribution metric.
    -

    Accumulates the provided signed samples in the metric.

    +
    source

    fn accumulate_samples(&self, samples: Vec<i64>)

    Accumulates the provided signed samples in the metric.

    This is required so that the platform-specific code can provide us with 64 bit signed integers if no u64 comparable type is available. This will take care of filtering and reporting errors for any provided negative sample.

    Please note that this assumes that the provided samples are already in the “unit” declared by the instance of the metric type (e.g. if the -instance this method was called on is using crate::TimeUnit::Second, then +instance this method was called on is using crate::TimeUnit::Second, then samples are assumed to be in that unit).

    Arguments
    • samples - The vector holding the samples to be recorded by the metric.
    Notes
    -

    Discards any negative value in samples and report an ErrorType::InvalidValue -for each of them. Reports an ErrorType::InvalidOverflow error for samples that +

    Discards any negative value in samples and report an ErrorType::InvalidValue +for each of them. Reports an ErrorType::InvalidOverflow error for samples that are longer than MAX_SAMPLE_TIME.

    -

    Accumulates precisely one signed sample in the metric.

    +
    source

    fn accumulate_single_sample(&self, sample: i64)

    Accumulates precisely one signed sample in the metric.

    Precludes the need for a collection in the most common use case.

    Sign is required so that the platform-specific code can provide us with a 64 bit signed integer if no u64 comparable type is available. This @@ -59,26 +64,26 @@

    Notes
    sample.

    Please note that this assumes that the provided sample is already in the “unit” declared by the instance of the metric type (e.g. if the -instance this method was called on is using crate::TimeUnit::Second, then +instance this method was called on is using crate::TimeUnit::Second, then sample is assumed to be in that unit).

    Arguments
    • sample - The singular sample to be recorded by the metric.
    Notes
    -

    Discards any negative value and reports an ErrorType::InvalidValue. -Reports an ErrorType::InvalidOverflow error if the sample is longer than +

    Discards any negative value and reports an ErrorType::InvalidValue. +Reports an ErrorType::InvalidOverflow error if the sample is longer than MAX_SAMPLE_TIME.

    -

    Accumulates the provided samples in the metric.

    +
    source

    fn accumulate_raw_samples_nanos(&self, samples: Vec<u64>)

    Accumulates the provided samples in the metric.

    Arguments
    • samples - A list of samples recorded by the metric. Samples must be in nanoseconds.
    Notes
    -

    Reports an ErrorType::InvalidOverflow error for samples that +

    Reports an ErrorType::InvalidOverflow error for samples that are longer than MAX_SAMPLE_TIME.

    -

    Accumulates precisely one duration to the metric.

    +
    source

    fn accumulate_raw_duration(&self, duration: Duration)

    Accumulates precisely one duration to the metric.

    Like TimingDistribution::accumulate_single_sample, but for use when the duration is:

      @@ -90,13 +95,16 @@
      Arguments
    • duration - The single duration to be recorded in the metric.
    Notes
    -

    Reports an ErrorType::InvalidOverflow error if duration is longer than +

    Reports an ErrorType::InvalidOverflow error if duration is longer than MAX_SAMPLE_TIME.

    The API client is responsible for ensuring that duration is derived from a monotonic clock source that behaves consistently over computer sleep across the application’s platforms. Otherwise the resulting data may not share the same guarantees that other timing_distribution metrics’ data do.

    -

    Exported for test purposes.

    +
    source

    fn test_get_value<'a, S: Into<Option<&'a str>>>( + &self, + ping_name: S +) -> Option<DistributionData>

    Exported for test purposes.

    Gets the currently stored value of the metric.

    This doesn’t clear the stored value.

    Arguments
    @@ -104,7 +112,7 @@
    Arguments
  • ping_name - represents the optional name of the ping to retrieve the metric for. Defaults to the first value in send_in_pings.
  • -

    Exported for test purposes.

    +
    source

    fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32

    Exported for test purposes.

    Gets the number of recorded errors for the given error type.

    Arguments
    Returns

    The number of errors recorded.

    -

    Implementors§

    \ No newline at end of file +

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file diff --git a/docs/glean_core/traits/trait.Url.html b/docs/glean_core/traits/trait.Url.html index 50c12a9d4f..de360d9e77 100644 --- a/docs/glean_core/traits/trait.Url.html +++ b/docs/glean_core/traits/trait.Url.html @@ -1,11 +1,16 @@ -Url in glean_core::traits - Rust

    Trait glean_core::traits::Url

    source ·
    pub trait Url {
    -    fn set<S: Into<String>>(&self, value: S);
    -    fn test_get_value<'a, S: Into<Option<&'a str>>>(
            &self,
            ping_name: S
        ) -> Option<String>; - fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32; -}
    Expand description

    A description for the UrlMetric type.

    +Url in glean_core::traits - Rust +

    Trait glean_core::traits::Url

    source ·
    pub trait Url {
    +    // Required methods
    +    fn set<S: Into<String>>(&self, value: S);
    +    fn test_get_value<'a, S: Into<Option<&'a str>>>(
    +        &self,
    +        ping_name: S
    +    ) -> Option<String>;
    +    fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32;
    +}
    Expand description

    A description for the UrlMetric type.

    When changing this trait, make sure all the operations are implemented in the related type in ../metrics/.

    -

    Required Methods§

    Sets to the specified stringified URL.

    +

    Required Methods§

    source

    fn set<S: Into<String>>(&self, value: S)

    Sets to the specified stringified URL.

    Arguments
    • glean - The Glean instance this metric belongs to.
    • @@ -13,7 +18,10 @@
      Arguments
    Notes

    Truncates the value if it is longer than MAX_URL_LENGTH bytes and logs an error.

    -

    Exported for test purposes.

    +
    source

    fn test_get_value<'a, S: Into<Option<&'a str>>>( + &self, + ping_name: S +) -> Option<String>

    Exported for test purposes.

    Gets the currently stored value as a string.

    This doesn’t clear the stored value.

    Arguments
    @@ -21,7 +29,7 @@
    Arguments
  • ping_name - represents the optional name of the ping to retrieve the metric for. Defaults to the first value in send_in_pings.
  • -

    Exported for test purposes.

    +
    source

    fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32

    Exported for test purposes.

    Gets the number of recorded errors for the given metric and error type.

    Arguments
    Returns

    The number of errors reported.

    -

    Implementors§

    \ No newline at end of file +

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file diff --git a/docs/glean_core/traits/trait.Uuid.html b/docs/glean_core/traits/trait.Uuid.html index 8762b4f5c0..9a575e3a95 100644 --- a/docs/glean_core/traits/trait.Uuid.html +++ b/docs/glean_core/traits/trait.Uuid.html @@ -1,18 +1,26 @@ -Uuid in glean_core::traits - Rust

    Trait glean_core::traits::Uuid

    source ·
    pub trait Uuid {
    +Uuid in glean_core::traits - Rust
    +    

    Trait glean_core::traits::Uuid

    source ·
    pub trait Uuid {
    +    // Required methods
         fn set(&self, value: Uuid);
         fn generate_and_set(&self) -> Uuid;
    -    fn test_get_value<'a, S: Into<Option<&'a str>>>(
            &self,
            ping_name: S
        ) -> Option<Uuid>; - fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32; -}
    Expand description

    A description for the UuidMetric type.

    + fn test_get_value<'a, S: Into<Option<&'a str>>>( + &self, + ping_name: S + ) -> Option<Uuid>; + fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32; +}
    Expand description

    A description for the UuidMetric type.

    When changing this trait, make sure all the operations are implemented in the related type in ../metrics/.

    -

    Required Methods§

    Sets to the specified value.

    +

    Required Methods§

    source

    fn set(&self, value: Uuid)

    Sets to the specified value.

    Arguments
      -
    • value - The Uuid to set the metric to.
    • +
    • value - The Uuid to set the metric to.
    -

    Generates a new random Uuid and set the metric to it.

    -

    Exported for test purposes.

    +
    source

    fn generate_and_set(&self) -> Uuid

    Generates a new random Uuid and set the metric to it.

    +
    source

    fn test_get_value<'a, S: Into<Option<&'a str>>>( + &self, + ping_name: S +) -> Option<Uuid>

    Exported for test purposes.

    Gets the currently stored value as a string.

    This doesn’t clear the stored value.

    Arguments
    @@ -20,7 +28,7 @@
    Arguments
  • ping_name - represents the optional name of the ping to retrieve the metric for. Defaults to the first value in send_in_pings.
  • -

    Exported for test purposes.

    +
    source

    fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32

    Exported for test purposes.

    Gets the number of recorded errors for the given metric and error type.

    Arguments
    Returns

    The number of errors reported.

    -

    Implementors§

    \ No newline at end of file +

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file diff --git a/docs/glean_core/type.LabeledBoolean.html b/docs/glean_core/type.LabeledBoolean.html index 3bd1acc51e..8de72567bb 100644 --- a/docs/glean_core/type.LabeledBoolean.html +++ b/docs/glean_core/type.LabeledBoolean.html @@ -1,2 +1,3 @@ -LabeledBoolean in glean_core - Rust

    Type Definition glean_core::LabeledBoolean

    source ·
    pub type LabeledBoolean = LabeledMetric<BooleanMetric>;
    Expand description

    A labeled boolean.

    -
    \ No newline at end of file +LabeledBoolean in glean_core - Rust +

    Type Alias glean_core::LabeledBoolean

    source ·
    pub type LabeledBoolean = LabeledMetric<BooleanMetric>;
    Expand description

    A labeled boolean.

    +

    Aliased Type§

    struct LabeledBoolean { /* private fields */ }
    \ No newline at end of file diff --git a/docs/glean_core/type.LabeledCounter.html b/docs/glean_core/type.LabeledCounter.html index 3ab936d1fe..b21fc44875 100644 --- a/docs/glean_core/type.LabeledCounter.html +++ b/docs/glean_core/type.LabeledCounter.html @@ -1,2 +1,3 @@ -LabeledCounter in glean_core - Rust

    Type Definition glean_core::LabeledCounter

    source ·
    pub type LabeledCounter = LabeledMetric<CounterMetric>;
    Expand description

    A labeled counter.

    -
    \ No newline at end of file +LabeledCounter in glean_core - Rust +

    Type Alias glean_core::LabeledCounter

    source ·
    pub type LabeledCounter = LabeledMetric<CounterMetric>;
    Expand description

    A labeled counter.

    +

    Aliased Type§

    struct LabeledCounter { /* private fields */ }
    \ No newline at end of file diff --git a/docs/glean_core/type.LabeledCustomDistribution.html b/docs/glean_core/type.LabeledCustomDistribution.html index e61e1f73e3..4b87969b64 100644 --- a/docs/glean_core/type.LabeledCustomDistribution.html +++ b/docs/glean_core/type.LabeledCustomDistribution.html @@ -1,2 +1,3 @@ -LabeledCustomDistribution in glean_core - Rust
    pub type LabeledCustomDistribution = LabeledMetric<CustomDistributionMetric>;
    Expand description

    A labeled custom_distribution.

    -
    \ No newline at end of file +LabeledCustomDistribution in glean_core - Rust +
    pub type LabeledCustomDistribution = LabeledMetric<CustomDistributionMetric>;
    Expand description

    A labeled custom_distribution.

    +

    Aliased Type§

    struct LabeledCustomDistribution { /* private fields */ }
    \ No newline at end of file diff --git a/docs/glean_core/type.LabeledMemoryDistribution.html b/docs/glean_core/type.LabeledMemoryDistribution.html index 5d704cde22..35cab1fdc2 100644 --- a/docs/glean_core/type.LabeledMemoryDistribution.html +++ b/docs/glean_core/type.LabeledMemoryDistribution.html @@ -1,2 +1,3 @@ -LabeledMemoryDistribution in glean_core - Rust
    pub type LabeledMemoryDistribution = LabeledMetric<MemoryDistributionMetric>;
    Expand description

    A labeled memory_distribution.

    -
    \ No newline at end of file +LabeledMemoryDistribution in glean_core - Rust +
    pub type LabeledMemoryDistribution = LabeledMetric<MemoryDistributionMetric>;
    Expand description

    A labeled memory_distribution.

    +

    Aliased Type§

    struct LabeledMemoryDistribution { /* private fields */ }
    \ No newline at end of file diff --git a/docs/glean_core/type.LabeledString.html b/docs/glean_core/type.LabeledString.html index 57eecae60e..751028b5e7 100644 --- a/docs/glean_core/type.LabeledString.html +++ b/docs/glean_core/type.LabeledString.html @@ -1,2 +1,3 @@ -LabeledString in glean_core - Rust

    Type Definition glean_core::LabeledString

    source ·
    pub type LabeledString = LabeledMetric<StringMetric>;
    Expand description

    A labeled string.

    -
    \ No newline at end of file +LabeledString in glean_core - Rust +

    Type Alias glean_core::LabeledString

    source ·
    pub type LabeledString = LabeledMetric<StringMetric>;
    Expand description

    A labeled string.

    +

    Aliased Type§

    struct LabeledString { /* private fields */ }
    \ No newline at end of file diff --git a/docs/glean_core/type.LabeledTimingDistribution.html b/docs/glean_core/type.LabeledTimingDistribution.html index f700db0de0..234b5923f8 100644 --- a/docs/glean_core/type.LabeledTimingDistribution.html +++ b/docs/glean_core/type.LabeledTimingDistribution.html @@ -1,2 +1,3 @@ -LabeledTimingDistribution in glean_core - Rust
    pub type LabeledTimingDistribution = LabeledMetric<TimingDistributionMetric>;
    Expand description

    A labeled timing_distribution.

    -
    \ No newline at end of file +LabeledTimingDistribution in glean_core - Rust +
    pub type LabeledTimingDistribution = LabeledMetric<TimingDistributionMetric>;
    Expand description

    A labeled timing_distribution.

    +

    Aliased Type§

    struct LabeledTimingDistribution { /* private fields */ }
    \ No newline at end of file diff --git a/docs/glean_core/type.Result.html b/docs/glean_core/type.Result.html index 161e27835d..4596dfde1d 100644 --- a/docs/glean_core/type.Result.html +++ b/docs/glean_core/type.Result.html @@ -1,4 +1,10 @@ -Result in glean_core - Rust

    Type Definition glean_core::Result

    source ·
    pub type Result<T, E = Error> = Result<T, E>;
    Expand description

    A specialized Result type for this crate’s operations.

    +Result in glean_core - Rust +

    Type Alias glean_core::Result

    source ·
    pub type Result<T, E = Error> = Result<T, E>;
    Expand description

    A specialized Result type for this crate’s operations.

    This is generally used to avoid writing out Error directly and is otherwise a direct mapping to Result.

    -
    \ No newline at end of file +

    Aliased Type§

    enum Result<T, E = Error> {
    +    Ok(T),
    +    Err(E),
    +}

    Variants§

    §1.0.0

    Ok(T)

    Contains the success value

    +
    §1.0.0

    Err(E)

    Contains the error value

    +
    \ No newline at end of file diff --git a/docs/glean_core/upload/enum.PingUploadTask.html b/docs/glean_core/upload/enum.PingUploadTask.html index 97cb69e53b..dcf9b7260a 100644 --- a/docs/glean_core/upload/enum.PingUploadTask.html +++ b/docs/glean_core/upload/enum.PingUploadTask.html @@ -1,22 +1,23 @@ -PingUploadTask in glean_core::upload - Rust
    pub enum PingUploadTask {
    +PingUploadTask in glean_core::upload - Rust
    +    
    pub enum PingUploadTask {
         Upload {
             request: PingRequest,
         },
         Wait {
    -        time: u64,
    +        time: u64,
         },
    -    Done { /* private fields */ },
    -}
    Expand description

    An enum representing the possible upload tasks to be performed by an uploader.

    + Done { /* private fields */ }, +}
    Expand description

    An enum representing the possible upload tasks to be performed by an uploader.

    When asking for the next ping request to upload, the requester may receive one out of three possible tasks.

    -

    Variants§

    §

    Upload

    Fields

    §request: PingRequest

    The ping request for upload +

    Variants§

    §

    Upload

    Fields

    §request: PingRequest

    The ping request for upload See PingRequest for more information.

    An upload task

    -
    §

    Wait

    Fields

    §time: u64

    The time in milliseconds +

    §

    Wait

    Fields

    §time: u64

    The time in milliseconds the requester should wait before requesting a new task.

    A flag signaling that the pending pings directories are not done being processed, thus the requester should wait and come back later.

    -
    §

    Done

    Fields

    A flag signaling that requester doesn’t need to request any more upload tasks at this moment.

    +
    §

    Done

    A flag signaling that requester doesn’t need to request any more upload tasks at this moment.

    There are three possibilities for this scenario:

    • Pending pings queue is empty, no more pings to request;
    • @@ -28,12 +29,19 @@

      An “uploading window” starts when a requester gets a new PingUploadTask::Upload(PingRequest) response and finishes when they finally get a PingUploadTask::Done or PingUploadTask::Wait response.

      -

    Implementations§

    Whether the current task is an upload task.

    -

    Whether the current task is wait task.

    -

    Trait Implementations§

    Formats the value using the given formatter. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    +

    Implementations§

    source§

    impl PingUploadTask

    source

    pub fn is_upload(&self) -> bool

    Whether the current task is an upload task.

    +
    source

    pub fn is_wait(&self) -> bool

    Whether the current task is wait task.

    +

    Trait Implementations§

    source§

    impl Debug for PingUploadTask

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl PartialEq for PingUploadTask

    source§

    fn eq(&self, other: &PingUploadTask) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl Eq for PingUploadTask

    source§

    impl StructuralEq for PingUploadTask

    source§

    impl StructuralPartialEq for PingUploadTask

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    §

    impl<T, UT> HandleAlloc<UT> for T
    where + T: Send + Sync,

    §

    fn new_handle(value: Arc<T>) -> Handle

    Create a new handle for an Arc value Read more
    §

    fn clone_handle(handle: Handle) -> Handle

    Clone a handle Read more
    §

    fn consume_handle(handle: Handle) -> Arc<T>

    Consume a handle, getting back the initial Arc<>
    §

    fn get_arc(handle: Handle) -> Arc<Self>

    Get a clone of the Arc<> using a “borrowed” handle. Read more
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/docs/glean_core/upload/enum.UploadResult.html b/docs/glean_core/upload/enum.UploadResult.html index d9ffc858db..cdb7ee1d81 100644 --- a/docs/glean_core/upload/enum.UploadResult.html +++ b/docs/glean_core/upload/enum.UploadResult.html @@ -1,36 +1,44 @@ -UploadResult in glean_core::upload - Rust
    pub enum UploadResult {
    -    RecoverableFailure { /* private fields */ },
    -    UnrecoverableFailure { /* private fields */ },
    +UploadResult in glean_core::upload - Rust
    +    
    pub enum UploadResult {
    +    RecoverableFailure { /* private fields */ },
    +    UnrecoverableFailure { /* private fields */ },
         HttpStatus {
    -        code: i32,
    +        code: i32,
         },
    -    Done { /* private fields */ },
    -}
    Expand description

    The result of an attempted ping upload.

    -

    Variants§

    §

    RecoverableFailure

    Fields

    A recoverable failure.

    + Done { /* private fields */ }, +}
    Expand description

    The result of an attempted ping upload.

    +

    Variants§

    §

    RecoverableFailure

    A recoverable failure.

    During upload something went wrong, e.g. the network connection failed. The upload should be retried at a later time.

    -
    §

    UnrecoverableFailure

    Fields

    An unrecoverable upload failure.

    +
    §

    UnrecoverableFailure

    An unrecoverable upload failure.

    A possible cause might be a malformed URL.

    -
    §

    HttpStatus

    Fields

    §code: i32

    The HTTP status code

    +
    §

    HttpStatus

    Fields

    §code: i32

    The HTTP status code

    A HTTP response code.

    This can still indicate an error, depending on the status code.

    -
    §

    Done

    Fields

    Signal that this uploader is done with work +

    §

    Done

    Signal that this uploader is done with work and won’t accept new work.

    -

    Implementations§

    Gets the label to be used in recording error counts for upload.

    +

    Implementations§

    source§

    impl UploadResult

    source

    pub fn get_label(&self) -> Option<&str>

    Gets the label to be used in recording error counts for upload.

    Returns None if the upload finished succesfully. Failures are recorded in the ping_upload_failure metric.

    -

    A recoverable failure.

    +
    source

    pub fn recoverable_failure() -> Self

    A recoverable failure.

    During upload something went wrong, e.g. the network connection failed. The upload should be retried at a later time.

    -

    An unrecoverable upload failure.

    +
    source

    pub fn unrecoverable_failure() -> Self

    An unrecoverable upload failure.

    A possible cause might be a malformed URL.

    -

    A HTTP response code.

    +
    source

    pub fn http_status(code: i32) -> Self

    A HTTP response code.

    This can still indicate an error, depending on the status code.

    -

    This uploader is done.

    -

    Trait Implementations§

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    +
    source

    pub fn done() -> Self

    This uploader is done.

    +

    Trait Implementations§

    source§

    impl Debug for UploadResult

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    §

    impl<T, UT> HandleAlloc<UT> for T
    where + T: Send + Sync,

    §

    fn new_handle(value: Arc<T>) -> Handle

    Create a new handle for an Arc value Read more
    §

    fn clone_handle(handle: Handle) -> Handle

    Clone a handle Read more
    §

    fn consume_handle(handle: Handle) -> Arc<T>

    Consume a handle, getting back the initial Arc<>
    §

    fn get_arc(handle: Handle) -> Arc<Self>

    Get a clone of the Arc<> using a “borrowed” handle. Read more
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/docs/glean_core/upload/enum.UploadTaskAction.html b/docs/glean_core/upload/enum.UploadTaskAction.html index 75504f29f2..bb53dd6a6c 100644 --- a/docs/glean_core/upload/enum.UploadTaskAction.html +++ b/docs/glean_core/upload/enum.UploadTaskAction.html @@ -1,11 +1,19 @@ -UploadTaskAction in glean_core::upload - Rust
    pub enum UploadTaskAction {
    +UploadTaskAction in glean_core::upload - Rust
    +    
    pub enum UploadTaskAction {
         Next,
         End,
    -}
    Expand description

    Communication back whether the uploader loop should continue.

    -

    Variants§

    §

    Next

    Instruct the caller to continue with work.

    +}
    Expand description

    Communication back whether the uploader loop should continue.

    +

    Variants§

    §

    Next

    Instruct the caller to continue with work.

    §

    End

    Instruct the caller to end work.

    -

    Trait Implementations§

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Debug for UploadTaskAction

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    §

    impl<T, UT> HandleAlloc<UT> for T
    where + T: Send + Sync,

    §

    fn new_handle(value: Arc<T>) -> Handle

    Create a new handle for an Arc value Read more
    §

    fn clone_handle(handle: Handle) -> Handle

    Clone a handle Read more
    §

    fn consume_handle(handle: Handle) -> Arc<T>

    Consume a handle, getting back the initial Arc<>
    §

    fn get_arc(handle: Handle) -> Arc<Self>

    Get a clone of the Arc<> using a “borrowed” handle. Read more
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/docs/glean_core/upload/fn.chunked_log_info.html b/docs/glean_core/upload/fn.chunked_log_info.html index 3f0bc07cce..cca32770e8 100644 --- a/docs/glean_core/upload/fn.chunked_log_info.html +++ b/docs/glean_core/upload/fn.chunked_log_info.html @@ -1,2 +1,3 @@ -chunked_log_info in glean_core::upload - Rust
    pub fn chunked_log_info(_path: &str, payload: &str)
    Expand description

    Logs payload in one go (all other OS).

    -
    \ No newline at end of file +chunked_log_info in glean_core::upload - Rust +
    pub fn chunked_log_info(_path: &str, payload: &str)
    Expand description

    Logs payload in one go (all other OS).

    +
    \ No newline at end of file diff --git a/docs/glean_core/upload/index.html b/docs/glean_core/upload/index.html index c1af3cef1f..2cdc76026b 100644 --- a/docs/glean_core/upload/index.html +++ b/docs/glean_core/upload/index.html @@ -1,11 +1,12 @@ -glean_core::upload - Rust

    Module glean_core::upload

    source ·
    Expand description

    Manages the pending pings queue and directory.

    +glean_core::upload - Rust +

    Module glean_core::upload

    source ·
    Expand description

    Manages the pending pings queue and directory.

    -

    Structs

    A ping’s metadata, as (optionally) represented on disk.
    A representation of the data extracted from a ping file,
    Represents a request to upload a ping.
    Manages the pending pings queue and directory.

    Enums

    An enum representing the possible upload tasks to be performed by an uploader.
    The result of an attempted ping upload.
    Communication back whether the uploader loop should continue.

    Functions

    Logs payload in one go (all other OS).

    Type Definitions

    A representation for request headers.
    \ No newline at end of file +

    Structs

    Enums

    • An enum representing the possible upload tasks to be performed by an uploader.
    • The result of an attempted ping upload.
    • Communication back whether the uploader loop should continue.

    Functions

    Type Aliases

    • A representation for request headers.
    \ No newline at end of file diff --git a/docs/glean_core/upload/sidebar-items.js b/docs/glean_core/upload/sidebar-items.js index 4cf155d50f..ff3ee78783 100644 --- a/docs/glean_core/upload/sidebar-items.js +++ b/docs/glean_core/upload/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"enum":[["PingUploadTask","An enum representing the possible upload tasks to be performed by an uploader."],["UploadResult","The result of an attempted ping upload."],["UploadTaskAction","Communication back whether the uploader loop should continue."]],"fn":[["chunked_log_info","Logs payload in one go (all other OS)."]],"struct":[["PingMetadata","A ping’s metadata, as (optionally) represented on disk."],["PingPayload","A representation of the data extracted from a ping file,"],["PingRequest","Represents a request to upload a ping."],["PingUploadManager","Manages the pending pings queue and directory."]],"type":[["HeaderMap","A representation for request headers."]]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"enum":["PingUploadTask","UploadResult","UploadTaskAction"],"fn":["chunked_log_info"],"struct":["PingMetadata","PingPayload","PingRequest","PingUploadManager"],"type":["HeaderMap"]}; \ No newline at end of file diff --git a/docs/glean_core/upload/struct.PingMetadata.html b/docs/glean_core/upload/struct.PingMetadata.html index 236b336d36..ede1324214 100644 --- a/docs/glean_core/upload/struct.PingMetadata.html +++ b/docs/glean_core/upload/struct.PingMetadata.html @@ -1,14 +1,27 @@ -PingMetadata in glean_core::upload - Rust
    pub struct PingMetadata {
    -    pub headers: Option<HeaderMap>,
    -    pub body_has_info_sections: Option<bool>,
    -    pub ping_name: Option<String>,
    -}
    Expand description

    A ping’s metadata, as (optionally) represented on disk.

    +PingMetadata in glean_core::upload - Rust +
    pub struct PingMetadata {
    +    pub headers: Option<HeaderMap>,
    +    pub body_has_info_sections: Option<bool>,
    +    pub ping_name: Option<String>,
    +}
    Expand description

    A ping’s metadata, as (optionally) represented on disk.

    Anything that isn’t the upload path or the ping body.

    -

    Fields§

    §headers: Option<HeaderMap>

    HTTP headers to include when uploading the ping.

    -
    §body_has_info_sections: Option<bool>

    Whether the body has {client|ping}_info sections.

    -
    §ping_name: Option<String>

    The name of the ping.

    -

    Trait Implementations§

    Returns the “default value” for a type. Read more
    Deserialize this value from the given Serde deserializer. Read more
    Serialize this value into the given Serde serializer. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    +

    Fields§

    §headers: Option<HeaderMap>

    HTTP headers to include when uploading the ping.

    +
    §body_has_info_sections: Option<bool>

    Whether the body has {client|ping}_info sections.

    +
    §ping_name: Option<String>

    The name of the ping.

    +

    Trait Implementations§

    source§

    impl Default for PingMetadata

    source§

    fn default() -> PingMetadata

    Returns the “default value” for a type. Read more
    source§

    impl<'de> Deserialize<'de> for PingMetadata

    source§

    fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
    where + __D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    source§

    impl Serialize for PingMetadata

    source§

    fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
    where + __S: Serializer,

    Serialize this value into the given Serde serializer. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> EncodableKey for T
    where + T: Serialize,

    §

    fn to_bytes(&self) -> Result<Vec<u8>, DataError>

    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    §

    impl<T, UT> HandleAlloc<UT> for T
    where + T: Send + Sync,

    §

    fn new_handle(value: Arc<T>) -> Handle

    Create a new handle for an Arc value Read more
    §

    fn clone_handle(handle: Handle) -> Handle

    Clone a handle Read more
    §

    fn consume_handle(handle: Handle) -> Arc<T>

    Consume a handle, getting back the initial Arc<>
    §

    fn get_arc(handle: Handle) -> Arc<Self>

    Get a clone of the Arc<> using a “borrowed” handle. Read more
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<V> ObjectSerialize for V
    where + V: Serialize + for<'de> Deserialize<'de>,

    source§

    fn from_str(obj: &str) -> Result<V, ObjectError>

    Deserialize the object from its JSON representation. Read more
    source§

    fn into_serialized_object(self) -> Result<Value, ObjectError>

    Serialize this object into a JSON string.
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> DeserializeOwned for T
    where + T: for<'de> Deserialize<'de>,

    \ No newline at end of file diff --git a/docs/glean_core/upload/struct.PingPayload.html b/docs/glean_core/upload/struct.PingPayload.html index cce33dab83..e683ff9504 100644 --- a/docs/glean_core/upload/struct.PingPayload.html +++ b/docs/glean_core/upload/struct.PingPayload.html @@ -1,19 +1,28 @@ -PingPayload in glean_core::upload - Rust
    pub struct PingPayload {
    -    pub document_id: String,
    -    pub upload_path: String,
    -    pub json_body: String,
    -    pub headers: Option<HeaderMap>,
    -    pub body_has_info_sections: bool,
    -    pub ping_name: String,
    -}
    Expand description

    A representation of the data extracted from a ping file,

    -

    Fields§

    §document_id: String

    The ping’s doc_id.

    -
    §upload_path: String

    The path to upload the ping to.

    -
    §json_body: String

    The ping body as JSON-encoded string.

    -
    §headers: Option<HeaderMap>

    HTTP headers to include in the upload request.

    -
    §body_has_info_sections: bool

    Whether the ping body contains {client|ping}_info

    -
    §ping_name: String

    The ping’s name. (Also likely in the upload_path.)

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Returns the “default value” for a type. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    +PingPayload in glean_core::upload - Rust +
    pub struct PingPayload {
    +    pub document_id: String,
    +    pub upload_path: String,
    +    pub json_body: String,
    +    pub headers: Option<HeaderMap>,
    +    pub body_has_info_sections: bool,
    +    pub ping_name: String,
    +}
    Expand description

    A representation of the data extracted from a ping file,

    +

    Fields§

    §document_id: String

    The ping’s doc_id.

    +
    §upload_path: String

    The path to upload the ping to.

    +
    §json_body: String

    The ping body as JSON-encoded string.

    +
    §headers: Option<HeaderMap>

    HTTP headers to include in the upload request.

    +
    §body_has_info_sections: bool

    Whether the ping body contains {client|ping}_info

    +
    §ping_name: String

    The ping’s name. (Also likely in the upload_path.)

    +

    Trait Implementations§

    source§

    impl Clone for PingPayload

    source§

    fn clone(&self) -> PingPayload

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for PingPayload

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for PingPayload

    source§

    fn default() -> PingPayload

    Returns the “default value” for a type. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    §

    impl<T, UT> HandleAlloc<UT> for T
    where + T: Send + Sync,

    §

    fn new_handle(value: Arc<T>) -> Handle

    Create a new handle for an Arc value Read more
    §

    fn clone_handle(handle: Handle) -> Handle

    Clone a handle Read more
    §

    fn consume_handle(handle: Handle) -> Arc<T>

    Consume a handle, getting back the initial Arc<>
    §

    fn get_arc(handle: Handle) -> Arc<Self>

    Get a clone of the Arc<> using a “borrowed” handle. Read more
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/docs/glean_core/upload/struct.PingRequest.html b/docs/glean_core/upload/struct.PingRequest.html index 78cd534173..68c20b5913 100644 --- a/docs/glean_core/upload/struct.PingRequest.html +++ b/docs/glean_core/upload/struct.PingRequest.html @@ -1,35 +1,44 @@ -PingRequest in glean_core::upload - Rust
    pub struct PingRequest {
    -    pub document_id: String,
    -    pub path: String,
    -    pub body: Vec<u8>,
    +PingRequest in glean_core::upload - Rust
    +    
    pub struct PingRequest {
    +    pub document_id: String,
    +    pub path: String,
    +    pub body: Vec<u8>,
         pub headers: HeaderMap,
    -    pub body_has_info_sections: bool,
    -    pub ping_name: String,
    -}
    Expand description

    Represents a request to upload a ping.

    -

    Fields§

    §document_id: String

    The Job ID to identify this request, + pub body_has_info_sections: bool, + pub ping_name: String, +}

    Expand description

    Represents a request to upload a ping.

    +

    Fields§

    §document_id: String

    The Job ID to identify this request, this is the same as the ping UUID.

    -
    §path: String

    The path for the server to upload the ping to.

    -
    §body: Vec<u8>

    The body of the request, as a byte array. If gzip encoded, then +

    §path: String

    The path for the server to upload the ping to.

    +
    §body: Vec<u8>

    The body of the request, as a byte array. If gzip encoded, then the headers list will contain a Content-Encoding header with the value gzip.

    -
    §headers: HeaderMap

    A map with all the headers to be sent with the request.

    -
    §body_has_info_sections: bool

    Whether the body has {client|ping}_info sections.

    -
    §ping_name: String

    The ping’s name. Likely also somewhere in path.

    -

    Implementations§

    Creates a new builder-style structure to help build a PingRequest.

    +
    §headers: HeaderMap

    A map with all the headers to be sent with the request.

    +
    §body_has_info_sections: bool

    Whether the body has {client|ping}_info sections.

    +
    §ping_name: String

    The ping’s name. Likely also somewhere in path.

    +

    Implementations§

    source§

    impl PingRequest

    source

    pub fn builder(language_binding_name: &str, body_max_size: usize) -> Builder

    Creates a new builder-style structure to help build a PingRequest.

    Arguments
    • language_binding_name - The name of the language used by the binding that instantiated this Glean instance. This is used to build the X-Telemetry-Agent header value.
    • body_max_size - The maximum size in bytes the compressed ping body may have to be eligible for upload.
    -

    Verifies if current request is for a deletion-request ping.

    -

    Decompresses and pretty-format the ping payload

    +
    source

    pub fn is_deletion_request(&self) -> bool

    Verifies if current request is for a deletion-request ping.

    +
    source

    pub fn pretty_body(&self) -> Option<String>

    Decompresses and pretty-format the ping payload

    Should be used for logging when required. This decompresses the payload in memory.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Clone for PingRequest

    source§

    fn clone(&self) -> PingRequest

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for PingRequest

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl PartialEq for PingRequest

    source§

    fn eq(&self, other: &PingRequest) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl Eq for PingRequest

    source§

    impl StructuralEq for PingRequest

    source§

    impl StructuralPartialEq for PingRequest

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    §

    impl<T, UT> HandleAlloc<UT> for T
    where + T: Send + Sync,

    §

    fn new_handle(value: Arc<T>) -> Handle

    Create a new handle for an Arc value Read more
    §

    fn clone_handle(handle: Handle) -> Handle

    Clone a handle Read more
    §

    fn consume_handle(handle: Handle) -> Arc<T>

    Consume a handle, getting back the initial Arc<>
    §

    fn get_arc(handle: Handle) -> Arc<Self>

    Get a clone of the Arc<> using a “borrowed” handle. Read more
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/docs/glean_core/upload/struct.PingUploadManager.html b/docs/glean_core/upload/struct.PingUploadManager.html index 6df6e84b77..86702fd996 100644 --- a/docs/glean_core/upload/struct.PingUploadManager.html +++ b/docs/glean_core/upload/struct.PingUploadManager.html @@ -1,5 +1,6 @@ -PingUploadManager in glean_core::upload - Rust
    pub struct PingUploadManager { /* private fields */ }
    Expand description

    Manages the pending pings queue and directory.

    -

    Implementations§

    Creates a new PingUploadManager.

    +PingUploadManager in glean_core::upload - Rust +
    pub struct PingUploadManager { /* private fields */ }
    Expand description

    Manages the pending pings queue and directory.

    +

    Implementations§

    source§

    impl PingUploadManager

    source

    pub fn new<P: Into<PathBuf>>(data_path: P, language_binding_name: &str) -> Self

    Creates a new PingUploadManager.

    Arguments
    • data_path - Path to the pending pings directory.
    • @@ -7,12 +8,15 @@
      Arguments
    Panics

    Will panic if unable to spawn a new thread.

    -

    Spawns a new thread and processes the pending pings directories, +

    source

    pub fn scan_pending_pings_directories( + &self, + trigger_upload: bool +) -> JoinHandle<()>

    Spawns a new thread and processes the pending pings directories, filling up the queue with whatever pings are in there.

    Returns

    The JoinHandle to the spawned thread

    -

    Enqueue a ping for upload.

    -

    Adds rate limiting capability to this upload manager.

    +
    source

    pub fn enqueue_ping(&self, glean: &Glean, ping: PingPayload)

    Enqueue a ping for upload.

    +
    source

    pub fn set_rate_limiter(&mut self, interval: u64, max_tasks: u32)

    Adds rate limiting capability to this upload manager.

    The rate limiter will limit the amount of calls to get_upload_task per interval.

    Setting this will restart count and timer in case there was a previous rate limiter set (e.g. if we have reached the current limit and call this function, we start counting again @@ -22,15 +26,15 @@

    Arguments
  • interval - the amount of seconds in each rate limiting window.
  • max_tasks - the maximum amount of task requests allowed per interval.
  • -

    Reads a ping file, creates a PingRequest and adds it to the queue.

    +
    source

    pub fn enqueue_ping_from_file(&self, glean: &Glean, document_id: &str)

    Reads a ping file, creates a PingRequest and adds it to the queue.

    Duplicate requests won’t be added.

    Arguments
    • glean - The Glean object holding the database.
    • document_id - The UUID of the ping in question.
    -

    Clears the pending pings queue, leaves the deletion-request pings.

    -

    Gets the next PingUploadTask.

    +
    source

    pub fn clear_ping_queue(&self) -> RwLockWriteGuard<'_, VecDeque<PingRequest>>

    Clears the pending pings queue, leaves the deletion-request pings.

    +
    source

    pub fn get_upload_task(&self, glean: &Glean, log_ping: bool) -> PingUploadTask

    Gets the next PingUploadTask.

    Arguments
    • glean - The Glean object holding the database.
    • @@ -38,7 +42,12 @@
      Arguments
    Returns

    The next PingUploadTask.

    -

    Processes the response from an attempt to upload a ping.

    +
    source

    pub fn process_ping_upload_response( + &self, + glean: &Glean, + document_id: &str, + status: UploadResult +) -> UploadTaskAction

    Processes the response from an attempt to upload a ping.

    Based on the HTTP status of said response, the possible outcomes are:

      @@ -84,8 +93,15 @@
      Arguments
    • document_id - The UUID of the ping in question.
    • status - The HTTP status of the response.
    -

    Trait Implementations§

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Create a new handle for an Arc value Read more
    Clone a handle Read more
    Consume a handle, getting back the initial Arc<>
    Get a clone of the Arc<> using a “borrowed” handle. Read more

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Debug for PingUploadManager

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    §

    impl<T, UT> HandleAlloc<UT> for T
    where + T: Send + Sync,

    §

    fn new_handle(value: Arc<T>) -> Handle

    Create a new handle for an Arc value Read more
    §

    fn clone_handle(handle: Handle) -> Handle

    Clone a handle Read more
    §

    fn consume_handle(handle: Handle) -> Arc<T>

    Consume a handle, getting back the initial Arc<>
    §

    fn get_arc(handle: Handle) -> Arc<Self>

    Get a clone of the Arc<> using a “borrowed” handle. Read more
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/docs/glean_core/upload/type.HeaderMap.html b/docs/glean_core/upload/type.HeaderMap.html index 2a6762da58..d538c6d50d 100644 --- a/docs/glean_core/upload/type.HeaderMap.html +++ b/docs/glean_core/upload/type.HeaderMap.html @@ -1,2 +1,3 @@ -HeaderMap in glean_core::upload - Rust

    Type Definition glean_core::upload::HeaderMap

    source ·
    pub type HeaderMap = HashMap<String, String>;
    Expand description

    A representation for request headers.

    -
    \ No newline at end of file +HeaderMap in glean_core::upload - Rust +

    Type Alias glean_core::upload::HeaderMap

    source ·
    pub type HeaderMap = HashMap<String, String>;
    Expand description

    A representation for request headers.

    +

    Aliased Type§

    struct HeaderMap { /* private fields */ }
    \ No newline at end of file diff --git a/docs/help.html b/docs/help.html index bf87ee7981..d823259f28 100644 --- a/docs/help.html +++ b/docs/help.html @@ -1 +1,2 @@ -Rustdoc help

    Rustdoc help

    Back
    \ No newline at end of file +Help +

    Rustdoc help

    Back
    \ No newline at end of file diff --git a/docs/implementors/core/clone/trait.Clone.js b/docs/implementors/core/clone/trait.Clone.js deleted file mode 100644 index 8a76c38be5..0000000000 --- a/docs/implementors/core/clone/trait.Clone.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"glean_core":[["impl Clone for Lifetime"],["impl Clone for CommonMetricData"],["impl Clone for ErrorType"],["impl Clone for RecordedEvent"],["impl Clone for HistogramType"],["impl Clone for BooleanMetric"],["impl Clone for CounterMetric"],["impl Clone for CustomDistributionMetric"],["impl Clone for Datetime"],["impl Clone for DatetimeMetric"],["impl Clone for DenominatorMetric"],["impl Clone for EventMetric"],["impl Clone for MemoryDistributionMetric"],["impl Clone for MemoryUnit"],["impl Clone for NumeratorMetric"],["impl Clone for ObjectMetric"],["impl Clone for PingType"],["impl Clone for QuantityMetric"],["impl Clone for Rate"],["impl Clone for RateMetric"],["impl Clone for RecordedExperiment"],["impl Clone for RemoteSettingsConfig"],["impl Clone for StringMetric"],["impl Clone for StringListMetric"],["impl Clone for TextMetric"],["impl Clone for TimeUnit"],["impl Clone for TimespanMetric"],["impl Clone for TimerId"],["impl Clone for TimingDistributionMetric"],["impl Clone for UrlMetric"],["impl Clone for UuidMetric"],["impl Clone for Metric"],["impl Clone for NoExtraKeys"],["impl Clone for PingPayload"],["impl Clone for PingRequest"],["impl Clone for InternalConfiguration"],["impl Clone for PingRateLimit"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/implementors/core/cmp/trait.Eq.js b/docs/implementors/core/cmp/trait.Eq.js deleted file mode 100644 index ffc5756887..0000000000 --- a/docs/implementors/core/cmp/trait.Eq.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"glean_core":[["impl Eq for Lifetime"],["impl Eq for ErrorType"],["impl Eq for RecordedEvent"],["impl Eq for Datetime"],["impl Eq for Rate"],["impl Eq for RecordedExperiment"],["impl Eq for TimeUnit"],["impl Eq for TimerId"],["impl Eq for NoExtraKeys"],["impl Eq for PingRequest"],["impl Eq for PingUploadTask"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/implementors/core/cmp/trait.PartialEq.js b/docs/implementors/core/cmp/trait.PartialEq.js deleted file mode 100644 index 57b89abdee..0000000000 --- a/docs/implementors/core/cmp/trait.PartialEq.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"glean_core":[["impl PartialEq<Lifetime> for Lifetime"],["impl PartialEq<ErrorType> for ErrorType"],["impl PartialEq<RecordedEvent> for RecordedEvent"],["impl PartialEq<Datetime> for Datetime"],["impl PartialEq<Rate> for Rate"],["impl PartialEq<RecordedExperiment> for RecordedExperiment"],["impl PartialEq<TimeUnit> for TimeUnit"],["impl PartialEq<TimerId> for TimerId"],["impl PartialEq<Metric> for Metric"],["impl PartialEq<NoExtraKeys> for NoExtraKeys"],["impl PartialEq<PingRequest> for PingRequest"],["impl PartialEq<PingUploadTask> for PingUploadTask"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/implementors/core/convert/trait.From.js b/docs/implementors/core/convert/trait.From.js deleted file mode 100644 index c261be6d19..0000000000 --- a/docs/implementors/core/convert/trait.From.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"glean_core":[["impl From<ErrorKind> for Error"],["impl From<Error> for Error"],["impl From<StoreError> for Error"],["impl From<Error> for Error"],["impl From<OsString> for Error"],["impl From<Infallible> for Error"],["impl From<DateTime<FixedOffset>> for Datetime"],["impl From<(i32, i32)> for Rate"],["impl From<u64> for TimerId"],["impl From<usize> for TimerId"],["impl From<UnexpectedUniFFICallbackError> for CallbackError"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/implementors/core/convert/trait.TryFrom.js b/docs/implementors/core/convert/trait.TryFrom.js deleted file mode 100644 index 2fe9cfb6aa..0000000000 --- a/docs/implementors/core/convert/trait.TryFrom.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"glean_core":[["impl TryFrom<i32> for Lifetime"],["impl TryFrom<i32> for ErrorType"],["impl TryFrom<i32> for HistogramType"],["impl TryFrom<i32> for MemoryUnit"],["impl TryFrom<String> for RemoteSettingsConfig"],["impl TryFrom<i32> for TimeUnit"],["impl TryFrom<i32> for NoExtraKeys"],["impl TryFrom<&str> for NoExtraKeys"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/implementors/core/default/trait.Default.js b/docs/implementors/core/default/trait.Default.js deleted file mode 100644 index f49c4b2ee3..0000000000 --- a/docs/implementors/core/default/trait.Default.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"glean_core":[["impl Default for Lifetime"],["impl Default for CommonMetricData"],["impl Default for ClientInfoMetrics"],["impl Default for Datetime"],["impl Default for RemoteSettingsConfig"],["impl Default for PingMaker"],["impl Default for PingPayload"],["impl Default for PingMetadata"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/implementors/core/fmt/trait.Debug.js b/docs/implementors/core/fmt/trait.Debug.js deleted file mode 100644 index 674554d9dc..0000000000 --- a/docs/implementors/core/fmt/trait.Debug.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"glean_core":[["impl Debug for Lifetime"],["impl Debug for CommonMetricData"],["impl Debug for Glean"],["impl Debug for ClientInfoMetrics"],["impl Debug for ErrorKind"],["impl Debug for Error"],["impl Debug for ErrorType"],["impl Debug for RecordedEvent"],["impl Debug for HistogramType"],["impl Debug for BooleanMetric"],["impl Debug for CounterMetric"],["impl Debug for CustomDistributionMetric"],["impl Debug for Datetime"],["impl Debug for DatetimeMetric"],["impl Debug for DenominatorMetric"],["impl Debug for EventMetric"],["impl<T: Debug> Debug for LabeledMetric<T>"],["impl Debug for MemoryDistributionMetric"],["impl Debug for MemoryUnit"],["impl Debug for ObjectMetric"],["impl Debug for PingType"],["impl Debug for QuantityMetric"],["impl Debug for Rate"],["impl Debug for RateMetric"],["impl Debug for RecordedExperiment"],["impl Debug for RemoteSettingsConfig"],["impl Debug for StringMetric"],["impl Debug for StringListMetric"],["impl Debug for TextMetric"],["impl Debug for TimeUnit"],["impl Debug for TimespanMetric"],["impl Debug for TimerId"],["impl Debug for TimingDistributionMetric"],["impl Debug for UrlMetric"],["impl Debug for UuidMetric"],["impl Debug for DistributionData"],["impl Debug for Metric"],["impl Debug for NoExtraKeys"],["impl Debug for ObjectError"],["impl Debug for PingPayload"],["impl Debug for PingRequest"],["impl Debug for UploadResult"],["impl Debug for UploadTaskAction"],["impl Debug for PingUploadTask"],["impl Debug for PingUploadManager"],["impl Debug for InternalConfiguration"],["impl Debug for PingRateLimit"],["impl Debug for CallbackError"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/implementors/core/fmt/trait.Display.js b/docs/implementors/core/fmt/trait.Display.js deleted file mode 100644 index c829e961b5..0000000000 --- a/docs/implementors/core/fmt/trait.Display.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"glean_core":[["impl Display for Error"],["impl Display for ObjectError"],["impl Display for CallbackError"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/implementors/core/marker/trait.Copy.js b/docs/implementors/core/marker/trait.Copy.js deleted file mode 100644 index 752ba6eef5..0000000000 --- a/docs/implementors/core/marker/trait.Copy.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"glean_core":[["impl Copy for Lifetime"],["impl Copy for ErrorType"],["impl Copy for HistogramType"],["impl Copy for MemoryUnit"],["impl Copy for TimeUnit"],["impl Copy for TimerId"],["impl Copy for NoExtraKeys"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/implementors/core/marker/trait.Send.js b/docs/implementors/core/marker/trait.Send.js deleted file mode 100644 index 2d458afaa2..0000000000 --- a/docs/implementors/core/marker/trait.Send.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"glean_core":[["impl Send for Lifetime",1,["glean_core::common_metric_data::Lifetime"]],["impl Send for CommonMetricData",1,["glean_core::common_metric_data::CommonMetricData"]],["impl Send for Glean",1,["glean_core::core::Glean"]],["impl Send for ClientInfoMetrics",1,["glean_core::core_metrics::ClientInfoMetrics"]],["impl Send for ErrorKind",1,["glean_core::error::ErrorKind"]],["impl Send for Error",1,["glean_core::error::Error"]],["impl Send for ErrorType",1,["glean_core::error_recording::ErrorType"]],["impl Send for RecordedEvent",1,["glean_core::event_database::RecordedEvent"]],["impl Send for HistogramType",1,["glean_core::histogram::HistogramType"]],["impl Send for BooleanMetric",1,["glean_core::metrics::boolean::BooleanMetric"]],["impl Send for CounterMetric",1,["glean_core::metrics::counter::CounterMetric"]],["impl Send for CustomDistributionMetric",1,["glean_core::metrics::custom_distribution::CustomDistributionMetric"]],["impl Send for Datetime",1,["glean_core::metrics::datetime::Datetime"]],["impl Send for DatetimeMetric",1,["glean_core::metrics::datetime::DatetimeMetric"]],["impl Send for DenominatorMetric",1,["glean_core::metrics::denominator::DenominatorMetric"]],["impl Send for EventMetric",1,["glean_core::metrics::event::EventMetric"]],["impl Send for LabeledMetricData",1,["glean_core::metrics::labeled::LabeledMetricData"]],["impl<T> Send for LabeledMetric<T>where
        T: Send + Sync,
    ",1,["glean_core::metrics::labeled::LabeledMetric"]],["impl Send for MemoryDistributionMetric",1,["glean_core::metrics::memory_distribution::MemoryDistributionMetric"]],["impl Send for MemoryUnit",1,["glean_core::metrics::memory_unit::MemoryUnit"]],["impl Send for NumeratorMetric",1,["glean_core::metrics::numerator::NumeratorMetric"]],["impl Send for ObjectMetric",1,["glean_core::metrics::object::ObjectMetric"]],["impl Send for PingType",1,["glean_core::metrics::ping::PingType"]],["impl Send for QuantityMetric",1,["glean_core::metrics::quantity::QuantityMetric"]],["impl Send for Rate",1,["glean_core::metrics::rate::Rate"]],["impl Send for RateMetric",1,["glean_core::metrics::rate::RateMetric"]],["impl Send for RecordedExperiment",1,["glean_core::metrics::recorded_experiment::RecordedExperiment"]],["impl Send for RemoteSettingsConfig",1,["glean_core::metrics::remote_settings_config::RemoteSettingsConfig"]],["impl Send for StringMetric",1,["glean_core::metrics::string::StringMetric"]],["impl Send for StringListMetric",1,["glean_core::metrics::string_list::StringListMetric"]],["impl Send for TextMetric",1,["glean_core::metrics::text::TextMetric"]],["impl Send for TimeUnit",1,["glean_core::metrics::time_unit::TimeUnit"]],["impl Send for TimespanMetric",1,["glean_core::metrics::timespan::TimespanMetric"]],["impl Send for TimerId",1,["glean_core::metrics::timing_distribution::TimerId"]],["impl Send for TimingDistributionMetric",1,["glean_core::metrics::timing_distribution::TimingDistributionMetric"]],["impl Send for UrlMetric",1,["glean_core::metrics::url::UrlMetric"]],["impl Send for UuidMetric",1,["glean_core::metrics::uuid::UuidMetric"]],["impl Send for DistributionData",1,["glean_core::metrics::DistributionData"]],["impl Send for Metric",1,["glean_core::metrics::Metric"]],["impl<'a> Send for Ping<'a>",1,["glean_core::ping::Ping"]],["impl Send for PingMaker",1,["glean_core::ping::PingMaker"]],["impl Send for StorageManager",1,["glean_core::storage::StorageManager"]],["impl Send for NoExtraKeys",1,["glean_core::traits::event::NoExtraKeys"]],["impl Send for EventRecordingError",1,["glean_core::traits::event::EventRecordingError"]],["impl Send for ObjectError",1,["glean_core::traits::object::ObjectError"]],["impl Send for PingPayload",1,["glean_core::upload::directory::PingPayload"]],["impl Send for PingMetadata",1,["glean_core::upload::directory::PingMetadata"]],["impl Send for PingRequest",1,["glean_core::upload::request::PingRequest"]],["impl Send for UploadResult",1,["glean_core::upload::result::UploadResult"]],["impl Send for UploadTaskAction",1,["glean_core::upload::result::UploadTaskAction"]],["impl Send for PingUploadTask",1,["glean_core::upload::PingUploadTask"]],["impl Send for PingUploadManager",1,["glean_core::upload::PingUploadManager"]],["impl Send for InternalConfiguration",1,["glean_core::InternalConfiguration"]],["impl Send for PingRateLimit",1,["glean_core::PingRateLimit"]],["impl Send for CallbackError",1,["glean_core::CallbackError"]]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/implementors/core/marker/trait.StructuralEq.js b/docs/implementors/core/marker/trait.StructuralEq.js deleted file mode 100644 index b545f9d47d..0000000000 --- a/docs/implementors/core/marker/trait.StructuralEq.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"glean_core":[["impl StructuralEq for Lifetime"],["impl StructuralEq for ErrorType"],["impl StructuralEq for RecordedEvent"],["impl StructuralEq for Datetime"],["impl StructuralEq for Rate"],["impl StructuralEq for RecordedExperiment"],["impl StructuralEq for TimeUnit"],["impl StructuralEq for TimerId"],["impl StructuralEq for NoExtraKeys"],["impl StructuralEq for PingRequest"],["impl StructuralEq for PingUploadTask"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/implementors/core/marker/trait.StructuralPartialEq.js b/docs/implementors/core/marker/trait.StructuralPartialEq.js deleted file mode 100644 index a0acacca16..0000000000 --- a/docs/implementors/core/marker/trait.StructuralPartialEq.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"glean_core":[["impl StructuralPartialEq for Lifetime"],["impl StructuralPartialEq for ErrorType"],["impl StructuralPartialEq for RecordedEvent"],["impl StructuralPartialEq for Datetime"],["impl StructuralPartialEq for Rate"],["impl StructuralPartialEq for RecordedExperiment"],["impl StructuralPartialEq for TimeUnit"],["impl StructuralPartialEq for TimerId"],["impl StructuralPartialEq for Metric"],["impl StructuralPartialEq for NoExtraKeys"],["impl StructuralPartialEq for PingRequest"],["impl StructuralPartialEq for PingUploadTask"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/implementors/core/marker/trait.Sync.js b/docs/implementors/core/marker/trait.Sync.js deleted file mode 100644 index e4ae067875..0000000000 --- a/docs/implementors/core/marker/trait.Sync.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"glean_core":[["impl Sync for Lifetime",1,["glean_core::common_metric_data::Lifetime"]],["impl Sync for CommonMetricData",1,["glean_core::common_metric_data::CommonMetricData"]],["impl !Sync for Glean",1,["glean_core::core::Glean"]],["impl Sync for ClientInfoMetrics",1,["glean_core::core_metrics::ClientInfoMetrics"]],["impl Sync for ErrorKind",1,["glean_core::error::ErrorKind"]],["impl Sync for Error",1,["glean_core::error::Error"]],["impl Sync for ErrorType",1,["glean_core::error_recording::ErrorType"]],["impl Sync for RecordedEvent",1,["glean_core::event_database::RecordedEvent"]],["impl Sync for HistogramType",1,["glean_core::histogram::HistogramType"]],["impl Sync for BooleanMetric",1,["glean_core::metrics::boolean::BooleanMetric"]],["impl Sync for CounterMetric",1,["glean_core::metrics::counter::CounterMetric"]],["impl Sync for CustomDistributionMetric",1,["glean_core::metrics::custom_distribution::CustomDistributionMetric"]],["impl Sync for Datetime",1,["glean_core::metrics::datetime::Datetime"]],["impl Sync for DatetimeMetric",1,["glean_core::metrics::datetime::DatetimeMetric"]],["impl Sync for DenominatorMetric",1,["glean_core::metrics::denominator::DenominatorMetric"]],["impl Sync for EventMetric",1,["glean_core::metrics::event::EventMetric"]],["impl Sync for LabeledMetricData",1,["glean_core::metrics::labeled::LabeledMetricData"]],["impl<T> Sync for LabeledMetric<T>where
        T: Send + Sync,
    ",1,["glean_core::metrics::labeled::LabeledMetric"]],["impl Sync for MemoryDistributionMetric",1,["glean_core::metrics::memory_distribution::MemoryDistributionMetric"]],["impl Sync for MemoryUnit",1,["glean_core::metrics::memory_unit::MemoryUnit"]],["impl Sync for NumeratorMetric",1,["glean_core::metrics::numerator::NumeratorMetric"]],["impl Sync for ObjectMetric",1,["glean_core::metrics::object::ObjectMetric"]],["impl Sync for PingType",1,["glean_core::metrics::ping::PingType"]],["impl Sync for QuantityMetric",1,["glean_core::metrics::quantity::QuantityMetric"]],["impl Sync for Rate",1,["glean_core::metrics::rate::Rate"]],["impl Sync for RateMetric",1,["glean_core::metrics::rate::RateMetric"]],["impl Sync for RecordedExperiment",1,["glean_core::metrics::recorded_experiment::RecordedExperiment"]],["impl Sync for RemoteSettingsConfig",1,["glean_core::metrics::remote_settings_config::RemoteSettingsConfig"]],["impl Sync for StringMetric",1,["glean_core::metrics::string::StringMetric"]],["impl Sync for StringListMetric",1,["glean_core::metrics::string_list::StringListMetric"]],["impl Sync for TextMetric",1,["glean_core::metrics::text::TextMetric"]],["impl Sync for TimeUnit",1,["glean_core::metrics::time_unit::TimeUnit"]],["impl Sync for TimespanMetric",1,["glean_core::metrics::timespan::TimespanMetric"]],["impl Sync for TimerId",1,["glean_core::metrics::timing_distribution::TimerId"]],["impl Sync for TimingDistributionMetric",1,["glean_core::metrics::timing_distribution::TimingDistributionMetric"]],["impl Sync for UrlMetric",1,["glean_core::metrics::url::UrlMetric"]],["impl Sync for UuidMetric",1,["glean_core::metrics::uuid::UuidMetric"]],["impl Sync for DistributionData",1,["glean_core::metrics::DistributionData"]],["impl Sync for Metric",1,["glean_core::metrics::Metric"]],["impl<'a> Sync for Ping<'a>",1,["glean_core::ping::Ping"]],["impl Sync for PingMaker",1,["glean_core::ping::PingMaker"]],["impl Sync for StorageManager",1,["glean_core::storage::StorageManager"]],["impl Sync for NoExtraKeys",1,["glean_core::traits::event::NoExtraKeys"]],["impl Sync for EventRecordingError",1,["glean_core::traits::event::EventRecordingError"]],["impl Sync for ObjectError",1,["glean_core::traits::object::ObjectError"]],["impl Sync for PingPayload",1,["glean_core::upload::directory::PingPayload"]],["impl Sync for PingMetadata",1,["glean_core::upload::directory::PingMetadata"]],["impl Sync for PingRequest",1,["glean_core::upload::request::PingRequest"]],["impl Sync for UploadResult",1,["glean_core::upload::result::UploadResult"]],["impl Sync for UploadTaskAction",1,["glean_core::upload::result::UploadTaskAction"]],["impl Sync for PingUploadTask",1,["glean_core::upload::PingUploadTask"]],["impl Sync for PingUploadManager",1,["glean_core::upload::PingUploadManager"]],["impl Sync for InternalConfiguration",1,["glean_core::InternalConfiguration"]],["impl Sync for PingRateLimit",1,["glean_core::PingRateLimit"]],["impl Sync for CallbackError",1,["glean_core::CallbackError"]]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/implementors/core/marker/trait.Unpin.js b/docs/implementors/core/marker/trait.Unpin.js deleted file mode 100644 index a83581c6c8..0000000000 --- a/docs/implementors/core/marker/trait.Unpin.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"glean_core":[["impl Unpin for Lifetime",1,["glean_core::common_metric_data::Lifetime"]],["impl Unpin for CommonMetricData",1,["glean_core::common_metric_data::CommonMetricData"]],["impl Unpin for Glean",1,["glean_core::core::Glean"]],["impl Unpin for ClientInfoMetrics",1,["glean_core::core_metrics::ClientInfoMetrics"]],["impl Unpin for ErrorKind",1,["glean_core::error::ErrorKind"]],["impl Unpin for Error",1,["glean_core::error::Error"]],["impl Unpin for ErrorType",1,["glean_core::error_recording::ErrorType"]],["impl Unpin for RecordedEvent",1,["glean_core::event_database::RecordedEvent"]],["impl Unpin for HistogramType",1,["glean_core::histogram::HistogramType"]],["impl Unpin for BooleanMetric",1,["glean_core::metrics::boolean::BooleanMetric"]],["impl Unpin for CounterMetric",1,["glean_core::metrics::counter::CounterMetric"]],["impl Unpin for CustomDistributionMetric",1,["glean_core::metrics::custom_distribution::CustomDistributionMetric"]],["impl Unpin for Datetime",1,["glean_core::metrics::datetime::Datetime"]],["impl Unpin for DatetimeMetric",1,["glean_core::metrics::datetime::DatetimeMetric"]],["impl Unpin for DenominatorMetric",1,["glean_core::metrics::denominator::DenominatorMetric"]],["impl Unpin for EventMetric",1,["glean_core::metrics::event::EventMetric"]],["impl Unpin for LabeledMetricData",1,["glean_core::metrics::labeled::LabeledMetricData"]],["impl<T> Unpin for LabeledMetric<T>where
        T: Unpin,
    ",1,["glean_core::metrics::labeled::LabeledMetric"]],["impl Unpin for MemoryDistributionMetric",1,["glean_core::metrics::memory_distribution::MemoryDistributionMetric"]],["impl Unpin for MemoryUnit",1,["glean_core::metrics::memory_unit::MemoryUnit"]],["impl Unpin for NumeratorMetric",1,["glean_core::metrics::numerator::NumeratorMetric"]],["impl Unpin for ObjectMetric",1,["glean_core::metrics::object::ObjectMetric"]],["impl Unpin for PingType",1,["glean_core::metrics::ping::PingType"]],["impl Unpin for QuantityMetric",1,["glean_core::metrics::quantity::QuantityMetric"]],["impl Unpin for Rate",1,["glean_core::metrics::rate::Rate"]],["impl Unpin for RateMetric",1,["glean_core::metrics::rate::RateMetric"]],["impl Unpin for RecordedExperiment",1,["glean_core::metrics::recorded_experiment::RecordedExperiment"]],["impl Unpin for RemoteSettingsConfig",1,["glean_core::metrics::remote_settings_config::RemoteSettingsConfig"]],["impl Unpin for StringMetric",1,["glean_core::metrics::string::StringMetric"]],["impl Unpin for StringListMetric",1,["glean_core::metrics::string_list::StringListMetric"]],["impl Unpin for TextMetric",1,["glean_core::metrics::text::TextMetric"]],["impl Unpin for TimeUnit",1,["glean_core::metrics::time_unit::TimeUnit"]],["impl Unpin for TimespanMetric",1,["glean_core::metrics::timespan::TimespanMetric"]],["impl Unpin for TimerId",1,["glean_core::metrics::timing_distribution::TimerId"]],["impl Unpin for TimingDistributionMetric",1,["glean_core::metrics::timing_distribution::TimingDistributionMetric"]],["impl Unpin for UrlMetric",1,["glean_core::metrics::url::UrlMetric"]],["impl Unpin for UuidMetric",1,["glean_core::metrics::uuid::UuidMetric"]],["impl Unpin for DistributionData",1,["glean_core::metrics::DistributionData"]],["impl Unpin for Metric",1,["glean_core::metrics::Metric"]],["impl<'a> Unpin for Ping<'a>",1,["glean_core::ping::Ping"]],["impl Unpin for PingMaker",1,["glean_core::ping::PingMaker"]],["impl Unpin for StorageManager",1,["glean_core::storage::StorageManager"]],["impl Unpin for NoExtraKeys",1,["glean_core::traits::event::NoExtraKeys"]],["impl Unpin for EventRecordingError",1,["glean_core::traits::event::EventRecordingError"]],["impl Unpin for ObjectError",1,["glean_core::traits::object::ObjectError"]],["impl Unpin for PingPayload",1,["glean_core::upload::directory::PingPayload"]],["impl Unpin for PingMetadata",1,["glean_core::upload::directory::PingMetadata"]],["impl Unpin for PingRequest",1,["glean_core::upload::request::PingRequest"]],["impl Unpin for UploadResult",1,["glean_core::upload::result::UploadResult"]],["impl Unpin for UploadTaskAction",1,["glean_core::upload::result::UploadTaskAction"]],["impl Unpin for PingUploadTask",1,["glean_core::upload::PingUploadTask"]],["impl Unpin for PingUploadManager",1,["glean_core::upload::PingUploadManager"]],["impl Unpin for InternalConfiguration",1,["glean_core::InternalConfiguration"]],["impl Unpin for PingRateLimit",1,["glean_core::PingRateLimit"]],["impl Unpin for CallbackError",1,["glean_core::CallbackError"]]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js b/docs/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js deleted file mode 100644 index 7061b06cb5..0000000000 --- a/docs/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"glean_core":[["impl RefUnwindSafe for Lifetime",1,["glean_core::common_metric_data::Lifetime"]],["impl RefUnwindSafe for CommonMetricData",1,["glean_core::common_metric_data::CommonMetricData"]],["impl !RefUnwindSafe for Glean",1,["glean_core::core::Glean"]],["impl RefUnwindSafe for ClientInfoMetrics",1,["glean_core::core_metrics::ClientInfoMetrics"]],["impl !RefUnwindSafe for ErrorKind",1,["glean_core::error::ErrorKind"]],["impl !RefUnwindSafe for Error",1,["glean_core::error::Error"]],["impl RefUnwindSafe for ErrorType",1,["glean_core::error_recording::ErrorType"]],["impl RefUnwindSafe for RecordedEvent",1,["glean_core::event_database::RecordedEvent"]],["impl RefUnwindSafe for HistogramType",1,["glean_core::histogram::HistogramType"]],["impl RefUnwindSafe for BooleanMetric",1,["glean_core::metrics::boolean::BooleanMetric"]],["impl RefUnwindSafe for CounterMetric",1,["glean_core::metrics::counter::CounterMetric"]],["impl RefUnwindSafe for CustomDistributionMetric",1,["glean_core::metrics::custom_distribution::CustomDistributionMetric"]],["impl RefUnwindSafe for Datetime",1,["glean_core::metrics::datetime::Datetime"]],["impl RefUnwindSafe for DatetimeMetric",1,["glean_core::metrics::datetime::DatetimeMetric"]],["impl RefUnwindSafe for DenominatorMetric",1,["glean_core::metrics::denominator::DenominatorMetric"]],["impl RefUnwindSafe for EventMetric",1,["glean_core::metrics::event::EventMetric"]],["impl RefUnwindSafe for LabeledMetricData",1,["glean_core::metrics::labeled::LabeledMetricData"]],["impl<T> RefUnwindSafe for LabeledMetric<T>where
        T: RefUnwindSafe,
    ",1,["glean_core::metrics::labeled::LabeledMetric"]],["impl RefUnwindSafe for MemoryDistributionMetric",1,["glean_core::metrics::memory_distribution::MemoryDistributionMetric"]],["impl RefUnwindSafe for MemoryUnit",1,["glean_core::metrics::memory_unit::MemoryUnit"]],["impl RefUnwindSafe for NumeratorMetric",1,["glean_core::metrics::numerator::NumeratorMetric"]],["impl RefUnwindSafe for ObjectMetric",1,["glean_core::metrics::object::ObjectMetric"]],["impl RefUnwindSafe for PingType",1,["glean_core::metrics::ping::PingType"]],["impl RefUnwindSafe for QuantityMetric",1,["glean_core::metrics::quantity::QuantityMetric"]],["impl RefUnwindSafe for Rate",1,["glean_core::metrics::rate::Rate"]],["impl RefUnwindSafe for RateMetric",1,["glean_core::metrics::rate::RateMetric"]],["impl RefUnwindSafe for RecordedExperiment",1,["glean_core::metrics::recorded_experiment::RecordedExperiment"]],["impl RefUnwindSafe for RemoteSettingsConfig",1,["glean_core::metrics::remote_settings_config::RemoteSettingsConfig"]],["impl RefUnwindSafe for StringMetric",1,["glean_core::metrics::string::StringMetric"]],["impl RefUnwindSafe for StringListMetric",1,["glean_core::metrics::string_list::StringListMetric"]],["impl RefUnwindSafe for TextMetric",1,["glean_core::metrics::text::TextMetric"]],["impl RefUnwindSafe for TimeUnit",1,["glean_core::metrics::time_unit::TimeUnit"]],["impl RefUnwindSafe for TimespanMetric",1,["glean_core::metrics::timespan::TimespanMetric"]],["impl RefUnwindSafe for TimerId",1,["glean_core::metrics::timing_distribution::TimerId"]],["impl RefUnwindSafe for TimingDistributionMetric",1,["glean_core::metrics::timing_distribution::TimingDistributionMetric"]],["impl RefUnwindSafe for UrlMetric",1,["glean_core::metrics::url::UrlMetric"]],["impl RefUnwindSafe for UuidMetric",1,["glean_core::metrics::uuid::UuidMetric"]],["impl RefUnwindSafe for DistributionData",1,["glean_core::metrics::DistributionData"]],["impl RefUnwindSafe for Metric",1,["glean_core::metrics::Metric"]],["impl<'a> RefUnwindSafe for Ping<'a>",1,["glean_core::ping::Ping"]],["impl RefUnwindSafe for PingMaker",1,["glean_core::ping::PingMaker"]],["impl RefUnwindSafe for StorageManager",1,["glean_core::storage::StorageManager"]],["impl RefUnwindSafe for NoExtraKeys",1,["glean_core::traits::event::NoExtraKeys"]],["impl RefUnwindSafe for EventRecordingError",1,["glean_core::traits::event::EventRecordingError"]],["impl !RefUnwindSafe for ObjectError",1,["glean_core::traits::object::ObjectError"]],["impl RefUnwindSafe for PingPayload",1,["glean_core::upload::directory::PingPayload"]],["impl RefUnwindSafe for PingMetadata",1,["glean_core::upload::directory::PingMetadata"]],["impl RefUnwindSafe for PingRequest",1,["glean_core::upload::request::PingRequest"]],["impl RefUnwindSafe for UploadResult",1,["glean_core::upload::result::UploadResult"]],["impl RefUnwindSafe for UploadTaskAction",1,["glean_core::upload::result::UploadTaskAction"]],["impl RefUnwindSafe for PingUploadTask",1,["glean_core::upload::PingUploadTask"]],["impl RefUnwindSafe for PingUploadManager",1,["glean_core::upload::PingUploadManager"]],["impl RefUnwindSafe for InternalConfiguration",1,["glean_core::InternalConfiguration"]],["impl RefUnwindSafe for PingRateLimit",1,["glean_core::PingRateLimit"]],["impl RefUnwindSafe for CallbackError",1,["glean_core::CallbackError"]]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/implementors/core/panic/unwind_safe/trait.UnwindSafe.js b/docs/implementors/core/panic/unwind_safe/trait.UnwindSafe.js deleted file mode 100644 index 1411394e43..0000000000 --- a/docs/implementors/core/panic/unwind_safe/trait.UnwindSafe.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"glean_core":[["impl UnwindSafe for Lifetime",1,["glean_core::common_metric_data::Lifetime"]],["impl UnwindSafe for CommonMetricData",1,["glean_core::common_metric_data::CommonMetricData"]],["impl !UnwindSafe for Glean",1,["glean_core::core::Glean"]],["impl UnwindSafe for ClientInfoMetrics",1,["glean_core::core_metrics::ClientInfoMetrics"]],["impl !UnwindSafe for ErrorKind",1,["glean_core::error::ErrorKind"]],["impl !UnwindSafe for Error",1,["glean_core::error::Error"]],["impl UnwindSafe for ErrorType",1,["glean_core::error_recording::ErrorType"]],["impl UnwindSafe for RecordedEvent",1,["glean_core::event_database::RecordedEvent"]],["impl UnwindSafe for HistogramType",1,["glean_core::histogram::HistogramType"]],["impl UnwindSafe for BooleanMetric",1,["glean_core::metrics::boolean::BooleanMetric"]],["impl UnwindSafe for CounterMetric",1,["glean_core::metrics::counter::CounterMetric"]],["impl UnwindSafe for CustomDistributionMetric",1,["glean_core::metrics::custom_distribution::CustomDistributionMetric"]],["impl UnwindSafe for Datetime",1,["glean_core::metrics::datetime::Datetime"]],["impl UnwindSafe for DatetimeMetric",1,["glean_core::metrics::datetime::DatetimeMetric"]],["impl UnwindSafe for DenominatorMetric",1,["glean_core::metrics::denominator::DenominatorMetric"]],["impl UnwindSafe for EventMetric",1,["glean_core::metrics::event::EventMetric"]],["impl UnwindSafe for LabeledMetricData",1,["glean_core::metrics::labeled::LabeledMetricData"]],["impl<T> UnwindSafe for LabeledMetric<T>where
        T: UnwindSafe,
    ",1,["glean_core::metrics::labeled::LabeledMetric"]],["impl UnwindSafe for MemoryDistributionMetric",1,["glean_core::metrics::memory_distribution::MemoryDistributionMetric"]],["impl UnwindSafe for MemoryUnit",1,["glean_core::metrics::memory_unit::MemoryUnit"]],["impl UnwindSafe for NumeratorMetric",1,["glean_core::metrics::numerator::NumeratorMetric"]],["impl UnwindSafe for ObjectMetric",1,["glean_core::metrics::object::ObjectMetric"]],["impl UnwindSafe for PingType",1,["glean_core::metrics::ping::PingType"]],["impl UnwindSafe for QuantityMetric",1,["glean_core::metrics::quantity::QuantityMetric"]],["impl UnwindSafe for Rate",1,["glean_core::metrics::rate::Rate"]],["impl UnwindSafe for RateMetric",1,["glean_core::metrics::rate::RateMetric"]],["impl UnwindSafe for RecordedExperiment",1,["glean_core::metrics::recorded_experiment::RecordedExperiment"]],["impl UnwindSafe for RemoteSettingsConfig",1,["glean_core::metrics::remote_settings_config::RemoteSettingsConfig"]],["impl UnwindSafe for StringMetric",1,["glean_core::metrics::string::StringMetric"]],["impl UnwindSafe for StringListMetric",1,["glean_core::metrics::string_list::StringListMetric"]],["impl UnwindSafe for TextMetric",1,["glean_core::metrics::text::TextMetric"]],["impl UnwindSafe for TimeUnit",1,["glean_core::metrics::time_unit::TimeUnit"]],["impl UnwindSafe for TimespanMetric",1,["glean_core::metrics::timespan::TimespanMetric"]],["impl UnwindSafe for TimerId",1,["glean_core::metrics::timing_distribution::TimerId"]],["impl UnwindSafe for TimingDistributionMetric",1,["glean_core::metrics::timing_distribution::TimingDistributionMetric"]],["impl UnwindSafe for UrlMetric",1,["glean_core::metrics::url::UrlMetric"]],["impl UnwindSafe for UuidMetric",1,["glean_core::metrics::uuid::UuidMetric"]],["impl UnwindSafe for DistributionData",1,["glean_core::metrics::DistributionData"]],["impl UnwindSafe for Metric",1,["glean_core::metrics::Metric"]],["impl<'a> UnwindSafe for Ping<'a>",1,["glean_core::ping::Ping"]],["impl UnwindSafe for PingMaker",1,["glean_core::ping::PingMaker"]],["impl UnwindSafe for StorageManager",1,["glean_core::storage::StorageManager"]],["impl UnwindSafe for NoExtraKeys",1,["glean_core::traits::event::NoExtraKeys"]],["impl UnwindSafe for EventRecordingError",1,["glean_core::traits::event::EventRecordingError"]],["impl !UnwindSafe for ObjectError",1,["glean_core::traits::object::ObjectError"]],["impl UnwindSafe for PingPayload",1,["glean_core::upload::directory::PingPayload"]],["impl UnwindSafe for PingMetadata",1,["glean_core::upload::directory::PingMetadata"]],["impl UnwindSafe for PingRequest",1,["glean_core::upload::request::PingRequest"]],["impl UnwindSafe for UploadResult",1,["glean_core::upload::result::UploadResult"]],["impl UnwindSafe for UploadTaskAction",1,["glean_core::upload::result::UploadTaskAction"]],["impl UnwindSafe for PingUploadTask",1,["glean_core::upload::PingUploadTask"]],["impl UnwindSafe for PingUploadManager",1,["glean_core::upload::PingUploadManager"]],["impl UnwindSafe for InternalConfiguration",1,["glean_core::InternalConfiguration"]],["impl UnwindSafe for PingRateLimit",1,["glean_core::PingRateLimit"]],["impl UnwindSafe for CallbackError",1,["glean_core::CallbackError"]]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/implementors/serde/de/trait.Deserialize.js b/docs/implementors/serde/de/trait.Deserialize.js deleted file mode 100644 index 5af6a833d0..0000000000 --- a/docs/implementors/serde/de/trait.Deserialize.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"glean_core":[["impl<'de> Deserialize<'de> for Lifetime"],["impl<'de> Deserialize<'de> for CommonMetricData"],["impl<'de> Deserialize<'de> for RecordedEvent"],["impl<'de> Deserialize<'de> for HistogramType"],["impl<'de> Deserialize<'de> for MemoryUnit"],["impl<'de> Deserialize<'de> for RecordedExperiment"],["impl<'de> Deserialize<'de> for RemoteSettingsConfig"],["impl<'de> Deserialize<'de> for TimeUnit"],["impl<'de> Deserialize<'de> for Metric"],["impl<'de> Deserialize<'de> for PingMetadata"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/implementors/serde/ser/trait.Serialize.js b/docs/implementors/serde/ser/trait.Serialize.js deleted file mode 100644 index 689698d7a3..0000000000 --- a/docs/implementors/serde/ser/trait.Serialize.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"glean_core":[["impl Serialize for Lifetime"],["impl Serialize for CommonMetricData"],["impl Serialize for RecordedEvent"],["impl Serialize for HistogramType"],["impl Serialize for MemoryUnit"],["impl Serialize for RecordedExperiment"],["impl Serialize for RemoteSettingsConfig"],["impl Serialize for TimeUnit"],["impl Serialize for DistributionData"],["impl Serialize for Metric"],["impl Serialize for PingMetadata"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/search-index.js b/docs/search-index.js index 365c39e218..90bf808d22 100644 --- a/docs/search-index.js +++ b/docs/search-index.js @@ -1,6 +1,6 @@ -var searchIndex = JSON.parse('{\ -"glean_core":{"doc":"Glean is a modern approach for recording and sending …","t":[8,13,3,13,4,3,13,3,3,13,3,3,3,13,3,2,13,13,3,4,4,3,13,13,3,8,4,13,13,13,3,13,13,13,13,13,13,13,13,6,6,6,6,3,4,6,6,4,13,13,13,13,3,4,13,13,13,13,13,13,13,3,3,8,13,13,13,3,3,3,2,3,3,3,3,3,13,6,13,13,3,3,3,4,13,3,3,13,3,13,13,4,4,3,13,13,3,12,12,12,12,12,12,11,12,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,10,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,12,12,11,11,11,12,12,12,12,12,12,12,11,11,11,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,11,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,11,11,12,12,12,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,11,12,12,12,12,12,0,12,12,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,10,11,12,12,10,11,12,12,11,0,12,12,12,12,12,11,11,11,12,11,12,12,12,11,11,11,11,11,11,11,11,11,5,11,11,10,11,0,11,11,11,11,11,11,5,12,11,11,11,11,11,11,11,11,11,0,10,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,3,13,13,3,13,13,3,3,13,3,13,3,3,3,13,13,13,4,13,4,13,13,6,6,6,6,3,6,6,13,13,13,3,4,4,8,13,13,13,13,13,13,3,13,13,3,3,13,3,3,13,3,3,3,3,13,13,13,13,3,3,13,3,4,3,13,3,13,3,13,3,13,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,12,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,3,3,11,11,11,11,11,11,11,11,11,11,12,11,12,11,11,12,12,11,11,12,11,11,11,12,11,11,11,11,11,11,11,12,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,18,8,8,8,8,8,4,13,16,8,4,13,13,8,13,8,4,8,3,8,8,8,8,8,8,8,8,8,8,8,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,10,10,11,11,11,11,10,11,10,11,11,11,11,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,13,13,13,6,13,13,3,3,3,3,4,13,13,13,4,4,13,12,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,12,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12],"n":["AllowLabeled","Application","BooleanMetric","Byte","CallbackError","ClientInfoMetrics","Common","CommonMetricData","CounterMetric","CustomDistribution","CustomDistributionMetric","Datetime","DatetimeMetric","Day","DenominatorMetric","DistributionData","Done","End","Error","ErrorKind","ErrorType","EventMetric","Exponential","Gigabyte","Glean","GleanEventListener","HistogramType","HistogramType","Hour","HttpStatus","InternalConfiguration","InvalidConfig","InvalidLabel","InvalidOverflow","InvalidState","InvalidValue","IoError","Json","Kilobyte","LabeledBoolean","LabeledCounter","LabeledCustomDistribution","LabeledMemoryDistribution","LabeledMetric","LabeledMetricData","LabeledString","LabeledTimingDistribution","Lifetime","Lifetime","Linear","Megabyte","MemoryDistribution","MemoryDistributionMetric","MemoryUnit","MemoryUnit","Microsecond","Millisecond","Minute","Nanosecond","Next","NotInitialized","NumeratorMetric","ObjectMetric","OnGleanEvents","OsString","Ping","PingBodyOverflow","PingRateLimit","PingRequest","PingType","PingUploadTask","QuantityMetric","Rate","RateMetric","RecordedEvent","RecordedExperiment","RecoverableFailure","Result","Rkv","Second","StringListMetric","StringMetric","TextMetric","TimeUnit","TimeUnit","TimerId","TimespanMetric","TimingDistribution","TimingDistributionMetric","UnexpectedError","UnrecoverableFailure","UploadResult","UploadTaskAction","UrlMetric","User","Utf8Error","UuidMetric","android_sdk_version","app_build","app_build","app_build_date","app_display_version","application_id","apply_server_knobs_config","architecture","as_str","as_str","body","body_has_info_sections","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","branch","cancel_metrics_ping_scheduler","cancel_uploads","category","category","channel","clear_application_lifetime_metrics","clone","clone","clone","clone","clone","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_into","clone_into","clone_into","clone_into","clone_into","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","data_path","day","default","default","default","delay_ping_lifetime_io","denominator","deserialize","deserialize","destroy_db","device_manufacturer","device_model","disabled","document_id","dynamic_label","enable_event_timestamps","enable_internal_pings","eq","eq","event_storage","experimentation_id","extra","extra","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","get_application_id","get_data_path","get_max_events","get_ping_by_name","get_timestamp_ms","get_upload_task","glean_apply_server_knobs_config","glean_enable_logging","glean_enable_logging_to_fd","glean_get_upload_task","glean_handle_client_active","glean_handle_client_inactive","glean_initialize","glean_initialize_for_subprocess","glean_persist_ping_lifetime_data","glean_process_ping_upload_response","glean_register_event_listener","glean_set_debug_view_tag","glean_set_dirty_flag","glean_set_experiment_active","glean_set_experiment_inactive","glean_set_experimentation_id","glean_set_log_pings","glean_set_source_tags","glean_set_test_mode","glean_set_upload_enabled","glean_shutdown","glean_submit_ping_by_name","glean_submit_ping_by_name_sync","glean_test_destroy_glean","glean_test_get_experiment_data","glean_test_get_experimentation_id","glean_unregister_event_listener","handle_client_active","handle_client_inactive","headers","hour","id","initialize_finished","into","into","into","into","into","into","into","into","into","into","into","is_dirty_flag_set","is_first_run","is_upload_enabled","iter","join_init","kind","language_binding_name","lifetime","locale","log_level","max_events","metrics","minute","month","name","name","nanosecond","new","new_for_subprocess","new_handle","new_handle","new_handle","new_handle","new_handle","new_handle","new_handle","new_handle","new_handle","new_handle","new_labeled","not_initialized","numerator","offset_seconds","on_event_recorded","on_ready_to_submit_pings","os_version","path","persist_ping_lifetime_data","ping","ping_lifetime_max_time","ping_lifetime_threshold","ping_name","ping_schedule","pings_per_interval","process_ping_upload_response","provide","provide","rate_limit","register_ping_type","second","seconds_per_interval","send_in_pings","serialize","serialize","set_debug_view_tag","set_dirty_flag","set_experiment_active","set_experiment_inactive","set_log_pings","set_source_tags","set_upload_enabled","shutdown","shutdown","snapshot","start_metrics_ping_scheduler","start_metrics_ping_scheduler","storage","storage","storage_opt","submit_ping_by_name","test_clear_all_stores","test_get_experiment_data","test_get_experimentation_id","test_get_num_recorded_errors","timestamp","to_bytes","to_bytes","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","traits","trigger_upload","trim_data_to_registered_pings","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","unknown","upload","upload_enabled","use_core_mps","utf8_error","windows_build_number","year","bucket_count","cmd","cmd","cmd","cmd","histogram_type","range_max","range_min","unit","unit","code","Array","Bool","Boolean","BooleanMetric","Byte","Counter","CounterMetric","CustomDistributionExponential","CustomDistributionLinear","CustomDistributionMetric","Datetime","Datetime","DatetimeMetric","Day","DenominatorMetric","DistributionData","EventMetric","Experiment","Exponential","Gigabyte","HistogramType","Hour","JsonValue","Jwe","Kilobyte","LabeledBoolean","LabeledCounter","LabeledCustomDistribution","LabeledMemoryDistribution","LabeledMetric","LabeledString","LabeledTimingDistribution","Linear","Megabyte","MemoryDistribution","MemoryDistributionMetric","MemoryUnit","Metric","MetricType","Microsecond","Millisecond","Minute","Nanosecond","Null","Number","NumeratorMetric","Object","Object","ObjectMetric","PingType","Quantity","QuantityMetric","Rate","Rate","RateMetric","RecordedEvent","RecordedExperiment","RemoteSettingsConfig","Second","String","String","StringList","StringListMetric","StringMetric","Text","TextMetric","TimeUnit","TimerId","Timespan","TimespanMetric","TimingDistribution","TimingDistributionMetric","Url","UrlMetric","Uuid","UuidMetric","accumulate","accumulate_raw_duration","accumulate_raw_samples_nanos","accumulate_samples","accumulate_samples","accumulate_samples","accumulate_single_sample","accumulate_single_sample","add","add","add","add_to_denominator","add_to_numerator","add_to_numerator","as_array","as_array_mut","as_bool","as_bytes","as_f64","as_i64","as_json","as_json","as_nanos","as_null","as_object","as_object_mut","as_str","as_u64","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","branch","cancel","cancel","category","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","count","day","default","default","default","denominator","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize_any","deserialize_any","deserialize_bool","deserialize_bool","deserialize_byte_buf","deserialize_byte_buf","deserialize_bytes","deserialize_bytes","deserialize_char","deserialize_char","deserialize_enum","deserialize_enum","deserialize_f32","deserialize_f32","deserialize_f64","deserialize_f64","deserialize_i128","deserialize_i128","deserialize_i16","deserialize_i16","deserialize_i32","deserialize_i32","deserialize_i64","deserialize_i64","deserialize_i8","deserialize_i8","deserialize_identifier","deserialize_identifier","deserialize_ignored_any","deserialize_ignored_any","deserialize_map","deserialize_map","deserialize_newtype_struct","deserialize_newtype_struct","deserialize_option","deserialize_option","deserialize_seq","deserialize_seq","deserialize_str","deserialize_str","deserialize_string","deserialize_string","deserialize_struct","deserialize_struct","deserialize_tuple","deserialize_tuple","deserialize_tuple_struct","deserialize_tuple_struct","deserialize_u128","deserialize_u128","deserialize_u16","deserialize_u16","deserialize_u32","deserialize_u32","deserialize_u64","deserialize_u64","deserialize_u8","deserialize_u8","deserialize_unit","deserialize_unit","deserialize_unit_struct","deserialize_unit_struct","duration_convert","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","event_threshold","extra","extra","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","format_pattern","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_iter","from_iter","from_str","generate_and_set","get","get","get_mut","hash","hour","id","index","index_mut","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into_deserializer","is_array","is_boolean","is_f64","is_i64","is_null","is_number","is_object","is_string","is_u64","meta","meta","meta","meta","meta","meta","meta","meta","meta","meta","meta","meta","meta","meta","meta","meta","meta","meta","meta","metrics_enabled","minute","month","name","nanosecond","new","new","new","new","new","new","new","new","new","new","new","new","new","new","new","new","new","new","new","new","new","new_handle","new_handle","new_handle","new_handle","new_handle","new_handle","new_handle","new_handle","new_handle","new_handle","new_handle","new_handle","new_handle","new_handle","new_handle","new_handle","new_handle","new_handle","new_handle","new_handle","new_handle","new_handle","new_handle","new_handle","new_handle","new_handle","new_handle","new_handle","new_handle","new_handle","new_handle","new_handle","numerator","offset_seconds","ping_section","pings_enabled","pointer","pointer_mut","record","record_schema_error","record_with_time","second","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","set","set","set","set","set","set","set","set","set","set_raw","set_raw_nanos","set_string","should_record","start","start","stop","stop_and_accumulate","submit","sum","take","test_get_num_recorded_errors","test_get_num_recorded_errors","test_get_num_recorded_errors","test_get_num_recorded_errors","test_get_num_recorded_errors","test_get_num_recorded_errors","test_get_num_recorded_errors","test_get_num_recorded_errors","test_get_num_recorded_errors","test_get_num_recorded_errors","test_get_num_recorded_errors","test_get_num_recorded_errors","test_get_num_recorded_errors","test_get_num_recorded_errors","test_get_num_recorded_errors","test_get_num_recorded_errors","test_get_num_recorded_errors","test_get_num_recorded_errors","test_get_num_recorded_errors","test_get_value","test_get_value","test_get_value","test_get_value","test_get_value","test_get_value","test_get_value","test_get_value","test_get_value","test_get_value","test_get_value","test_get_value","test_get_value","test_get_value","test_get_value","test_get_value","test_get_value","test_get_value","test_get_value_as_string","timestamp","to_bytes","to_bytes","to_bytes","to_bytes","to_bytes","to_bytes","to_bytes","to_bytes","to_bytes","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","values","with_dynamic_label","with_dynamic_label","with_dynamic_label","with_dynamic_label","with_dynamic_label","with_dynamic_label","with_dynamic_label","with_dynamic_label","with_name","with_name","with_name","with_name","with_name","with_name","with_name","with_name","year","Ping","PingMaker","borrow","borrow","borrow_mut","borrow_mut","clear_pending_pings","clone_handle","clone_handle","collect","consume_handle","consume_handle","content","default","doc_id","from","from","headers","includes_info_sections","into","into","name","new","new_handle","new_handle","schedules_pings","store_ping","try_from","try_from","try_into","try_into","type_id","type_id","url_path","StorageManager","borrow","borrow_mut","clone_handle","consume_handle","from","into","new_handle","snapshot","snapshot_as_json","snapshot_experiments_as_json","snapshot_metric","snapshot_metric_for_test","try_from","try_into","type_id","ALLOWED_KEYS","Boolean","Counter","CustomDistribution","Datetime","Event","EventRecordingError","Exponential","Extra","ExtraKeys","HistogramType","InvalidExtraKey","InvalidId","Labeled","Linear","MemoryDistribution","NoExtraKeys","Numerator","ObjectError","ObjectSerialize","Ping","Quantity","Rate","String","StringList","Text","Timespan","TimingDistribution","Url","Uuid","accumulate","accumulate_raw_duration","accumulate_raw_samples_nanos","accumulate_samples","accumulate_samples_signed","accumulate_single_sample","accumulate_single_sample_signed","add","add","add_to_denominator","add_to_numerator","add_to_numerator","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","cancel","cancel","clone","clone_handle","clone_handle","clone_handle","clone_into","consume_handle","consume_handle","consume_handle","eq","fmt","fmt","fmt","from","from","from","from_str","generate_and_set","get","hash","into","into","into","into_ffi_extra","into_ffi_extra","into_serialized_object","new_handle","new_handle","new_handle","provide","record","set","set","set","set","set","set","set","set","set_raw","start","start","stop","stop_and_accumulate","submit","test_get_num_recorded_errors","test_get_num_recorded_errors","test_get_num_recorded_errors","test_get_num_recorded_errors","test_get_num_recorded_errors","test_get_num_recorded_errors","test_get_num_recorded_errors","test_get_num_recorded_errors","test_get_num_recorded_errors","test_get_num_recorded_errors","test_get_num_recorded_errors","test_get_num_recorded_errors","test_get_num_recorded_errors","test_get_num_recorded_errors","test_get_num_recorded_errors","test_get_num_recorded_errors","test_get_num_recorded_errors","test_get_value","test_get_value","test_get_value","test_get_value","test_get_value","test_get_value","test_get_value","test_get_value","test_get_value","test_get_value","test_get_value","test_get_value","test_get_value","test_get_value","test_get_value","test_get_value","to_owned","to_string","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","Done","Done","End","HeaderMap","HttpStatus","Next","PingMetadata","PingPayload","PingRequest","PingUploadManager","PingUploadTask","RecoverableFailure","UnrecoverableFailure","Upload","UploadResult","UploadTaskAction","Wait","body","body_has_info_sections","body_has_info_sections","body_has_info_sections","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","builder","chunked_log_info","clear_ping_queue","clone","clone","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_into","clone_into","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","default","default","deserialize","document_id","document_id","done","enqueue_ping","enqueue_ping_from_file","eq","eq","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","get_label","get_upload_task","headers","headers","headers","http_status","into","into","into","into","into","into","into","is_deletion_request","is_upload","is_wait","json_body","new","new_handle","new_handle","new_handle","new_handle","new_handle","new_handle","new_handle","path","ping_name","ping_name","ping_name","pretty_body","process_ping_upload_response","recoverable_failure","scan_pending_pings_directories","serialize","set_rate_limiter","to_bytes","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","unrecoverable_failure","upload_path","request","time","code"],"q":["glean_core","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","glean_core::LabeledMetricData","","","","","","","","","","glean_core::UploadResult","glean_core::metrics","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","glean_core::ping","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","glean_core::storage","","","","","","","","","","","","","","","","glean_core::traits","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","glean_core::upload","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","glean_core::upload::PingUploadTask","","glean_core::upload::UploadResult"],"d":["Trait for metrics that can be nested inside a labeled …","The metric is reset on application restart","A boolean metric.","1 byte","An error returned from callbacks.","Metrics included in every ping as client_info.","The common case: just a CMD.","The common set of data shared across all different metric …","A counter metric.","The custom_distribution-specific case.","A custom distribution metric.","Representation of a date, time and timezone.","A datetime metric.","Truncate to day precision.","A Denominator metric (a kind of count shared among Rate …","","Signal that this uploader is done with work and won’t …","Instruct the caller to end work.","A specialized Error type for this crate’s operations.","A list enumerating the categories of errors in this crate.","The possible error types for metric recording. Note: the …","An event metric.","A histogram with exponential distributed buckets.","2^30 bytes","The object holding meta information about a Glean instance.","A callback handler that receives the base identifier of …","Different kinds of histograms.","HistogramType conversion failed","Truncate to hour precision.","A HTTP response code.","Configuration for Glean","Glean initialization was attempted with an invalid …","For when the label of a labeled metric does not match the …","For when the value to be recorded overflows the …","For when the metric caught an invalid state while recording","For when the value to be recorded does not match the …","IO error","JSON error","2^10 bytes","A labeled boolean.","A labeled counter.","A labeled custom_distribution.","A labeled memory_distribution.","A labeled metric.","The metric data needed to construct inner submetrics.","A labeled string.","A labeled timing_distribution.","The supported metrics’ lifetimes.","Lifetime conversion failed","A histogram with linear distributed buckets.","2^20 bytes","The memory_distribution-specific case.","A memory distribution metric.","Different resolutions supported by the memory related …","MemoryUnit conversion failed","Truncate to microsecond precision.","Truncate to millisecond precision.","Truncate to minute precision.","Truncate to nanosecond precision.","Instruct the caller to continue with work.","Glean not initialized","Developer-facing API for recording rate metrics with …","An object metric.","A callback object used to trigger actions on the …","OsString conversion failed","The metric is reset with each sent ping","Ping request body size overflowed","How to specify the rate at which pings may be uploaded …","Represents a request to upload a ping.","Stores information about a ping.","","A quantity metric.","A rate value as given by its numerator and denominator.","A rate metric.","Represents the recorded data for a single event.","Deserialized experiment data.","A recoverable failure.","A specialized Result type for this crate’s operations.","IO error","Truncate to second precision.","A string list metric.","A string metric.","A text metric.","Different resolutions supported by the time related metric …","TimeUnit conversion failed","Identifier for a running timer.","A timespan metric.","The timing_distribution-specific case.","A timing distribution metric.","An unexpected error occured.","An unrecoverable upload failure.","The result of an attempted ping upload.","Communication back whether the uploader loop should …","A URL metric.","The metric is reset with each user profile","Unknown error","An UUID metric.","The Android specific SDK version of the software running …","The build identifier generated by the CI system (e.g. “…","The application’s build identifier. If this is different …","The app’s build date","The user visible version string (e.g. “1.0.3”).","The application ID (will be sanitized during …","Set configuration to override the default state, typically …","The architecture of the device (e.g. “arm”, “x86”).","String representation of the lifetime.","The error type’s metric id","The body of the request, as a byte array. If gzip encoded, …","Whether the body has {client|ping}_info sections.","","","","","","","","","","","","","","","","","","","","","","","The experiment’s branch as set through …","Instructs the Metrics Ping Scheduler’s thread to exit …","Called when upload is disabled and uploads should be …","The metric’s category.","The event’s category.","The product-provided release channel (e.g. “beta”).","This is not meant to be used directly.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Path to a directory to store all data in.","The day of the month.","","","","Whether Glean should delay persistence of data from …","A rate’s denominator","","","Destroys the database.","The manufacturer of the device the application is running …","The model of the device the application is running on. On …","Whether or not the metric is disabled.","The Job ID to identify this request, this is the same as …","Dynamic label.","Whether to add a wallclock timestamp to all events.","Whether to enable internal pings. Default: true","","","Gets a handle to the event database.","An experimentation identifier derived by the application …","A map of all extra data values.","Any extra data associated with this experiment through …","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Gets the application ID as specified on instantiation.","Gets the data path of this instance.","Gets the maximum number of events to store before sending …","Gets a PingType by name.","Returns a timestamp corresponding to “now” with …","Gets the next task for an uploader.","Sets a remote configuration to override metrics’ default …","Initialize the logging system based on the target …","Initialize the logging system to send JSON messages to a …","Get the next upload task","Performs the collection/cleanup operations required by …","Performs the collection/cleanup operations required by …","Initializes Glean.","Creates and initializes a new Glean object for use in a …","Asks the database to persist ping-lifetime data to disk. …","Processes the response from an attempt to upload a ping.","EXPERIMENTAL: Register a listener object to recieve …","Sets a debug view tag.","TEST-ONLY Method","Indicate that an experiment is running. Glean will then …","Indicate that an experiment is no longer running.","Set an experimentation identifier dynamically.","Sets the log pings debug option.","Sets source tags.","TEST-ONLY Method","Sets whether upload is enabled or not.","Shuts down Glean in an orderly fashion.","Collect and submit a ping for eventual upload by name.","Collect and submit a ping (by its name) for eventual …","TEST-ONLY Method","TEST ONLY FUNCTION. Returns the RecordedExperiment for the …","TEST ONLY FUNCTION. Gets stored experimentation id …","Unregister an event listener from recieving notifications.","Performs the collection/cleanup operations required by …","Performs the collection/cleanup operations required by …","A map with all the headers to be sent with the request.","The hour. 0-23","This timer’s id.","Initialization finished.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","This is not meant to be used directly.","Whether or not this is the first run on this profile.","Determines whether upload is enabled.","Return an iterator over all possible error types.","TEST ONLY FUNCTION Waits on all the glean.init threads’ …","Returns the kind of the current error instance.","The name of the programming language used by the binding …","The metric’s lifetime.","The locale of the application during initialization (e.g. …","The internal logging level.","The maximum number of events to store before sending a …","The different metric types supported by the Glean SDK to …","The minute. 0-59.","The month, 1=January.","The metric’s name.","The event’s name.","The nanosecond part of the time.","Creates and initializes a new Glean object.","Creates and initializes a new Glean object for use in a …","","","","","","","","","","","Create a new labeled metric.","Indicates an error that no requested global object is …","A rate’s numerator","The timezone offset from UTC in seconds. Negative for …","Called when an event is recorded, indicating the id of the …","Signals that the environment is ready to submit pings.","The name of the operating system (e.g. “Linux”, “…","The path for the server to upload the ping to.","Persists Lifetime::Ping data that might be in memory in …","Ping collection, assembly & submission.","After what time to auto-flush. 0 disables it.","Write count threshold when to auto-flush. 0 disables it.","The ping’s name. Likely also somewhere in path.","A ping schedule map. Maps a ping name to a list of pings …","Number of pings that may be uploaded in a ping uploading …","Processes the response from an attempt to upload a ping.","","","The rate at which pings may be uploaded before they are …","Register a new PingType.","The second. 0-60.","Length of time in seconds of a ping uploading interval.","List of ping names to include this metric in.","","","Sets a debug view tag.","This is not meant to be used directly.","Indicates that an experiment is running.","Indicates that an experiment is no longer running.","Sets the log pings debug option.","Sets source tags.","Sets whether upload is enabled or not.","Shuts down Glean in an orderly fashion.","Called on shutdown, before glean-core is fully shutdown.","Takes a snapshot for the given store and optionally clear …","Start the Metrics Ping Scheduler.","Instructs the Metrics Ping Scheduler to being scheduling …","Storage snapshotting.","Gets a handle to the database.","Gets an optional handle to the database.","Collects and submits a ping by name for eventual uploading.","Test-only API (exported for FFI purposes).","Test-only API (exported for FFI purposes).","Test-only API (exported for FFI purposes).","Gets the number of recorded errors for the given metric …","The timestamp of when the event was recorded.","","","","","","","","","","API definitions for the different metric types supported …","Trigger the uploader whenever a ping was submitted.","Whether Glean should, on init, trim its event storage to …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Creates the client info with dummy values for all.","Manages the pending pings queue and directory.","Whether upload should be enabled.","Whether Glean should schedule “metrics” pings.","Returns a new UTF-8 error","The Windows specific OS build version (e.g. 19043)","The year, e.g. 2021.","","","","","","","","","","","The HTTP status code","Represents a JSON array.","Represents a JSON boolean.","A boolean metric. See BooleanMetric for more information.","A boolean metric.","1 byte","A counter metric. See CounterMetric for more information.","A counter metric.","A custom distribution with precomputed exponential …","A custom distribution with precomputed linear bucketing. …","A custom distribution metric.","Representation of a date, time and timezone.","A datetime metric. See DatetimeMetric for more information.","A datetime metric.","Truncate to day precision.","A Denominator metric (a kind of count shared among Rate …","A snapshot of all buckets and the accumulated sum of a …","An event metric.","An experiment metric. See ExperimentMetric for more …","A histogram with exponential distributed buckets.","2^30 bytes","Different kinds of histograms.","Truncate to hour precision.","Represents any valid JSON value.","DEPRECATED: A JWE metric.. Note: This variant MUST NOT be …","2^10 bytes","A labeled boolean.","A labeled counter.","A labeled custom_distribution.","A labeled memory_distribution.","A labeled metric.","A labeled string.","A labeled timing_distribution.","A histogram with linear distributed buckets.","2^20 bytes","A memory distribution. See MemoryDistributionMetric for …","A memory distribution metric.","Different resolutions supported by the memory related …","The available metrics.","A MetricType describes common behavior across all metrics.","Truncate to microsecond precision.","Truncate to millisecond precision.","Truncate to minute precision.","Truncate to nanosecond precision.","Represents a JSON null value.","Represents a JSON number, whether integer or floating …","Developer-facing API for recording rate metrics with …","Represents a JSON object.","An Object metric. See ObjectMetric for more information.","An object metric.","Stores information about a ping.","A quantity metric. See QuantityMetric for more information.","A quantity metric.","A rate value as given by its numerator and denominator.","A rate metric. See RateMetric for more information.","A rate metric.","Represents the recorded data for a single event.","Deserialized experiment data.","Represents a list of metrics and an associated boolean …","Truncate to second precision.","Represents a JSON string.","A string metric. See StringMetric for more information.","A string list metric. See StringListMetric for more …","A string list metric.","A string metric.","A Text metric. See TextMetric for more information.","A text metric.","Different resolutions supported by the time related metric …","Identifier for a running timer.","A timespan metric. See TimespanMetric for more information.","A timespan metric.","A timing distribution. See TimingDistributionMetric for …","A timing distribution metric.","A URL metric. See UrlMetric for more information.","A URL metric.","A UUID metric. See UuidMetric for more information.","An UUID metric.","Accumulates the provided sample in the metric.","Accumulates precisely one duration to the metric.","Accumulates the provided samples in the metric.","Accumulates the provided signed samples in the metric.","Accumulates the provided signed samples in the metric.","Accumulates the provided signed samples in the metric.","Accumulates precisely one signed sample and appends it to …","Accumulates precisely one signed sample and appends it to …","Increases the counter by amount.","Increases the denominator by amount.","Adds a new string to the list.","Increases the denominator by amount.","Increases the numerator by amount.","Increases the numerator by amount.","If the Value is an Array, returns the associated vector. …","If the Value is an Array, returns the associated mutable …","If the Value is a Boolean, returns the associated bool. …","Converts a value in the given unit to bytes.","If the Value is a number, represent it as f64 if possible. …","If the Value is an integer, represent it as i64 if …","Gets the recorded experiment data as a JSON value.","The JSON representation of the metric’s data","Converts a duration in the given unit to nanoseconds.","If the Value is a Null, returns (). Returns None otherwise.","If the Value is an Object, returns the associated Map. …","If the Value is an Object, returns the associated mutable …","If the Value is a String, returns the associated str. …","If the Value is an integer, represent it as u64 if …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","The experiment’s branch as set through …","Aborts a previous set_start call. No error is recorded if …","Aborts a previous start call.","The event’s category.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","The total number of entries in the distribution.","The day of the month.","","","","A rate’s denominator","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Converts a duration to the requested time unit.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","The threshold of events that will be buffered before an …","A map of all extra data values.","Any extra data associated with this experiment through …","","Display a JSON value as a string.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Formats the given time unit, truncating the time if needed.","Convert copy-on-write string to Value","","Convert 64-bit floating point number to Value","Convert boolean to Value","Convert a Vec to Value","Convert string slice to Value","","Convert String to Value","Convert 32-bit floating point number to Value","","","","Convert () to Value","","Convert a slice to Value","","Convert Number to Value","","","","Returns the argument unchanged.","","Convert map (with string keys) to Value","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Convert an iteratable type to a Value","Convert an iteratable type to a Value","","Generates a new random [Uuid’] and sets the metric to it.","Index into a JSON array or map. A string index can be used …","Gets a specific metric for a given label.","Mutably index into a JSON array or map. A string index can …","","The hour. 0-23","This timer’s id.","Index into a serde_json::Value using the syntax value[0] or","Write into a serde_json::Value using the syntax …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","Returns true if the Value is an Array. Returns false …","Returns true if the Value is a Boolean. Returns false …","Returns true if the Value is a number that can be …","Returns true if the Value is an integer between i64::MIN …","Returns true if the Value is a Null. Returns false …","Returns true if the Value is a Number. Returns false …","Returns true if the Value is an Object. Returns false …","Returns true if the Value is a String. Returns false …","Returns true if the Value is an integer between zero and …","Access the stored metadata","","","","","","","","","","","","","","","","","","","This is a HashMap consisting of base_identifiers as keys …","The minute. 0-59.","The month, 1=January.","The event’s name.","The nanosecond part of the time.","Creates a new boolean metric.","Creates a new counter metric.","Creates a new memory distribution metric.","Creates a new datetime metric.","Creates a new denominator metric.","Creates a new event metric.","Creates a new labeled metric from the given metric …","Creates a new memory distribution metric.","The public constructor used by automatically generated …","Creates a new object metric.","Creates a new ping type for the given name, whether to …","Creates a new quantity metric.","Creates a new rate metric.","Creates a new RemoteSettingsConfig","Creates a new string metric.","Creates a new string list metric.","Creates a new text metric.","Creates a new timespan metric.","Creates a new timing distribution metric.","Creates a new string metric.","Creates a new UUID metric","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","A rate’s numerator","The timezone offset from UTC in seconds. Negative for …","Gets the ping section the metric fits into.","This is a HashMap consisting of ping names as keys and …","Looks up a value by a JSON Pointer.","Looks up a value by a JSON Pointer and returns a mutable …","Records an event.","Record an InvalidValue error for this metric.","Record a new event with a provided timestamp.","The second. 0-60.","","","","","","","","","","Sets to the specified boolean value.","Sets the metric to a date/time including the timezone …","Sets to the specified structure.","Sets the value. Must be non-negative.","Sets to the specified value.","Sets to a specific list of strings.","Sets to the specified value.","Sets to the specified stringified URL.","Sets to the specified value.","Explicitly sets the timespan value.","Explicitly sets the timespan value in nanoseconds.","Sets to the specified structure.","Whether this metric should currently be recorded","Starts tracking time for the provided metric.","Starts tracking time for the provided metric.","Stops tracking time for the provided metric. Sets the …","Stops tracking time for the provided metric and associated …","Submits the ping for eventual uploading.","The accumulated sum of all the samples in the distribution.","Takes the value out of the Value, leaving a Null in its …","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Test-only API (exported for FFI purposes).","Test-only API (exported for FFI purposes).","Test-only API (exported for FFI purposes).","Test-only API (exported for FFI purposes).","Test-only API (exported for FFI purposes).","Test-only API (exported for FFI purposes).","Test-only API (exported for FFI purposes).","Exported for test purposes.","Test-only API (exported for FFI purposes).","Test-only API (exported for FFI purposes).","Test-only API (exported for FFI purposes).","Test-only API (exported for FFI purposes).","Test-only API (exported for FFI purposes).","Test-only API (exported for FFI purposes).","Test-only API (exported for FFI purposes).","Test-only API (exported for FFI purposes).","Test-only API (exported for FFI purposes).","Test-only API (exported for FFI purposes).","Test-only API (exported for FFI purposes).","The timestamp of when the event was recorded.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","A map containig the bucket index mapped to the accumulated …","Create a new metric from this with a specific label.","","","","","","","","Create a new metric from this with a new name.","","","","","","","","The year, e.g. 2021.","Holds everything you need to store or send a ping.","Collect a ping’s data, assemble it into its full payload …","","","","","Clears any pending pings in the queue.","","","Collects a snapshot for the given ping from storage and …","","","The payload, including *_info fields.","","The unique document id.","Returns the argument unchanged.","Returns the argument unchanged.","The headers to upload with the payload.","Whether the content contains {client|ping}_info sections.","Calls U::from(self).","Calls U::from(self).","The ping’s name.","Creates a new PingMaker.","","","Other pings that should be scheduled when this ping is …","Stores a ping to disk in the pings directory.","","","","","","","The path on the server to use when uplaoding this ping.","Snapshot metrics from the underlying database.","","","","","Returns the argument unchanged.","Calls U::from(self).","","Snapshots the given store and optionally clear it.","Snapshots the given store and optionally clear it.","Snapshots the experiments.","Gets the current value of a single metric identified by …","Gets the current value of a single metric identified by …","","","","List of allowed extra keys as strings.","A description for the BooleanMetric type.","A description for the CounterMetric type.","A description for the CustomDistributionMetric type.","A description for the DatetimeMetric type.","A description for the EventMetric type.","The possible errors when parsing to an extra key.","A histogram with exponential distributed buckets.","The type of the allowed extra keys for this event.","Extra keys for events.","Different kinds of histograms.","The value doesn’t correspond to a valid extra key","The id doesn’t correspond to a valid extra key","A description for the LabeledMetric type.","A histogram with linear distributed buckets.","A description for the MemoryDistributionMetric type.","Default of no extra keys for events.","A description for the NumeratorMetric subtype of the …","This type represents all possible errors that can occur …","An object that can be serialized into JSON.","A description for the PingType type.","A description for the QuantityMetric type.","A description for the RateMetric type.","A description for the StringMetric type.","A description for the StringListMetric type.","A description for the TextMetric type.","A description for the TimespanMetric type.","A description for the TimingDistributionMetric type.","A description for the UrlMetric type.","A description for the UuidMetric type.","Accumulates the provided sample in the metric.","Accumulates precisely one duration to the metric.","Accumulates the provided samples in the metric.","Accumulates the provided signed samples in the metric.","Accumulates the provided signed samples in the metric.","Accumulates precisely one signed sample in the metric.","Accumulates precisely one signed sample in the metric.","Increases the counter by amount.","Adds a new string to the list.","Increases the denominator by amount.","Increases the numerator by amount.","Increases the numerator by amount.","","","","","","","Aborts a previous start call. No error is recorded if no …","Aborts a previous start call. No error is recorded if no …","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Deserialize the object from its JSON representation.","Generates a new random Uuid and set the metric to it.","Gets a specific metric for a given label.","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Convert the event extras into 2 lists:","","Serialize this object into a JSON string.","","","","","Records an event.","Sets to the specified boolean value.","Sets the metric to a date/time which including the …","Sets the value. Must be non-negative.","Sets to the specified value.","Sets to a specific list of strings.","Sets to the specified value.","Sets to the specified stringified URL.","Sets to the specified value.","Explicitly sets the timespan value.","Starts tracking time for the provided metric.","Start tracking time for the provided metric. Multiple …","Stops tracking time for the provided metric. Sets the …","Stops tracking time for the provided metric and associated …","Submits the ping for eventual uploading","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","","","","","","","","","","","","","","Signal that this uploader is done with work and won’t …","A flag signaling that requester doesn’t need to request …","Instruct the caller to end work.","A representation for request headers.","A HTTP response code.","Instruct the caller to continue with work.","A ping’s metadata, as (optionally) represented on disk.","A representation of the data extracted from a ping file,","Represents a request to upload a ping.","Manages the pending pings queue and directory.","An enum representing the possible upload tasks to be …","A recoverable failure.","An unrecoverable upload failure.","An upload task","The result of an attempted ping upload.","Communication back whether the uploader loop should …","A flag signaling that the pending pings directories are …","The body of the request, as a byte array. If gzip encoded, …","Whether the ping body contains {client|ping}_info","Whether the body has {client|ping}_info sections.","Whether the body has {client|ping}_info sections.","","","","","","","","","","","","","","","Creates a new builder-style structure to help build a …","Logs payload in one go (all other OS).","Clears the pending pings queue, leaves the …","","","","","","","","","","","","","","","","","","","","","","The ping’s doc_id.","The Job ID to identify this request, this is the same as …","This uploader is done.","Enqueue a ping for upload.","Reads a ping file, creates a PingRequest and adds it to …","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Gets the label to be used in recording error counts for …","Gets the next PingUploadTask.","HTTP headers to include in the upload request.","HTTP headers to include when uploading the ping.","A map with all the headers to be sent with the request.","A HTTP response code.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Verifies if current request is for a deletion-request ping.","Whether the current task is an upload task.","Whether the current task is wait task.","The ping body as JSON-encoded string.","Creates a new PingUploadManager.","","","","","","","","The path for the server to upload the ping to.","The ping’s name. (Also likely in the upload_path.)","The name of the ping.","The ping’s name. Likely also somewhere in path.","Decompresses and pretty-format the ping payload","Processes the response from an attempt to upload a ping.","A recoverable failure.","Spawns a new thread and processes the pending pings …","","Adds rate limiting capability to this upload manager.","","","","","","","","","","","","","","","","","","","","","","","","","An unrecoverable upload failure.","The path to upload the ping to.","The ping request for upload See PingRequest for more …","The time in milliseconds the requester should wait before …","The HTTP status code"],"i":[0,3,0,60,0,0,42,0,0,42,0,0,0,63,0,0,35,36,0,0,0,0,68,60,0,0,0,18,63,35,0,18,5,5,5,5,18,18,60,0,0,0,0,0,0,0,0,0,18,68,60,42,0,0,18,63,63,63,63,36,18,0,0,0,18,3,18,0,0,0,0,0,0,0,0,0,35,0,18,63,0,0,0,0,18,0,0,42,0,6,35,0,0,0,3,18,0,13,13,9,13,13,9,1,13,3,5,104,104,42,3,8,1,13,18,19,5,9,10,6,42,3,8,1,13,18,19,5,9,10,6,40,1,33,8,67,13,1,3,8,5,9,10,42,3,8,13,18,19,5,9,10,6,3,8,5,9,10,42,3,8,13,18,19,5,9,10,6,9,70,3,8,13,9,75,3,8,1,13,13,8,104,8,9,9,3,5,1,9,67,40,3,8,1,13,18,19,19,5,9,10,6,6,42,3,8,1,13,18,19,19,19,19,19,19,19,5,9,10,6,6,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,104,70,66,33,42,3,8,1,13,18,19,5,9,10,6,1,1,1,5,0,19,9,8,13,9,9,0,70,70,8,67,70,1,1,42,3,8,13,18,19,5,9,10,6,111,19,75,70,37,1,13,104,1,0,9,9,104,9,10,1,19,6,9,1,70,10,8,3,8,1,1,1,1,1,1,1,0,33,1,33,1,0,1,1,1,1,1,1,0,67,3,8,3,8,5,9,10,19,6,0,33,9,42,3,3,8,1,13,18,19,5,5,9,10,6,42,3,8,1,13,18,19,5,9,10,6,42,3,8,1,13,18,19,5,9,10,6,13,0,9,9,19,13,70,112,113,112,114,115,112,112,112,114,115,116,59,59,62,0,60,62,0,62,62,0,0,62,0,63,0,0,0,62,68,60,0,63,0,62,60,0,0,0,0,0,0,0,68,60,62,0,0,0,0,63,63,63,63,59,59,0,59,62,0,0,62,0,0,62,0,0,0,0,63,59,62,62,0,0,62,0,0,0,62,0,62,0,62,0,62,0,49,51,51,53,49,51,53,51,54,55,56,57,58,57,59,59,59,60,59,59,40,62,63,59,59,59,59,59,59,67,68,69,54,53,70,71,55,72,88,49,60,58,73,28,74,75,57,40,2,76,56,77,63,65,66,51,78,79,89,62,59,67,68,69,54,53,70,71,55,72,88,49,60,58,73,28,74,75,57,40,2,76,56,77,63,65,66,51,78,79,89,62,40,65,51,67,59,67,68,69,54,53,70,71,55,72,49,60,58,73,28,74,75,57,40,2,76,56,77,63,65,66,51,78,79,62,59,67,68,69,54,53,70,71,55,72,88,49,60,58,73,28,74,75,57,40,2,76,56,77,63,65,66,51,78,79,89,62,59,67,68,69,54,53,70,71,55,72,49,60,58,73,28,74,75,57,40,2,76,56,77,63,65,66,51,78,79,62,59,67,68,69,54,53,70,71,55,72,88,49,60,58,73,28,74,75,57,40,2,76,56,77,63,65,66,51,78,79,89,62,89,70,59,70,2,75,59,67,68,60,40,2,63,62,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,63,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,67,70,75,40,63,66,62,2,67,40,59,59,67,68,69,54,53,70,71,55,72,88,49,60,73,28,74,75,57,40,2,76,56,77,63,65,66,51,78,79,89,62,63,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,67,68,69,54,53,70,70,71,55,72,88,49,60,58,73,28,74,75,75,57,40,2,76,56,77,63,65,66,66,66,51,78,79,89,62,59,59,59,79,59,88,59,66,70,66,59,59,59,67,68,69,54,53,70,71,55,72,88,49,60,58,73,28,74,75,57,40,2,76,56,77,63,65,66,51,78,79,89,62,59,59,59,59,59,59,59,59,59,59,117,69,54,53,71,55,72,49,58,73,74,57,76,56,77,65,51,78,79,2,70,70,67,70,69,54,53,71,55,72,88,49,58,73,28,74,57,2,76,56,77,65,51,78,79,59,67,68,69,54,53,70,71,55,72,88,49,60,58,73,28,74,75,57,40,2,76,56,77,63,65,66,51,78,79,89,62,75,70,62,2,59,59,72,73,72,70,59,67,68,60,40,2,63,89,62,69,71,73,74,76,56,77,78,79,65,65,73,117,65,51,65,51,28,89,59,69,54,53,71,55,72,88,49,58,73,74,57,76,56,77,65,51,78,79,69,54,53,71,55,72,49,58,73,74,57,76,56,77,65,51,78,79,71,67,59,67,68,60,40,2,63,89,62,59,67,68,69,54,53,70,71,55,72,49,60,58,73,28,74,75,57,40,2,76,56,77,63,65,66,51,78,79,62,59,59,67,68,68,69,54,53,70,71,55,72,88,49,60,60,58,73,28,74,75,57,40,2,2,76,56,77,63,63,65,66,51,78,79,89,62,59,67,68,69,54,53,70,71,55,72,88,49,60,58,73,28,74,75,57,40,2,76,56,77,63,65,66,51,78,79,89,62,59,67,68,69,54,53,70,71,55,72,88,49,60,58,73,28,74,75,57,40,2,76,56,77,63,65,66,51,78,79,89,62,89,117,69,54,53,49,76,77,51,117,69,54,53,49,76,77,51,70,0,0,97,96,97,96,96,97,96,96,97,96,97,96,97,97,96,97,97,97,96,97,96,97,96,97,96,97,96,97,96,97,96,97,0,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,118,0,0,0,0,0,0,68,119,0,0,120,120,0,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,122,122,122,123,122,123,124,125,126,127,126,120,100,101,120,100,101,128,122,100,120,100,101,100,120,100,101,100,100,101,101,120,100,101,129,130,131,100,120,100,101,118,100,129,120,100,101,101,119,132,133,134,135,125,136,137,130,128,128,122,128,122,138,132,124,123,133,119,131,121,127,134,126,135,125,136,128,122,137,130,132,124,123,133,119,121,127,134,126,135,125,136,128,122,137,130,100,101,120,100,100,100,101,120,100,101,120,100,101,35,31,36,0,35,36,0,0,0,0,0,35,35,31,0,0,31,104,107,108,104,107,108,104,35,36,31,103,107,108,104,35,36,31,103,104,0,103,107,104,107,108,104,35,36,31,103,107,104,107,108,104,35,36,31,103,107,108,108,107,104,35,103,103,104,31,107,104,35,36,31,103,107,108,104,35,36,31,103,35,103,107,108,104,35,107,108,104,35,36,31,103,104,31,31,107,103,107,108,104,35,36,31,103,104,107,108,104,104,103,35,103,108,103,108,107,104,107,108,104,35,36,31,103,107,108,104,35,36,31,103,107,108,104,35,36,31,103,35,107,139,140,116],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[1,2]],0,[3,4],[5,4],0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,[1],[[],[[7,[6]]]],0,0,0,[1],[3,3],[8,8],[5,5],[9,9],[10,10],[11,11],[11,11],[11,11],[11,11],[11,11],[11,11],[11,11],[11,11],[11,11],[11,11],[[]],[[]],[[]],[[]],[[]],[11,12],[11,12],[11,12],[11,12],[11,12],[11,12],[11,12],[11,12],[11,12],[11,12],0,0,[[],3],[[],8],[[],13],0,0,[[],[[14,[3]]]],[[],[[14,[8]]]],[1],0,0,0,0,0,0,0,[[3,3],15],[[5,5],15],0,0,0,0,[[3,16],17],[[8,16],17],[[1,16],17],[[13,16],17],[[18,16],17],[[19,16],17],[[19,16],17],[[5,16],17],[[9,16],17],[[10,16],17],[[6,16],17],[[6,16],17],[[]],[[]],[[]],[[]],[[]],[[]],[20,19],[18,19],[21,19],[22,19],[23,19],[24,19],[[]],[[]],[[]],[[]],[[]],[25,6],[1,4],[1,26],[1,27],[[1,4],[[29,[28]]]],[[],30],[1,31],[32],[[]],[30],[[],31],[[]],[[]],[[9,13,[34,[33]]]],[9,15],[[]],[[32,35],36],[[32,[34,[37]]]],[32,15],[15],[[32,32,[38,[32,32]]]],[32],[32],[15],[[[39,[32]]],15],[15],[15],[[]],[[32,[29,[32]]]],[[32,[29,[32]]],15],[[15,[29,[32]]]],[32,[[29,[40]]]],[[],[[29,[32]]]],[32],[1],[1],0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[1,15],[1,15],[1,15],[[],41],[[]],[19,18],0,0,0,0,0,0,0,0,0,0,0,[9,[[7,[1]]]],[[9,15],[[7,[1]]]],[12,11],[12,11],[12,11],[12,11],[12,11],[12,11],[12,11],[12,11],[12,11],[12,11],[42],[[],19],0,0,[32],[[1,15],15],0,0,[1,7],0,0,0,0,0,0,[[1,4,35],36],[43],[43],0,[[1,28]],0,0,0,[3,14],[8,14],[[1,4],15],[[1,15]],[[1,32,32,[38,[32,32]]]],[[1,32]],[[1,15],15],[[1,[39,[32]]],15],[[1,15],15],[[]],[[],[[7,[6]]]],[[1,4,15],32],[[],15],[1],0,0,[1,[[29,[0]]]],[[1,4,[29,[4]]],15],[1],[[1,32],[[29,[40]]]],[1,[[29,[32]]]],0,0,[[],[[14,[[39,[45,46]],47]]]],[[],[[14,[[39,[45,46]],47]]]],[[]],[[]],[[]],[[]],[[]],[[],32],[[],32],0,[[],[[7,[6]]]],0,[[],14],[44,[[14,[3]]]],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[44,[[14,[5]]]],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],48],[[],48],[[],48],[[],48],[[],48],[[],48],[[],48],[[],48],[[],48],[[],48],[[],48],[[],13],0,0,0,[[],19],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[49,50]],[[51,52]],[[51,[39,[30]]]],[[53,[39,[50]]]],[[49,[39,[50]]]],[[51,[39,[50]]]],[[53,50]],[[51,50]],[[54,44]],[[55,44]],[[56,32]],[[57,44]],[[58,44]],[[57,44]],[59,[[29,[39]]]],[59,[[29,[39]]]],[59,[[29,[15]]]],[[60,30],30],[59,[[29,[61]]]],[59,[[29,[50]]]],[40,59],[62,59],[[63,30],30],[59,29],[59,[[29,[64]]]],[59,[[29,[64]]]],[59,[[29,[4]]]],[59,[[29,[30]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,[65],[[51,66]],0,[59,59],[67,67],[68,68],[69,69],[54,54],[53,53],[70,70],[71,71],[55,55],[72,72],[49,49],[60,60],[58,58],[73,73],[28,28],[74,74],[75,75],[57,57],[40,40],[2,2],[76,76],[56,56],[77,77],[63,63],[65,65],[66,66],[51,51],[78,78],[79,79],[62,62],[11,11],[11,11],[11,11],[11,11],[11,11],[11,11],[11,11],[11,11],[11,11],[11,11],[11,11],[11,11],[11,11],[11,11],[11,11],[11,11],[11,11],[11,11],[11,11],[11,11],[11,11],[11,11],[11,11],[11,11],[11,11],[11,11],[11,11],[11,11],[11,11],[11,11],[11,11],[11,11],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[11,12],[11,12],[11,12],[11,12],[11,12],[11,12],[11,12],[11,12],[11,12],[11,12],[11,12],[11,12],[11,12],[11,12],[11,12],[11,12],[11,12],[11,12],[11,12],[11,12],[11,12],[11,12],[11,12],[11,12],[11,12],[11,12],[11,12],[11,12],[11,12],[11,12],[11,12],[11,12],0,0,[[],59],[[],70],[[],2],0,[[],[[14,[59]]]],[[],[[14,[67]]]],[[],[[14,[68]]]],[[],[[14,[60]]]],[[],[[14,[40]]]],[[],[[14,[2]]]],[[],[[14,[63]]]],[[],[[14,[62]]]],[59,[[14,[20]]]],[59,[[14,[20]]]],[59,[[14,[20]]]],[59,[[14,[20]]]],[59,[[14,[20]]]],[59,[[14,[20]]]],[59,[[14,[20]]]],[59,[[14,[20]]]],[59,[[14,[20]]]],[59,[[14,[20]]]],[[59,4],[[14,[20]]]],[[59,4],[[14,[20]]]],[59,[[14,[20]]]],[59,[[14,[20]]]],[59,[[14,[20]]]],[59,[[14,[20]]]],[59,[[14,[20]]]],[59,[[14,[20]]]],[59,[[14,[20]]]],[59,[[14,[20]]]],[59,[[14,[20]]]],[59,[[14,[20]]]],[59,[[14,[20]]]],[59,[[14,[20]]]],[59,[[14,[20]]]],[59,[[14,[20]]]],[59,[[14,[20]]]],[59,[[14,[20]]]],[59,[[14,[20]]]],[59,[[14,[20]]]],[59,[[14,[20]]]],[59,[[14,[20]]]],[[59,4],[[14,[20]]]],[[59,4],[[14,[20]]]],[59,[[14,[20]]]],[59,[[14,[20]]]],[59,[[14,[20]]]],[59,[[14,[20]]]],[59,[[14,[20]]]],[59,[[14,[20]]]],[59,[[14,[20]]]],[59,[[14,[20]]]],[[59,4],[[14,[20]]]],[[59,4],[[14,[20]]]],[[59,27],[[14,[20]]]],[[59,27],[[14,[20]]]],[[59,4,27],[[14,[20]]]],[[59,4,27],[[14,[20]]]],[59,[[14,[20]]]],[59,[[14,[20]]]],[59,[[14,[20]]]],[59,[[14,[20]]]],[59,[[14,[20]]]],[59,[[14,[20]]]],[59,[[14,[20]]]],[59,[[14,[20]]]],[59,[[14,[20]]]],[59,[[14,[20]]]],[59,[[14,[20]]]],[59,[[14,[20]]]],[[59,4],[[14,[20]]]],[[59,4],[[14,[20]]]],[[63,52],30],[[59,32],15],[[59,30],15],[[59,61],15],[[59,80],15],[[59,81],15],[[59,50],15],[[59,45],15],[[59,81],15],[[59,82],15],[[59,15],15],[[59,50],15],[[59,27],15],[[59,83],15],[[59,84],15],[[59,45],15],[[59,81],15],[[59,61],15],[[59,82],15],[[59,50],15],[[59,45],15],[[59,85],15],[[59,44],15],[[59,15],15],[[59,44],15],[[59,80],15],[[59,84],15],[[59,27],15],[[59,30],15],[[59,4],15],[[59,82],15],[[59,83],15],[[59,27],15],[[59,15],15],[[59,83],15],[[59,44],15],[[59,4],15],[[59,85],15],[[59,84],15],[[59,30],15],[[59,59],15],[[59,61],15],[[59,85],15],[[59,80],15],[[67,67],15],[[70,70],15],[[75,75],15],[[40,40],15],[[63,63],15],[[66,66],15],[[62,62],15],0,0,0,[[59,16],[[14,[86]]]],[[59,16],[[14,[86]]]],[[67,16],17],[[68,16],17],[[69,16],17],[[54,16],17],[[53,16],17],[[70,16],17],[[71,16],17],[[55,16],17],[[72,16],17],[[[88,[87]],16],17],[[49,16],17],[[60,16],17],[[73,16],17],[[28,16],17],[[74,16],17],[[75,16],17],[[57,16],17],[[40,16],17],[[2,16],17],[[76,16],17],[[56,16],17],[[77,16],17],[[63,16],17],[[65,16],17],[[66,16],17],[[51,16],17],[[78,16],17],[[79,16],17],[[89,16],17],[[62,16],17],[63,4],[[[90,[4]]],59],[85,59],[61,59],[15,59],[[[39,[46]]],59],[4,59],[80,59],[32,59],[81,59],[44,59],[29,59],[84,59],[[],59],[27,59],[[],59],[45,59],[91,59],[82,59],[83,59],[30,59],[[]],[50,59],[[[64,[32,59]]],59],[[]],[[]],[[]],[[]],[[]],[[]],[[[93,[92]]],70],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],75],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[30,66],[27,66],[[]],[[]],[[]],[[]],[[]],[[]],[[],59],[[],59],[4,[[14,[59,20]]]],[79,32],[59,[[29,[59]]]],[[88,[94,[4]]],12],[59,[[29,[59]]]],[66],0,0,[59,59],[59,59],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[59],[59,15],[59,15],[59,15],[59,15],[59,15],[59,15],[59,15],[59,15],[59,15],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[8,69],[8,54],[[8,50,50,50,68],53],[[8,63],71],[[8,[39,[8]]],55],[[8,[39,[32]]],72],[[42,[29,[[39,[[90,[4]]]]]]],88],[[8,60],49],[8,58],[8,73],[[[95,[32]],15,15,15,15,15,[39,[32]],[39,[32]]],28],[8,74],[8,57],[[],2],[8,76],[8,56],[8,77],[[8,63],65],[[8,63],51],[8,78],[8,79],[12,11],[12,11],[12,11],[12,11],[12,11],[12,11],[12,11],[12,11],[12,11],[12,11],[12,11],[12,11],[12,11],[12,11],[12,11],[12,11],[12,11],[12,11],[12,11],[12,11],[12,11],[12,11],[12,11],[12,11],[12,11],[12,11],[12,11],[12,11],[12,11],[12,11],[12,11],[12,11],0,0,[62,4],0,[[59,4],[[29,[59]]]],[[59,4],[[29,[59]]]],[[72,[38,[32,32]]]],[73],[[72,30,[38,[32,32]]]],0,[59,14],[67,14],[68,14],[60,14],[40,14],[2,14],[63,14],[89,14],[62,14],[[69,15]],[[71,[29,[70]]]],[[73,59]],[[74,50]],[[76,32]],[[56,[39,[32]]]],[[77,32]],[[78,[95,[32]]]],[[79,32]],[[65,52]],[[65,50]],[[73,32]],[1,15],[65],[51,66],[65],[[51,66]],[[28,[29,[32]]]],0,[59,59],[[69,5],44],[[54,5],44],[[53,5],44],[[71,5],44],[[55,5],44],[[72,5],44],[[88,5],44],[[49,5],44],[[58,5],44],[[73,5],44],[[74,5],44],[[57,5],44],[[76,5],44],[[56,5],44],[[77,5],44],[[65,5],44],[[51,5],44],[[78,5],44],[[79,5],44],[[69,[29,[32]]],[[29,[15]]]],[[54,[29,[32]]],[[29,[44]]]],[[53,[29,[32]]],[[29,[89]]]],[[71,[29,[32]]],[[29,[70]]]],[[55,[29,[32]]],[[29,[44]]]],[[72,[29,[32]]],[[29,[[39,[67]]]]]],[[49,[29,[32]]],[[29,[89]]]],[[58,[29,[32]]],[[29,[75]]]],[[73,[29,[32]]],[[29,[59]]]],[[74,[29,[32]]],[[29,[50]]]],[[57,[29,[32]]],[[29,[75]]]],[[76,[29,[32]]],[[29,[32]]]],[[56,[29,[32]]],[[29,[[39,[32]]]]]],[[77,[29,[32]]],[[29,[32]]]],[[65,[29,[32]]],[[29,[50]]]],[[51,[29,[32]]],[[29,[89]]]],[[78,[29,[32]]],[[29,[32]]]],[[79,[29,[32]]],[[29,[32]]]],[[71,[29,[32]]],[[29,[32]]]],0,[[],[[14,[[39,[45,46]],47]]]],[[],[[14,[[39,[45,46]],47]]]],[[],[[14,[[39,[45,46]],47]]]],[[],[[14,[[39,[45,46]],47]]]],[[],[[14,[[39,[45,46]],47]]]],[[],[[14,[[39,[45,46]],47]]]],[[],[[14,[[39,[45,46]],47]]]],[[],[[14,[[39,[45,46]],47]]]],[[],[[14,[[39,[45,46]],47]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],32],[[],14],[[],14],[[],14],[44,[[14,[68]]]],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[44,[[14,[60]]]],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[32,[[14,[2]]]],[[],14],[[],14],[[],14],[[],14],[[],14],[44,[[14,[63]]]],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],48],[[],48],[[],48],[[],48],[[],48],[[],48],[[],48],[[],48],[[],48],[[],48],[[],48],[[],48],[[],48],[[],48],[[],48],[[],48],[[],48],[[],48],[[],48],[[],48],[[],48],[[],48],[[],48],[[],48],[[],48],[[],48],[[],48],[[],48],[[],48],[[],48],[[],48],[[],48],0,[32],[[69,32],69],[[54,32],54],[[53,32],53],[[49,32],49],[[76,32],76],[[77,32],77],[[51,32],51],[32],[[69,32],69],[[54,32],54],[[53,32],53],[[49,32],49],[[76,32],76],[[77,32],77],[[51,32],51],0,0,0,[[]],[[]],[[]],[[]],[[96,26],7],[11,11],[11,11],[[96,1,28,[29,[4]],4,4],[[29,[97]]]],[11,12],[11,12],0,[[],96],0,[[]],[[]],0,0,[[]],[[]],0,[[],96],[12,11],[12,11],0,[[96,26,97],98],[[],14],[[],14],[[],14],[[],14],[[],48],[[],48],0,0,[[]],[[]],[11,11],[11,12],[[]],[[]],[12,11],0,0,0,0,0,[[],14],[[],14],[[],48],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[30],[52],[[[39,[30]]]],[[[39,[50]]]],[[[39,[50]]]],[50],[50],[44],[[[95,[32]]]],[44],[44],[44],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[66],[100,100],[11,11],[11,11],[11,11],[[]],[11,12],[11,12],[11,12],[[100,100],15],[[100,16],17],[[101,16],17],[[101,16],17],[[]],[[]],[[]],[4,[[14,[101]]]],[[],102],[4],[100],[[]],[[]],[[]],[[],[[38,[32,32]]]],[100,[[38,[32,32]]]],[[],[[14,[59,101]]]],[12,11],[12,11],[12,11],[43],[[[95,[29]]]],[15],[[[29,[70]]]],[50],[[[95,[32]]]],[[[39,[32]]]],[[[95,[32]]]],[[[95,[32]]]],[102],[52],[[]],[[],66],[[]],[66],[[[29,[4]]]],[5,44],[5,44],[5,44],[5,44],[5,44],[5,44],[5,44],[5,44],[5,44],[5,44],[5,44],[5,44],[5,44],[5,44],[5,44],[5,44],[5,44],[[[95,[[29,[4]]]]],[[29,[15]]]],[[[95,[[29,[4]]]]],[[29,[44]]]],[[[95,[[29,[4]]]]],[[29,[89]]]],[[[95,[[29,[4]]]]],[[29,[70]]]],[[[95,[[29,[4]]]]],[[29,[[39,[67]]]]]],[[[95,[[29,[4]]]]],[[29,[89]]]],[[[95,[[29,[4]]]]],[[29,[75]]]],[[[95,[[29,[4]]]]],[[29,[50]]]],[[[95,[[29,[4]]]]],[[29,[75]]]],[[[95,[[29,[4]]]]],[[29,[32]]]],[[[95,[[29,[4]]]]],[[29,[[39,[32]]]]]],[[[95,[[29,[4]]]]],[[29,[32]]]],[[[95,[[29,[4]]]]],[[29,[30]]]],[[[95,[[29,[4]]]]],[[29,[89]]]],[[[95,[[29,[4]]]]],[[29,[32]]]],[[[95,[[29,[4]]]]],[[29,[102]]]],[[]],[[],32],[[],14],[[],14],[44,[[14,[100]]]],[4,[[14,[100]]]],[[],14],[[],14],[[],14],[[],14],[[],48],[[],48],[[],48],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,[[4,4]],[103,[[106,[[105,[104]]]]]],[107,107],[104,104],[11,11],[11,11],[11,11],[11,11],[11,11],[11,11],[11,11],[[]],[[]],[11,12],[11,12],[11,12],[11,12],[11,12],[11,12],[11,12],[[],107],[[],108],[[],[[14,[108]]]],0,0,[[],35],[[103,1,107]],[[103,1,4]],[[104,104],15],[[31,31],15],[[107,16],17],[[104,16],17],[[35,16],17],[[36,16],17],[[31,16],17],[[103,16],17],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[35,[[29,[4]]]],[[103,1,15],31],0,0,0,[44,35],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[104,15],[31,15],[31,15],0,[[[95,[109]],4],103],[12,11],[12,11],[12,11],[12,11],[12,11],[12,11],[12,11],0,0,0,0,[104,[[29,[32]]]],[[103,1,4,35],36],[[],35],[[103,15],110],[108,14],[[103,30,84]],[[],[[14,[[39,[45,46]],47]]]],[[]],[[]],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],48],[[],48],[[],48],[[],48],[[],48],[[],48],[[],48],[[],35],0,0,0,0],"p":[[3,"Glean"],[3,"RemoteSettingsConfig"],[4,"Lifetime"],[15,"str"],[4,"ErrorType"],[4,"CallbackError"],[6,"Result"],[3,"CommonMetricData"],[3,"InternalConfiguration"],[3,"PingRateLimit"],[3,"Handle"],[3,"Arc"],[3,"ClientInfoMetrics"],[4,"Result"],[15,"bool"],[3,"Formatter"],[6,"Result"],[4,"ErrorKind"],[3,"Error"],[3,"Error"],[3,"Error"],[4,"StoreError"],[4,"Infallible"],[3,"OsString"],[3,"UnexpectedUniFFICallbackError"],[3,"Path"],[15,"usize"],[3,"PingType"],[4,"Option"],[15,"u64"],[4,"PingUploadTask"],[3,"String"],[8,"OnGleanEvents"],[3,"Box"],[4,"UploadResult"],[4,"UploadTaskAction"],[8,"GleanEventListener"],[3,"HashMap"],[3,"Vec"],[3,"RecordedExperiment"],[8,"Iterator"],[4,"LabeledMetricData"],[3,"Demand"],[15,"i32"],[15,"u8"],[3,"Global"],[4,"DataError"],[3,"TypeId"],[3,"MemoryDistributionMetric"],[15,"i64"],[3,"TimingDistributionMetric"],[3,"Duration"],[3,"CustomDistributionMetric"],[3,"CounterMetric"],[3,"DenominatorMetric"],[3,"StringListMetric"],[3,"RateMetric"],[3,"NumeratorMetric"],[4,"JsonValue"],[4,"MemoryUnit"],[15,"f64"],[4,"Metric"],[4,"TimeUnit"],[3,"Map"],[3,"TimespanMetric"],[3,"TimerId"],[3,"RecordedEvent"],[4,"HistogramType"],[3,"BooleanMetric"],[3,"Datetime"],[3,"DatetimeMetric"],[3,"EventMetric"],[3,"ObjectMetric"],[3,"QuantityMetric"],[3,"Rate"],[3,"StringMetric"],[3,"TextMetric"],[3,"UrlMetric"],[3,"UuidMetric"],[15,"i16"],[15,"f32"],[15,"isize"],[15,"u16"],[15,"u32"],[15,"i8"],[3,"Error"],[8,"Debug"],[3,"LabeledMetric"],[3,"DistributionData"],[4,"Cow"],[3,"Number"],[3,"FixedOffset"],[3,"DateTime"],[8,"AsRef"],[8,"Into"],[3,"PingMaker"],[3,"Ping"],[6,"Result"],[3,"StorageManager"],[4,"NoExtraKeys"],[3,"ObjectError"],[3,"Uuid"],[3,"PingUploadManager"],[3,"PingRequest"],[3,"VecDeque"],[3,"RwLockWriteGuard"],[3,"PingPayload"],[3,"PingMetadata"],[3,"PathBuf"],[3,"JoinHandle"],[8,"AllowLabeled"],[13,"CustomDistribution"],[13,"Common"],[13,"MemoryDistribution"],[13,"TimingDistribution"],[13,"HttpStatus"],[8,"MetricType"],[8,"ExtraKeys"],[8,"Event"],[4,"EventRecordingError"],[8,"MemoryDistribution"],[8,"TimingDistribution"],[8,"CustomDistribution"],[8,"Counter"],[8,"StringList"],[8,"Rate"],[8,"Numerator"],[8,"Timespan"],[8,"ObjectSerialize"],[8,"Uuid"],[8,"Labeled"],[8,"Boolean"],[8,"Datetime"],[8,"Quantity"],[8,"String"],[8,"Text"],[8,"Url"],[8,"Ping"],[13,"Upload"],[13,"Wait"]]},\ -"uniffi_bindgen":{"doc":"","t":[],"n":[],"q":[],"d":[],"i":[],"f":[],"p":[]}\ -}'); -if (typeof window !== 'undefined' && window.initSearch) {window.initSearch(searchIndex)}; -if (typeof exports !== 'undefined') {exports.searchIndex = searchIndex}; +var searchIndex = new Map(JSON.parse('[\ +["glean_core",{"doc":"Glean is a modern approach for recording and sending …","t":"KPEGFPFEPEEEEEPFGGEPFKGPFPPPPPPPIIIIFGIIGPPPEEPPEEPKPPPFEEEEEEEEIPEEEEPEEPEPEEEPPEOOOOOONONNNNNNNNNNNNNNNNNNNNNNNNNMOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNONNNOOOOOONNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNHHHHHHHHHHHHHHHHHHHHHHHHHHHNNMNNNNNNNNNNNNNNNNNHNOOOOOCONNNNNNNNNNNNMNMNONCOOOONONOONNNNNNNNNHNNMNCNNNNNNHNNNNNNNNNCMONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCOONOOOOOOOOOOOPPPFPPFPPFFPFPFFFPPPGPGPPIIIIFIIPPPFGGKPPPPPPFPPFFPFFPFFFFPPPPFFPFGFPFPFPFPFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONONNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNOFFNNNNNNNNNNONONNOONNONNNONNNNNNNOFNNNNNNNNNNNNNNNTKKKKKGPRKGPPKPKGKFKKKKKKKKKKKMMMMMMMMMMMMNNNNNNMMNNNNNNNNNNNNNNNMMMNNNNMNMNNNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNPPPIPPFFFFGPPPGGPOOOONNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNOOONNNNNNNNNNNNONNNNNNNNOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOO","n":["AllowLabeled","Application","BooleanMetric","CallbackError","ClientInfoMetrics","Common","CommonMetricData","CounterMetric","CustomDistribution","CustomDistributionMetric","Datetime","DatetimeMetric","DenominatorMetric","DistributionData","Err","Error","ErrorKind","ErrorType","EventMetric","Exponential","Glean","GleanEventListener","HistogramType","HistogramType","InternalConfiguration","InvalidConfig","InvalidLabel","InvalidOverflow","InvalidState","InvalidValue","IoError","Json","LabeledBoolean","LabeledCounter","LabeledCustomDistribution","LabeledMemoryDistribution","LabeledMetric","LabeledMetricData","LabeledString","LabeledTimingDistribution","Lifetime","Lifetime","Linear","MemoryDistribution","MemoryDistributionMetric","MemoryUnit","MemoryUnit","NotInitialized","NumeratorMetric","ObjectMetric","Ok","OnGleanEvents","OsString","Ping","PingBodyOverflow","PingRateLimit","PingRequest","PingType","PingUploadTask","QuantityMetric","Rate","RateMetric","RecordedEvent","RecordedExperiment","Result","Rkv","StringListMetric","StringMetric","TextMetric","TimeUnit","TimeUnit","TimerId","TimespanMetric","TimingDistribution","TimingDistributionMetric","UnexpectedError","UploadResult","UploadTaskAction","UrlMetric","User","Utf8Error","UuidMetric","android_sdk_version","app_build","app_build","app_build_date","app_display_version","application_id","apply_server_knobs_config","architecture","as_str","as_str","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","cancel_metrics_ping_scheduler","cancel_uploads","category","channel","clear_application_lifetime_metrics","clone","clone","clone","clone","clone","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_into","clone_into","clone_into","clone_into","clone_into","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","data_path","default","default","default","delay_ping_lifetime_io","deserialize","deserialize","destroy_db","device_manufacturer","device_model","disabled","dynamic_label","enable_event_timestamps","enable_internal_pings","eq","eq","event_storage","experimentation_id","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_str","from_str","get_application_id","get_data_path","get_max_events","get_ping_by_name","get_timestamp_ms","get_upload_task","glean_apply_server_knobs_config","glean_enable_logging","glean_enable_logging_to_fd","glean_get_upload_task","glean_handle_client_active","glean_handle_client_inactive","glean_initialize","glean_initialize_for_subprocess","glean_persist_ping_lifetime_data","glean_process_ping_upload_response","glean_register_event_listener","glean_set_debug_view_tag","glean_set_dirty_flag","glean_set_experiment_active","glean_set_experiment_inactive","glean_set_experimentation_id","glean_set_log_pings","glean_set_source_tags","glean_set_test_mode","glean_set_upload_enabled","glean_shutdown","glean_submit_ping_by_name","glean_submit_ping_by_name_sync","glean_test_destroy_glean","glean_test_get_experiment_data","glean_test_get_experimentation_id","glean_unregister_event_listener","handle_client_active","handle_client_inactive","initialize_finished","into","into","into","into","into","into","into","into","into","into","into","into_serialized_object","into_serialized_object","is_dirty_flag_set","is_first_run","is_upload_enabled","iter","join_init","kind","language_binding_name","lifetime","locale","log_level","max_events","metrics","name","new","new_for_subprocess","new_handle","new_handle","new_handle","new_handle","new_handle","new_handle","new_handle","new_handle","new_handle","new_handle","new_labeled","not_initialized","on_event_recorded","on_ready_to_submit_pings","os_version","persist_ping_lifetime_data","ping","ping_lifetime_max_time","ping_lifetime_threshold","ping_schedule","pings_per_interval","process_ping_upload_response","rate_limit","register_ping_type","seconds_per_interval","send_in_pings","serialize","serialize","set_debug_view_tag","set_dirty_flag","set_experiment_active","set_experiment_inactive","set_log_pings","set_source_tags","set_upload_enabled","shutdown","shutdown","snapshot","start_metrics_ping_scheduler","start_metrics_ping_scheduler","storage","storage","storage_opt","submit_ping_by_name","test_clear_all_stores","test_get_experiment_data","test_get_experimentation_id","test_get_num_recorded_errors","to_bytes","to_bytes","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","traits","trigger_upload","trim_data_to_registered_pings","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","unknown","upload","upload_enabled","use_core_mps","utf8_error","windows_build_number","bucket_count","cmd","cmd","cmd","cmd","histogram_type","range_max","range_min","unit","unit","Array","Bool","Boolean","BooleanMetric","Byte","Counter","CounterMetric","CustomDistributionExponential","CustomDistributionLinear","CustomDistributionMetric","Datetime","Datetime","DatetimeMetric","Day","DenominatorMetric","DistributionData","EventMetric","Experiment","Exponential","Gigabyte","HistogramType","Hour","JsonValue","Jwe","Kilobyte","LabeledBoolean","LabeledCounter","LabeledCustomDistribution","LabeledMemoryDistribution","LabeledMetric","LabeledString","LabeledTimingDistribution","Linear","Megabyte","MemoryDistribution","MemoryDistributionMetric","MemoryUnit","Metric","MetricType","Microsecond","Millisecond","Minute","Nanosecond","Null","Number","NumeratorMetric","Object","Object","ObjectMetric","PingType","Quantity","QuantityMetric","Rate","Rate","RateMetric","RecordedEvent","RecordedExperiment","RemoteSettingsConfig","Second","String","String","StringList","StringListMetric","StringMetric","Text","TextMetric","TimeUnit","TimerId","Timespan","TimespanMetric","TimingDistribution","TimingDistributionMetric","Url","UrlMetric","Uuid","UuidMetric","accumulate","accumulate_raw_duration","accumulate_raw_samples_nanos","accumulate_samples","accumulate_samples","accumulate_samples","accumulate_single_sample","accumulate_single_sample","add","add","add","add_to_denominator","add_to_numerator","add_to_numerator","as_array","as_array_mut","as_bool","as_bytes","as_f64","as_i64","as_json","as_json","as_nanos","as_null","as_object","as_object_mut","as_str","as_u64","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","branch","cancel","cancel","category","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","count","day","default","default","default","denominator","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize_any","deserialize_any","deserialize_bool","deserialize_bool","deserialize_byte_buf","deserialize_byte_buf","deserialize_bytes","deserialize_bytes","deserialize_char","deserialize_char","deserialize_enum","deserialize_enum","deserialize_f32","deserialize_f32","deserialize_f64","deserialize_f64","deserialize_i128","deserialize_i128","deserialize_i16","deserialize_i16","deserialize_i32","deserialize_i32","deserialize_i64","deserialize_i64","deserialize_i8","deserialize_i8","deserialize_identifier","deserialize_identifier","deserialize_ignored_any","deserialize_ignored_any","deserialize_map","deserialize_map","deserialize_newtype_struct","deserialize_newtype_struct","deserialize_option","deserialize_option","deserialize_seq","deserialize_seq","deserialize_str","deserialize_str","deserialize_string","deserialize_string","deserialize_struct","deserialize_struct","deserialize_tuple","deserialize_tuple","deserialize_tuple_struct","deserialize_tuple_struct","deserialize_u128","deserialize_u128","deserialize_u16","deserialize_u16","deserialize_u32","deserialize_u32","deserialize_u64","deserialize_u64","deserialize_u8","deserialize_u8","deserialize_unit","deserialize_unit","deserialize_unit_struct","deserialize_unit_struct","duration_convert","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","event_threshold","extra","extra","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","format_pattern","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_iter","from_iter","from_str","from_str","from_str","from_str","from_str","from_str","from_str","from_str","from_str","generate_and_set","get","get","get_mut","hash","hour","id","index","index_mut","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into_deserializer","into_serialized_object","into_serialized_object","into_serialized_object","into_serialized_object","into_serialized_object","into_serialized_object","into_serialized_object","into_serialized_object","is_array","is_boolean","is_f64","is_i64","is_null","is_number","is_object","is_string","is_u64","meta","meta","meta","meta","meta","meta","meta","meta","meta","meta","meta","meta","meta","meta","meta","meta","meta","meta","meta","metrics_enabled","minute","month","name","nanosecond","new","new","new","new","new","new","new","new","new","new","new","new","new","new","new","new","new","new","new","new","new","new_handle","new_handle","new_handle","new_handle","new_handle","new_handle","new_handle","new_handle","new_handle","new_handle","new_handle","new_handle","new_handle","new_handle","new_handle","new_handle","new_handle","new_handle","new_handle","new_handle","new_handle","new_handle","new_handle","new_handle","new_handle","new_handle","new_handle","new_handle","new_handle","new_handle","new_handle","new_handle","new_labeled","new_labeled","new_labeled","new_labeled","new_labeled","new_labeled","numerator","offset_seconds","ping_section","pings_enabled","pointer","pointer_mut","record","record_schema_error","record_with_time","second","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","set","set","set","set","set","set","set","set","set","set_raw","set_raw_nanos","set_string","should_record","start","start","stop","stop_and_accumulate","submit","sum","take","test_get_num_recorded_errors","test_get_num_recorded_errors","test_get_num_recorded_errors","test_get_num_recorded_errors","test_get_num_recorded_errors","test_get_num_recorded_errors","test_get_num_recorded_errors","test_get_num_recorded_errors","test_get_num_recorded_errors","test_get_num_recorded_errors","test_get_num_recorded_errors","test_get_num_recorded_errors","test_get_num_recorded_errors","test_get_num_recorded_errors","test_get_num_recorded_errors","test_get_num_recorded_errors","test_get_num_recorded_errors","test_get_num_recorded_errors","test_get_num_recorded_errors","test_get_value","test_get_value","test_get_value","test_get_value","test_get_value","test_get_value","test_get_value","test_get_value","test_get_value","test_get_value","test_get_value","test_get_value","test_get_value","test_get_value","test_get_value","test_get_value","test_get_value","test_get_value","test_get_value_as_string","timestamp","to_bytes","to_bytes","to_bytes","to_bytes","to_bytes","to_bytes","to_bytes","to_bytes","to_bytes","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","values","with_dynamic_label","with_dynamic_label","with_dynamic_label","with_dynamic_label","with_dynamic_label","with_dynamic_label","with_dynamic_label","with_dynamic_label","with_name","with_name","with_name","with_name","with_name","with_name","with_name","with_name","year","Ping","PingMaker","borrow","borrow","borrow_mut","borrow_mut","clear_pending_pings","clone_handle","clone_handle","collect","consume_handle","consume_handle","content","default","doc_id","from","from","headers","includes_info_sections","into","into","name","new","new_handle","new_handle","schedules_pings","store_ping","try_from","try_from","try_into","try_into","type_id","type_id","url_path","StorageManager","borrow","borrow_mut","clone_handle","consume_handle","from","into","new_handle","snapshot","snapshot_as_json","snapshot_experiments_as_json","snapshot_metric","snapshot_metric_for_test","try_from","try_into","type_id","ALLOWED_KEYS","Boolean","Counter","CustomDistribution","Datetime","Event","EventRecordingError","Exponential","Extra","ExtraKeys","HistogramType","InvalidExtraKey","InvalidId","Labeled","Linear","MemoryDistribution","NoExtraKeys","Numerator","ObjectError","ObjectSerialize","Ping","Quantity","Rate","String","StringList","Text","Timespan","TimingDistribution","Url","Uuid","accumulate","accumulate_raw_duration","accumulate_raw_samples_nanos","accumulate_samples","accumulate_samples_signed","accumulate_single_sample","accumulate_single_sample_signed","add","add","add_to_denominator","add_to_numerator","add_to_numerator","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","cancel","cancel","clone","clone_handle","clone_handle","clone_handle","clone_into","consume_handle","consume_handle","consume_handle","eq","fmt","fmt","fmt","from","from","from","from_str","generate_and_set","get","hash","into","into","into","into_ffi_extra","into_ffi_extra","into_serialized_object","new_handle","new_handle","new_handle","record","set","set","set","set","set","set","set","set","set_raw","start","start","stop","stop_and_accumulate","submit","test_get_num_recorded_errors","test_get_num_recorded_errors","test_get_num_recorded_errors","test_get_num_recorded_errors","test_get_num_recorded_errors","test_get_num_recorded_errors","test_get_num_recorded_errors","test_get_num_recorded_errors","test_get_num_recorded_errors","test_get_num_recorded_errors","test_get_num_recorded_errors","test_get_num_recorded_errors","test_get_num_recorded_errors","test_get_num_recorded_errors","test_get_num_recorded_errors","test_get_num_recorded_errors","test_get_num_recorded_errors","test_get_value","test_get_value","test_get_value","test_get_value","test_get_value","test_get_value","test_get_value","test_get_value","test_get_value","test_get_value","test_get_value","test_get_value","test_get_value","test_get_value","test_get_value","test_get_value","to_owned","to_string","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","Done","Done","End","HeaderMap","HttpStatus","Next","PingMetadata","PingPayload","PingRequest","PingUploadManager","PingUploadTask","RecoverableFailure","UnrecoverableFailure","Upload","UploadResult","UploadTaskAction","Wait","body","body_has_info_sections","body_has_info_sections","body_has_info_sections","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","builder","chunked_log_info","clear_ping_queue","clone","clone","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_handle","clone_into","clone_into","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","consume_handle","default","default","deserialize","document_id","document_id","done","enqueue_ping","enqueue_ping_from_file","eq","eq","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from_str","get_label","get_upload_task","headers","headers","headers","http_status","into","into","into","into","into","into","into","into_serialized_object","is_deletion_request","is_upload","is_wait","json_body","new","new_handle","new_handle","new_handle","new_handle","new_handle","new_handle","new_handle","path","ping_name","ping_name","ping_name","pretty_body","process_ping_upload_response","recoverable_failure","scan_pending_pings_directories","serialize","set_rate_limiter","to_bytes","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","unrecoverable_failure","upload_path","request","time","code"],"q":[[0,"glean_core"],[364,"glean_core::LabeledMetricData"],[374,"glean_core::metrics"],[1280,"glean_core::ping"],[1314,"glean_core::storage"],[1330,"glean_core::traits"],[1469,"glean_core::upload"],[1611,"glean_core::upload::PingUploadTask"],[1613,"glean_core::upload::UploadResult"],[1614,"uniffi_core::ffi::handle"],[1615,"alloc::sync"],[1616,"core::result"],[1617,"serde::de"],[1618,"core::fmt"],[1619,"core::fmt"],[1620,"rkv::error"],[1621,"std::ffi::os_str"],[1622,"serde_json::error"],[1623,"std::io::error"],[1624,"uniffi_core::ffi::callbackinterface"],[1625,"std::path"],[1626,"core::option"],[1627,"alloc::string"],[1628,"alloc::boxed"],[1629,"std::collections::hash::map"],[1630,"alloc::vec"],[1631,"core::iter::traits::iterator"],[1632,"serde::ser"],[1633,"rkv::error"],[1634,"core::time"],[1635,"serde_json::map"],[1636,"serde::de"],[1637,"alloc::borrow"],[1638,"core::clone"],[1639,"core::convert"],[1640,"chrono::datetime"],[1641,"core::iter::traits::collect"],[1642,"serde_json::value::index"],[1643,"core::convert"],[1644,"std::io::error"],[1645,"alloc::collections::vec_deque"],[1646,"std::sync::rwlock"],[1647,"std::path"]],"d":["Trait for metrics that can be nested inside a labeled …","The metric is reset on application restart","","An error returned from callbacks.","Metrics included in every ping as client_info.","The common case: just a CMD.","The common set of data shared across all different metric …","","The custom_distribution-specific case.","","","","","","Contains the error value","A specialized Error type for this crate’s operations.","A list enumerating the categories of errors in this crate.","The possible error types for metric recording. Note: the …","","A histogram with exponential distributed buckets.","The object holding meta information about a Glean instance.","A callback handler that receives the base identifier of …","Different kinds of histograms.","HistogramType conversion failed","Configuration for Glean","Glean initialization was attempted with an invalid …","For when the label of a labeled metric does not match the …","For when the value to be recorded overflows the …","For when the metric caught an invalid state while recording","For when the value to be recorded does not match the …","IO error","JSON error","A labeled boolean.","A labeled counter.","A labeled custom_distribution.","A labeled memory_distribution.","A labeled metric.","The metric data needed to construct inner submetrics.","A labeled string.","A labeled timing_distribution.","The supported metrics’ lifetimes.","Lifetime conversion failed","A histogram with linear distributed buckets.","The memory_distribution-specific case.","","","MemoryUnit conversion failed","Glean not initialized","","","Contains the success value","A callback object used to trigger actions on the …","OsString conversion failed","The metric is reset with each sent ping","Ping request body size overflowed","How to specify the rate at which pings may be uploaded …","","","","","","","","","A specialized Result type for this crate’s operations.","IO error","","","","","TimeUnit conversion failed","","","The timing_distribution-specific case.","","An unexpected error occured.","","","","The metric is reset with each user profile","Unknown error","","The Android specific SDK version of the software running …","The build identifier generated by the CI system (e.g. “…","The application’s build identifier. If this is different …","The app’s build date","The user visible version string (e.g. “1.0.3”).","The application ID (will be sanitized during …","Set configuration to override the default state, typically …","The architecture of the device (e.g. “arm”, “x86”).","String representation of the lifetime.","The error type’s metric id","","","","","","","","","","","","","","","","","","","","","","","Instructs the Metrics Ping Scheduler’s thread to exit …","Called when upload is disabled and uploads should be …","The metric’s category.","The product-provided release channel (e.g. “beta”).","This is not meant to be used directly.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Path to a directory to store all data in.","","","","Whether Glean should delay persistence of data from …","","","Destroys the database.","The manufacturer of the device the application is running …","The model of the device the application is running on. On …","Whether or not the metric is disabled.","Dynamic label.","Whether to add a wallclock timestamp to all events.","Whether to enable internal pings. Default: true","","","Gets a handle to the event database.","An experimentation identifier derived by the application …","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","","","Gets the application ID as specified on instantiation.","Gets the data path of this instance.","Gets the maximum number of events to store before sending …","Gets a PingType by name.","Returns a timestamp corresponding to “now” with …","Gets the next task for an uploader.","Sets a remote configuration to override metrics’ default …","Initialize the logging system based on the target …","Initialize the logging system to send JSON messages to a …","Get the next upload task","Performs the collection/cleanup operations required by …","Performs the collection/cleanup operations required by …","Initializes Glean.","Creates and initializes a new Glean object for use in a …","Asks the database to persist ping-lifetime data to disk. …","Processes the response from an attempt to upload a ping.","EXPERIMENTAL: Register a listener object to recieve …","Sets a debug view tag.","TEST-ONLY Method","Indicate that an experiment is running. Glean will then …","Indicate that an experiment is no longer running.","Set an experimentation identifier dynamically.","Sets the log pings debug option.","Sets source tags.","TEST-ONLY Method","Sets whether upload is enabled or not.","Shuts down Glean in an orderly fashion.","Collect and submit a ping for eventual upload by name.","Collect and submit a ping (by its name) for eventual …","TEST-ONLY Method","TEST ONLY FUNCTION. Returns the RecordedExperiment for the …","TEST ONLY FUNCTION. Gets stored experimentation id …","Unregister an event listener from recieving notifications.","Performs the collection/cleanup operations required by …","Performs the collection/cleanup operations required by …","Initialization finished.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","This is not meant to be used directly.","Whether or not this is the first run on this profile.","Determines whether upload is enabled.","Return an iterator over all possible error types.","TEST ONLY FUNCTION Waits on all the glean.init threads’ …","Returns the kind of the current error instance.","The name of the programming language used by the binding …","The metric’s lifetime.","The locale of the application during initialization (e.g. …","The internal logging level.","The maximum number of events to store before sending a …","The different metric types supported by the Glean SDK to …","The metric’s name.","Creates and initializes a new Glean object.","Creates and initializes a new Glean object for use in a …","","","","","","","","","","","Create a new labeled metric.","Indicates an error that no requested global object is …","Called when an event is recorded, indicating the id of the …","Signals that the environment is ready to submit pings.","The name of the operating system (e.g. “Linux”, “…","Persists Lifetime::Ping data that might be in memory in …","Ping collection, assembly & submission.","After what time to auto-flush. 0 disables it.","Write count threshold when to auto-flush. 0 disables it.","A ping schedule map. Maps a ping name to a list of pings …","Number of pings that may be uploaded in a ping uploading …","Processes the response from an attempt to upload a ping.","The rate at which pings may be uploaded before they are …","Register a new PingType.","Length of time in seconds of a ping uploading interval.","List of ping names to include this metric in.","","","Sets a debug view tag.","This is not meant to be used directly.","Indicates that an experiment is running.","Indicates that an experiment is no longer running.","Sets the log pings debug option.","Sets source tags.","Sets whether upload is enabled or not.","Shuts down Glean in an orderly fashion.","Called on shutdown, before glean-core is fully shutdown.","Takes a snapshot for the given store and optionally clear …","Start the Metrics Ping Scheduler.","Instructs the Metrics Ping Scheduler to being scheduling …","Storage snapshotting.","Gets a handle to the database.","Gets an optional handle to the database.","Collects and submits a ping by name for eventual uploading.","Test-only API (exported for FFI purposes).","Test-only API (exported for FFI purposes).","Test-only API (exported for FFI purposes).","Gets the number of recorded errors for the given metric …","","","","","","","","","","API definitions for the different metric types supported …","Trigger the uploader whenever a ping was submitted.","Whether Glean should, on init, trim its event storage to …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Creates the client info with dummy values for all.","Manages the pending pings queue and directory.","Whether upload should be enabled.","Whether Glean should schedule “metrics” pings.","Returns a new UTF-8 error","The Windows specific OS build version (e.g. 19043)","","","","","","","","","","","Represents a JSON array.","Represents a JSON boolean.","A boolean metric. See BooleanMetric for more information.","A boolean metric.","1 byte","A counter metric. See CounterMetric for more information.","A counter metric.","A custom distribution with precomputed exponential …","A custom distribution with precomputed linear bucketing. …","A custom distribution metric.","Representation of a date, time and timezone.","A datetime metric. See DatetimeMetric for more information.","A datetime metric.","Truncate to day precision.","A Denominator metric (a kind of count shared among Rate …","A snapshot of all buckets and the accumulated sum of a …","An event metric.","An experiment metric. See ExperimentMetric for more …","A histogram with exponential distributed buckets.","2^30 bytes","Different kinds of histograms.","Truncate to hour precision.","Represents any valid JSON value.","DEPRECATED: A JWE metric.. Note: This variant MUST NOT be …","2^10 bytes","A labeled boolean.","A labeled counter.","A labeled custom_distribution.","A labeled memory_distribution.","A labeled metric.","A labeled string.","A labeled timing_distribution.","A histogram with linear distributed buckets.","2^20 bytes","A memory distribution. See MemoryDistributionMetric for …","A memory distribution metric.","Different resolutions supported by the memory related …","The available metrics.","A MetricType describes common behavior across all metrics.","Truncate to microsecond precision.","Truncate to millisecond precision.","Truncate to minute precision.","Truncate to nanosecond precision.","Represents a JSON null value.","Represents a JSON number, whether integer or floating …","Developer-facing API for recording rate metrics with …","Represents a JSON object.","An Object metric. See ObjectMetric for more information.","An object metric.","Stores information about a ping.","A quantity metric. See QuantityMetric for more information.","A quantity metric.","A rate value as given by its numerator and denominator.","A rate metric. See RateMetric for more information.","A rate metric.","Represents the recorded data for a single event.","Deserialized experiment data.","Represents a list of metrics and an associated boolean …","Truncate to second precision.","Represents a JSON string.","A string metric. See StringMetric for more information.","A string list metric. See StringListMetric for more …","A string list metric.","A string metric.","A Text metric. See TextMetric for more information.","A text metric.","Different resolutions supported by the time related metric …","Identifier for a running timer.","A timespan metric. See TimespanMetric for more information.","A timespan metric.","A timing distribution. See TimingDistributionMetric for …","A timing distribution metric.","A URL metric. See UrlMetric for more information.","A URL metric.","A UUID metric. See UuidMetric for more information.","An UUID metric.","Accumulates the provided sample in the metric.","Accumulates precisely one duration to the metric.","Accumulates the provided samples in the metric.","Accumulates the provided signed samples in the metric.","Accumulates the provided signed samples in the metric.","Accumulates the provided signed samples in the metric.","Accumulates precisely one signed sample and appends it to …","Accumulates precisely one signed sample and appends it to …","Increases the counter by amount.","Increases the denominator by amount.","Adds a new string to the list.","Increases the denominator by amount.","Increases the numerator by amount.","Increases the numerator by amount.","If the Value is an Array, returns the associated vector. …","If the Value is an Array, returns the associated mutable …","If the Value is a Boolean, returns the associated bool. …","Converts a value in the given unit to bytes.","If the Value is a number, represent it as f64 if possible. …","If the Value is an integer, represent it as i64 if …","Gets the recorded experiment data as a JSON value.","The JSON representation of the metric’s data","Converts a duration in the given unit to nanoseconds.","If the Value is a Null, returns (). Returns None otherwise.","If the Value is an Object, returns the associated Map. …","If the Value is an Object, returns the associated mutable …","If the Value is a String, returns the associated str. …","If the Value is an integer, represent it as u64 if …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","The experiment’s branch as set through …","Aborts a previous set_start call. No error is recorded if …","Aborts a previous start call.","The event’s category.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","The total number of entries in the distribution.","The day of the month.","","","","A rate’s denominator","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Converts a duration to the requested time unit.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","The threshold of events that will be buffered before an …","A map of all extra data values.","Any extra data associated with this experiment through …","","Display a JSON value as a string.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Formats the given time unit, truncating the time if needed.","Convert Number to Value","","","","Convert () to Value","Convert copy-on-write string to Value","Convert String to Value","Convert 32-bit floating point number to Value","Convert boolean to Value","","","Convert map (with string keys) to Value","Convert a slice to Value","","Convert 64-bit floating point number to Value","","Convert a Vec to Value","","","Convert string slice to Value","","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Convert an iteratable type to a Value","Convert an iteratable type to a Value","","","","","","","","","","Generates a new random [Uuid’] and sets the metric to it.","Index into a JSON array or map. A string index can be used …","Gets a specific metric for a given label.","Mutably index into a JSON array or map. A string index can …","","The hour. 0-23","This timer’s id.","Index into a serde_json::Value using the syntax value[0] or","Write into a serde_json::Value using the syntax …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","Returns true if the Value is an Array. Returns false …","Returns true if the Value is a Boolean. Returns false …","Returns true if the Value is a number that can be …","Returns true if the Value is an integer between i64::MIN …","Returns true if the Value is a Null. Returns false …","Returns true if the Value is a Number. Returns false …","Returns true if the Value is an Object. Returns false …","Returns true if the Value is a String. Returns false …","Returns true if the Value is an integer between zero and …","Access the stored metadata","","","","","","","","","","","","","","","","","","","This is a HashMap consisting of base_identifiers as keys …","The minute. 0-59.","The month, 1=January.","The event’s name.","The nanosecond part of the time.","Creates a new boolean metric.","Creates a new counter metric.","Creates a new memory distribution metric.","Creates a new datetime metric.","Creates a new denominator metric.","Creates a new event metric.","Creates a new labeled metric from the given metric …","Creates a new memory distribution metric.","The public constructor used by automatically generated …","Creates a new object metric.","Creates a new ping type for the given name, whether to …","Creates a new quantity metric.","Creates a new rate metric.","Creates a new RemoteSettingsConfig","Creates a new string metric.","Creates a new string list metric.","Creates a new text metric.","Creates a new timespan metric.","Creates a new timing distribution metric.","Creates a new string metric.","Creates a new UUID metric","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","A rate’s numerator","The timezone offset from UTC in seconds. Negative for …","Gets the ping section the metric fits into.","This is a HashMap consisting of ping names as keys and …","Looks up a value by a JSON Pointer.","Looks up a value by a JSON Pointer and returns a mutable …","Records an event.","Record an InvalidValue error for this metric.","Record a new event with a provided timestamp.","The second. 0-60.","","","","","","","","","","Sets to the specified boolean value.","Sets the metric to a date/time including the timezone …","Sets to the specified structure.","Sets the value. Must be non-negative.","Sets to the specified value.","Sets to a specific list of strings.","Sets to the specified value.","Sets to the specified stringified URL.","Sets to the specified value.","Explicitly sets the timespan value.","Explicitly sets the timespan value in nanoseconds.","Sets to the specified structure.","Whether this metric should currently be recorded","Starts tracking time for the provided metric.","Starts tracking time for the provided metric.","Stops tracking time for the provided metric. Sets the …","Stops tracking time for the provided metric and associated …","Submits the ping for eventual uploading.","The accumulated sum of all the samples in the distribution.","Takes the value out of the Value, leaving a Null in its …","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Test-only API (exported for FFI purposes).","Test-only API (exported for FFI purposes).","Test-only API (exported for FFI purposes).","Test-only API (exported for FFI purposes).","Test-only API (exported for FFI purposes).","Test-only API (exported for FFI purposes).","Test-only API (exported for FFI purposes).","Exported for test purposes.","Test-only API (exported for FFI purposes).","Test-only API (exported for FFI purposes).","Test-only API (exported for FFI purposes).","Test-only API (exported for FFI purposes).","Test-only API (exported for FFI purposes).","Test-only API (exported for FFI purposes).","Test-only API (exported for FFI purposes).","Test-only API (exported for FFI purposes).","Test-only API (exported for FFI purposes).","Test-only API (exported for FFI purposes).","Test-only API (exported for FFI purposes).","The timestamp of when the event was recorded.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","A map containig the bucket index mapped to the accumulated …","Create a new metric from this with a specific label.","","","","","","","","Create a new metric from this with a new name.","","","","","","","","The year, e.g. 2021.","Holds everything you need to store or send a ping.","Collect a ping’s data, assemble it into its full payload …","","","","","Clears any pending pings in the queue.","","","Collects a snapshot for the given ping from storage and …","","","The payload, including *_info fields.","","The unique document id.","Returns the argument unchanged.","Returns the argument unchanged.","The headers to upload with the payload.","Whether the content contains {client|ping}_info sections.","Calls U::from(self).","Calls U::from(self).","The ping’s name.","Creates a new PingMaker.","","","Other pings that should be scheduled when this ping is …","Stores a ping to disk in the pings directory.","","","","","","","The path on the server to use when uplaoding this ping.","Snapshot metrics from the underlying database.","","","","","Returns the argument unchanged.","Calls U::from(self).","","Snapshots the given store and optionally clear it.","Snapshots the given store and optionally clear it.","Snapshots the experiments.","Gets the current value of a single metric identified by …","Gets the current value of a single metric identified by …","","","","List of allowed extra keys as strings.","A description for the BooleanMetric type.","A description for the CounterMetric type.","A description for the CustomDistributionMetric type.","A description for the DatetimeMetric type.","A description for the EventMetric type.","The possible errors when parsing to an extra key.","A histogram with exponential distributed buckets.","The type of the allowed extra keys for this event.","Extra keys for events.","Different kinds of histograms.","The value doesn’t correspond to a valid extra key","The id doesn’t correspond to a valid extra key","A description for the LabeledMetric type.","A histogram with linear distributed buckets.","A description for the MemoryDistributionMetric type.","Default of no extra keys for events.","A description for the NumeratorMetric subtype of the …","This type represents all possible errors that can occur …","An object that can be serialized into JSON.","A description for the PingType type.","A description for the QuantityMetric type.","A description for the RateMetric type.","A description for the StringMetric type.","A description for the StringListMetric type.","A description for the TextMetric type.","A description for the TimespanMetric type.","A description for the TimingDistributionMetric type.","A description for the UrlMetric type.","A description for the UuidMetric type.","Accumulates the provided sample in the metric.","Accumulates precisely one duration to the metric.","Accumulates the provided samples in the metric.","Accumulates the provided signed samples in the metric.","Accumulates the provided signed samples in the metric.","Accumulates precisely one signed sample in the metric.","Accumulates precisely one signed sample in the metric.","Increases the counter by amount.","Adds a new string to the list.","Increases the denominator by amount.","Increases the numerator by amount.","Increases the numerator by amount.","","","","","","","Aborts a previous start call. No error is recorded if no …","Aborts a previous start call. No error is recorded if no …","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Deserialize the object from its JSON representation.","Generates a new random Uuid and set the metric to it.","Gets a specific metric for a given label.","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Convert the event extras into 2 lists:","","Serialize this object into a JSON string.","","","","Records an event.","Sets to the specified boolean value.","Sets the metric to a date/time which including the …","Sets the value. Must be non-negative.","Sets to the specified value.","Sets to a specific list of strings.","Sets to the specified value.","Sets to the specified stringified URL.","Sets to the specified value.","Explicitly sets the timespan value.","Starts tracking time for the provided metric.","Start tracking time for the provided metric. Multiple …","Stops tracking time for the provided metric. Sets the …","Stops tracking time for the provided metric and associated …","Submits the ping for eventual uploading","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","Exported for test purposes.","","","","","","","","","","","","","","Signal that this uploader is done with work and won’t …","A flag signaling that requester doesn’t need to request …","Instruct the caller to end work.","A representation for request headers.","A HTTP response code.","Instruct the caller to continue with work.","A ping’s metadata, as (optionally) represented on disk.","A representation of the data extracted from a ping file,","Represents a request to upload a ping.","Manages the pending pings queue and directory.","An enum representing the possible upload tasks to be …","A recoverable failure.","An unrecoverable upload failure.","An upload task","The result of an attempted ping upload.","Communication back whether the uploader loop should …","A flag signaling that the pending pings directories are …","The body of the request, as a byte array. If gzip encoded, …","Whether the ping body contains {client|ping}_info","Whether the body has {client|ping}_info sections.","Whether the body has {client|ping}_info sections.","","","","","","","","","","","","","","","Creates a new builder-style structure to help build a …","Logs payload in one go (all other OS).","Clears the pending pings queue, leaves the …","","","","","","","","","","","","","","","","","","","","","","The ping’s doc_id.","The Job ID to identify this request, this is the same as …","This uploader is done.","Enqueue a ping for upload.","Reads a ping file, creates a PingRequest and adds it to …","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Gets the label to be used in recording error counts for …","Gets the next PingUploadTask.","HTTP headers to include in the upload request.","HTTP headers to include when uploading the ping.","A map with all the headers to be sent with the request.","A HTTP response code.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","Verifies if current request is for a deletion-request ping.","Whether the current task is an upload task.","Whether the current task is wait task.","The ping body as JSON-encoded string.","Creates a new PingUploadManager.","","","","","","","","The path for the server to upload the ping to.","The ping’s name. (Also likely in the upload_path.)","The name of the ping.","The ping’s name. Likely also somewhere in path.","Decompresses and pretty-format the ping payload","Processes the response from an attempt to upload a ping.","A recoverable failure.","Spawns a new thread and processes the pending pings …","","Adds rate limiting capability to this upload manager.","","","","","","","","","","","","","","","","","","","","","","","","","An unrecoverable upload failure.","The path to upload the ping to.","The ping request for upload See PingRequest for more …","The time in milliseconds the requester should wait before …","The HTTP status code"],"i":[0,4,0,0,0,47,0,0,47,0,0,0,0,0,9,0,0,0,0,72,0,0,0,21,0,21,6,6,6,6,21,21,0,0,0,0,0,0,0,0,0,21,72,47,0,0,21,21,0,0,9,0,21,4,21,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,21,0,0,47,0,8,0,0,0,4,21,0,15,15,11,15,15,11,1,15,4,6,47,4,10,1,15,21,22,6,11,12,8,47,4,10,1,15,21,22,6,11,12,8,1,7,10,15,1,4,10,6,11,12,47,4,10,15,21,22,6,11,12,8,4,10,6,11,12,47,4,10,15,21,22,6,11,12,8,11,4,10,15,11,4,10,1,15,15,10,10,11,11,4,6,1,11,4,10,1,15,21,22,22,6,11,12,8,8,47,4,10,1,15,21,22,22,22,22,22,22,22,6,11,12,8,8,4,10,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,7,47,4,10,1,15,21,22,6,11,12,8,4,10,1,1,1,6,0,22,11,10,15,11,11,0,10,1,1,47,4,10,15,21,22,6,11,12,8,48,22,40,1,15,1,0,11,11,11,12,1,11,1,12,10,4,10,1,1,1,1,1,1,1,0,7,1,7,1,0,1,1,1,1,1,1,0,4,10,4,10,6,11,12,22,8,0,7,11,47,4,4,10,1,15,21,22,6,6,11,12,8,47,4,10,1,15,21,22,6,11,12,8,47,4,10,1,15,21,22,6,11,12,8,15,0,11,11,22,15,142,143,142,144,145,142,142,142,144,145,44,44,66,0,64,66,0,66,66,0,0,66,0,67,0,0,0,66,72,64,0,67,0,66,64,0,0,0,0,0,0,0,72,64,66,0,0,0,0,67,67,67,67,44,44,0,44,66,0,0,66,0,0,66,0,0,0,0,67,44,66,66,0,0,66,0,0,0,66,0,66,0,66,0,66,0,54,56,56,58,54,56,58,56,59,60,61,62,63,62,44,44,44,64,44,44,43,66,67,44,44,44,44,44,44,71,72,73,59,58,74,75,60,76,93,54,64,63,77,32,78,79,62,43,2,80,61,81,67,69,70,56,82,83,95,66,44,71,72,73,59,58,74,75,60,76,93,54,64,63,77,32,78,79,62,43,2,80,61,81,67,69,70,56,82,83,95,66,43,69,56,71,44,71,72,73,59,58,74,75,60,76,54,64,63,77,32,78,79,62,43,2,80,61,81,67,69,70,56,82,83,66,44,71,72,73,59,58,74,75,60,76,93,54,64,63,77,32,78,79,62,43,2,80,61,81,67,69,70,56,82,83,95,66,44,71,72,73,59,58,74,75,60,76,54,64,63,77,32,78,79,62,43,2,80,61,81,67,69,70,56,82,83,66,44,71,72,73,59,58,74,75,60,76,93,54,64,63,77,32,78,79,62,43,2,80,61,81,67,69,70,56,82,83,95,66,95,74,44,74,2,79,44,71,72,64,43,2,67,66,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,67,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,71,74,79,43,67,70,66,2,71,43,44,44,71,72,73,59,58,74,75,60,76,93,54,64,77,32,78,79,62,43,2,80,61,81,67,69,70,56,82,83,95,66,67,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,71,72,73,59,58,74,74,75,60,76,93,54,64,63,77,32,78,79,79,62,43,2,80,61,81,67,69,70,70,70,56,82,83,95,66,44,44,44,44,71,72,64,43,2,67,66,83,44,93,44,70,74,70,44,44,44,71,72,73,59,58,74,75,60,76,93,54,64,63,77,32,78,79,62,43,2,80,61,81,67,69,70,56,82,83,95,66,44,44,71,72,64,43,2,67,66,44,44,44,44,44,44,44,44,44,106,73,59,58,75,60,76,54,63,77,78,62,80,61,81,69,56,82,83,2,74,74,71,74,73,59,58,75,60,76,93,54,63,77,32,78,62,2,80,61,81,69,56,82,83,44,71,72,73,59,58,74,75,60,76,93,54,64,63,77,32,78,79,62,43,2,80,61,81,67,69,70,56,82,83,95,66,73,59,58,54,80,56,79,74,66,2,44,44,76,77,76,74,44,71,72,64,43,2,67,95,66,73,75,77,78,80,61,81,82,83,69,69,77,106,69,56,69,56,32,95,44,73,59,58,75,60,76,93,54,63,77,78,62,80,61,81,69,56,82,83,73,59,58,75,60,76,54,63,77,78,62,80,61,81,69,56,82,83,75,71,44,71,72,64,43,2,67,95,66,44,71,72,73,59,58,74,75,60,76,54,64,63,77,32,78,79,62,43,2,80,61,81,67,69,70,56,82,83,66,44,44,71,72,72,73,59,58,74,75,60,76,93,54,64,64,63,77,32,78,79,62,43,2,2,80,61,81,67,67,69,70,56,82,83,95,66,44,71,72,73,59,58,74,75,60,76,93,54,64,63,77,32,78,79,62,43,2,80,61,81,67,69,70,56,82,83,95,66,44,71,72,73,59,58,74,75,60,76,93,54,64,63,77,32,78,79,62,43,2,80,61,81,67,69,70,56,82,83,95,66,95,106,73,59,58,54,80,81,56,106,73,59,58,54,80,81,56,74,0,0,108,107,108,107,107,108,107,107,108,107,108,107,108,108,107,108,108,108,107,108,107,108,107,108,107,108,107,108,107,108,107,108,0,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,124,0,0,0,0,0,0,72,126,0,0,146,146,0,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,112,112,112,113,112,113,114,115,116,117,116,146,119,29,146,119,29,118,112,119,146,119,29,119,146,119,29,119,119,29,29,146,119,29,120,121,123,119,146,119,29,124,119,120,146,119,29,126,127,128,129,130,115,131,132,121,118,118,112,118,112,133,127,114,113,128,126,123,111,117,129,116,130,115,131,118,112,132,121,127,114,113,128,126,111,117,129,116,130,115,131,118,112,132,121,119,29,146,119,119,119,29,146,119,29,146,119,29,38,35,39,0,38,39,0,0,0,0,0,38,38,35,0,0,35,135,138,139,135,138,139,135,38,39,35,134,138,139,135,38,39,35,134,135,0,134,138,135,138,139,135,38,39,35,134,138,135,138,139,135,38,39,35,134,138,139,139,138,135,38,134,134,135,35,138,135,38,39,35,134,138,139,135,38,39,35,134,139,38,134,138,139,135,38,138,139,135,38,39,35,134,139,135,35,35,138,134,138,139,135,38,39,35,134,135,138,139,135,135,134,38,134,139,134,139,138,135,138,139,135,38,39,35,134,138,139,135,38,39,35,134,138,139,135,38,39,35,134,38,138,147,148,149],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[1,2],3],0,[4,5],[6,5],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[1,3],[7,[[9,[3,8]]]],0,0,[1,3],[4,4],[10,10],[6,6],[11,11],[12,12],[13,13],[13,13],[13,13],[13,13],[13,13],[13,13],[13,13],[13,13],[13,13],[13,13],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[13,[[14,[-1]]],[]],[13,[[14,[-1]]],[]],[13,[[14,[-1]]],[]],[13,[[14,[-1]]],[]],[13,[[14,[-1]]],[]],[13,[[14,[-1]]],[]],[13,[[14,[-1]]],[]],[13,[[14,[-1]]],[]],[13,[[14,[-1]]],[]],[13,[[14,[-1]]],[]],0,[[],4],[[],10],[[],15],0,[-1,[[16,[4]]],17],[-1,[[16,[10]]],17],[1,3],0,0,0,0,0,0,[[4,4],18],[[6,6],18],0,0,[[4,19],20],[[10,19],20],[[1,19],20],[[15,19],20],[[21,19],20],[[22,19],20],[[22,19],20],[[6,19],20],[[11,19],20],[[12,19],20],[[8,19],20],[[8,19],20],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[21,22],[23,22],[24,22],[25,22],[26,22],[27,22],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[28,8],[-1,-1,[]],[5,[[16,[-1,29]]],[]],[5,[[16,[-1,29]]],[]],[1,5],[1,30],[1,31],[[1,5],[[33,[32]]]],[[],34],[1,35],[36,3],[[],3],[34,3],[[],35],[[],3],[[],3],[[11,15,[37,[7]]],3],[11,18],[[],3],[[36,38],39],[[36,[37,[40]]],3],[36,18],[18,3],[[36,36,[41,[36,36]]],3],[36,3],[36,3],[18,3],[[[42,[36]]],18],[18,3],[18,3],[[],3],[[36,[33,[36]]],3],[[36,[33,[36]]],18],[[18,[33,[36]]],3],[36,[[33,[43]]]],[[],[[33,[36]]]],[36,3],[1,3],[1,3],[7,3],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[16,[44,29]]],[]],[-1,[[16,[44,29]]],[]],[1,18],[1,18],[1,18],[[],[[0,[[46,[],[[45,[6]]]]]]]],[[],3],[22,21],0,0,0,0,0,0,0,[11,[[9,[1]]]],[[11,18],[[9,[1]]]],[[[14,[-1]]],13,[]],[[[14,[-1]]],13,[]],[[[14,[-1]]],13,[]],[[[14,[-1]]],13,[]],[[[14,[-1]]],13,[]],[[[14,[-1]]],13,[]],[[[14,[-1]]],13,[]],[[[14,[-1]]],13,[]],[[[14,[-1]]],13,[]],[[[14,[-1]]],13,[]],[47,48],[[],22],[[40,36],3],[[1,18],18],0,[1,[[9,[3]]]],0,0,0,0,0,[[1,5,38],39],0,[[1,32],3],0,0,[[4,-1],16,49],[[10,-1],16,49],[[1,5],18],[[1,18],3],[[1,36,36,[41,[36,36]]],3],[[1,36],3],[[1,18],18],[[1,[42,[36]]],18],[[1,18],18],[[],3],[7,[[9,[3,8]]]],[[1,5,18],36],[7,18],[1,3],0,0,[1,[[33,[0]]]],[[1,5,[33,[5]]],18],[1,3],[[1,36],[[33,[43]]]],[1,[[33,[36]]]],0,[-1,[[16,[[42,[51]],52]]],[]],[-1,[[16,[[42,[51]],52]]],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,36,[]],[-1,36,[]],0,[7,[[9,[3,8]]]],0,[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[50,[[16,[4,-1]]],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[50,[[16,[6,-1]]],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],[[],15],0,0,0,[[],22],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[54,55],3],[[56,57],3],[[56,[42,[34]]],3],[[58,[42,[55]]],3],[[54,[42,[55]]],3],[[56,[42,[55]]],3],[[58,55],3],[[56,55],3],[[59,50],3],[[60,50],3],[[61,36],3],[[62,50],3],[[63,50],3],[[62,50],3],[44,[[33,[[42,[44]]]]]],[44,[[33,[[42,[44]]]]]],[44,[[33,[18]]]],[[64,34],34],[44,[[33,[65]]]],[44,[[33,[55]]]],[43,44],[66,44],[[67,34],34],[44,[[33,[3]]]],[44,[[33,[[68,[36,44]]]]]],[44,[[33,[[68,[36,44]]]]]],[44,[[33,[5]]]],[44,[[33,[34]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[69,3],[[56,70],3],0,[44,44],[71,71],[72,72],[73,73],[59,59],[58,58],[74,74],[75,75],[60,60],[76,76],[54,54],[64,64],[63,63],[77,77],[32,32],[78,78],[79,79],[62,62],[43,43],[2,2],[80,80],[61,61],[81,81],[67,67],[69,69],[70,70],[56,56],[82,82],[83,83],[66,66],[13,13],[13,13],[13,13],[13,13],[13,13],[13,13],[13,13],[13,13],[13,13],[13,13],[13,13],[13,13],[13,13],[13,13],[13,13],[13,13],[13,13],[13,13],[13,13],[13,13],[13,13],[13,13],[13,13],[13,13],[13,13],[13,13],[13,13],[13,13],[13,13],[13,13],[13,13],[13,13],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[13,[[14,[-1]]],[]],[13,[[14,[-1]]],[]],[13,[[14,[-1]]],[]],[13,[[14,[-1]]],[]],[13,[[14,[-1]]],[]],[13,[[14,[-1]]],[]],[13,[[14,[-1]]],[]],[13,[[14,[-1]]],[]],[13,[[14,[-1]]],[]],[13,[[14,[-1]]],[]],[13,[[14,[-1]]],[]],[13,[[14,[-1]]],[]],[13,[[14,[-1]]],[]],[13,[[14,[-1]]],[]],[13,[[14,[-1]]],[]],[13,[[14,[-1]]],[]],[13,[[14,[-1]]],[]],[13,[[14,[-1]]],[]],[13,[[14,[-1]]],[]],[13,[[14,[-1]]],[]],[13,[[14,[-1]]],[]],[13,[[14,[-1]]],[]],[13,[[14,[-1]]],[]],[13,[[14,[-1]]],[]],[13,[[14,[-1]]],[]],[13,[[14,[-1]]],[]],[13,[[14,[-1]]],[]],[13,[[14,[-1]]],[]],[13,[[14,[-1]]],[]],[13,[[14,[-1]]],[]],[13,[[14,[-1]]],[]],[13,[[14,[-1]]],[]],0,0,[[],44],[[],74],[[],2],0,[-1,[[16,[44]]],17],[-1,[[16,[71]]],17],[-1,[[16,[72]]],17],[-1,[[16,[64]]],17],[-1,[[16,[43]]],17],[-1,[[16,[2]]],17],[-1,[[16,[67]]],17],[-1,[[16,[66]]],17],[[44,-1],[[16,[26]]],84],[[44,-1],[[16,[26]]],84],[[44,-1],[[16,[26]]],84],[[44,-1],[[16,[26]]],84],[[44,-1],[[16,[26]]],84],[[44,-1],[[16,[26]]],84],[[44,-1],[[16,[26]]],84],[[44,-1],[[16,[26]]],84],[[44,-1],[[16,[26]]],84],[[44,-1],[[16,[26]]],84],[[44,5,[85,[5]],-1],[[16,[26]]],84],[[44,5,[85,[5]],-1],[[16,[26]]],84],[[44,-1],[[16,[26]]],84],[[44,-1],[[16,[26]]],84],[[44,-1],[[16,[26]]],84],[[44,-1],[[16,[26]]],84],[[44,-1],[[16,[26]]],84],[[44,-1],[[16,[26]]],84],[[44,-1],[[16,[26]]],84],[[44,-1],[[16,[26]]],84],[[44,-1],[[16,[26]]],84],[[44,-1],[[16,[26]]],84],[[44,-1],[[16,[26]]],84],[[44,-1],[[16,[26]]],84],[[44,-1],[[16,[26]]],84],[[44,-1],[[16,[26]]],84],[[44,-1],[[16,[26]]],84],[[44,-1],[[16,[26]]],84],[[44,-1],[[16,[26]]],84],[[44,-1],[[16,[26]]],84],[[44,-1],[[16,[26]]],84],[[44,-1],[[16,[26]]],84],[[44,5,-1],[[16,[26]]],84],[[44,5,-1],[[16,[26]]],84],[[44,-1],[[16,[26]]],84],[[44,-1],[[16,[26]]],84],[[44,-1],[[16,[26]]],84],[[44,-1],[[16,[26]]],84],[[44,-1],[[16,[26]]],84],[[44,-1],[[16,[26]]],84],[[44,-1],[[16,[26]]],84],[[44,-1],[[16,[26]]],84],[[44,5,[85,[5]],-1],[[16,[26]]],84],[[44,5,[85,[5]],-1],[[16,[26]]],84],[[44,31,-1],[[16,[26]]],84],[[44,31,-1],[[16,[26]]],84],[[44,5,31,-1],[[16,[26]]],84],[[44,5,31,-1],[[16,[26]]],84],[[44,-1],[[16,[26]]],84],[[44,-1],[[16,[26]]],84],[[44,-1],[[16,[26]]],84],[[44,-1],[[16,[26]]],84],[[44,-1],[[16,[26]]],84],[[44,-1],[[16,[26]]],84],[[44,-1],[[16,[26]]],84],[[44,-1],[[16,[26]]],84],[[44,-1],[[16,[26]]],84],[[44,-1],[[16,[26]]],84],[[44,-1],[[16,[26]]],84],[[44,-1],[[16,[26]]],84],[[44,5,-1],[[16,[26]]],84],[[44,5,-1],[[16,[26]]],84],[[67,57],34],[[44,86],18],[[44,87],18],[[44,51],18],[[44,51],18],[[44,34],18],[[44,34],18],[[44,88],18],[[44,89],18],[[44,18],18],[[44,36],18],[[44,90],18],[[44,86],18],[[44,88],18],[[44,31],18],[[44,65],18],[[44,91],18],[[44,34],18],[[44,31],18],[[44,18],18],[[44,31],18],[[44,89],18],[[44,55],18],[[44,87],18],[[44,89],18],[[44,18],18],[[44,44],18],[[44,50],18],[[44,65],18],[[44,87],18],[[44,5],18],[[44,91],18],[[44,90],18],[[44,5],18],[[44,55],18],[[44,88],18],[[44,50],18],[[44,65],18],[[44,55],18],[[44,90],18],[[44,86],18],[[44,91],18],[[44,51],18],[[44,50],18],[[71,71],18],[[74,74],18],[[79,79],18],[[43,43],18],[[67,67],18],[[70,70],18],[[66,66],18],0,0,0,[[44,19],[[16,[3,92]]]],[[44,19],[[16,[3,92]]]],[[71,19],20],[[72,19],20],[[73,19],20],[[59,19],20],[[58,19],20],[[74,19],20],[[75,19],20],[[60,19],20],[[76,19],20],[[[93,[-1]],19],20,94],[[54,19],20],[[64,19],20],[[77,19],20],[[32,19],20],[[78,19],20],[[79,19],20],[[62,19],20],[[43,19],20],[[2,19],20],[[80,19],20],[[61,19],20],[[81,19],20],[[67,19],20],[[69,19],20],[[70,19],20],[[56,19],20],[[82,19],20],[[83,19],20],[[95,19],20],[[66,19],20],[67,5],[96,44],[89,44],[51,44],[55,44],[3,44],[[[97,[5]]],44],[36,44],[90,44],[18,44],[31,44],[50,44],[[[68,[36,44]]],44],[[[85,[-1]]],44,[98,[99,[44]]]],[[[33,[-1]]],44,[[99,[44]]]],[65,44],[87,44],[[[42,[-1]]],44,[[99,[44]]]],[91,44],[88,44],[5,44],[86,44],[-1,-1,[]],[34,44],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[[101,[100]]],74],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[[3,[50,50]]],79],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[34,70],[31,70],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-3,44,[[99,[36]]],[[99,[44]]],[[102,[],[[45,[[3,[-1,-2]]]]]]]],[-2,44,[[99,[44]]],[[102,[],[[45,[-1]]]]]],[5,[[16,[-1,29]]],[]],[5,[[16,[44,26]]]],[5,[[16,[-1,29]]],[]],[5,[[16,[-1,29]]],[]],[5,[[16,[-1,29]]],[]],[5,[[16,[-1,29]]],[]],[5,[[16,[-1,29]]],[]],[5,[[16,[-1,29]]],[]],[5,[[16,[-1,29]]],[]],[83,36],[[44,-1],[[33,[44]]],103],[[[93,[-1]],-2],[[14,[-1]]],[48,98],[[104,[5]]]],[[44,-1],[[33,[44]]],103],[[70,-1],3,105],0,0,[[44,-1],44,103],[[44,-1],44,103],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[44],[-1,[[16,[44,29]]],[]],[-1,[[16,[44,29]]],[]],[-1,[[16,[44,29]]],[]],[-1,[[16,[44,29]]],[]],[-1,[[16,[44,29]]],[]],[-1,[[16,[44,29]]],[]],[-1,[[16,[44,29]]],[]],[-1,[[16,[44,29]]],[]],[44,18],[44,18],[44,18],[44,18],[44,18],[44,18],[44,18],[44,18],[44,18],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[10,73],[10,59],[[10,55,55,55,72],58],[[10,67],75],[[10,[42,[10]]],60],[[10,[42,[36]]],76],[[47,[33,[[42,[[97,[5]]]]]]],[[93,[-1]]],[48,98]],[[10,64],54],[10,63],[10,77],[[-1,18,18,18,18,18,[42,[36]],[42,[36]]],32,[[99,[36]]]],[10,78],[10,62],[[],2],[10,80],[10,61],[10,81],[[10,67],69],[[10,67],56],[10,82],[10,83],[[[14,[-1]]],13,[]],[[[14,[-1]]],13,[]],[[[14,[-1]]],13,[]],[[[14,[-1]]],13,[]],[[[14,[-1]]],13,[]],[[[14,[-1]]],13,[]],[[[14,[-1]]],13,[]],[[[14,[-1]]],13,[]],[[[14,[-1]]],13,[]],[[[14,[-1]]],13,[]],[[[14,[-1]]],13,[]],[[[14,[-1]]],13,[]],[[[14,[-1]]],13,[]],[[[14,[-1]]],13,[]],[[[14,[-1]]],13,[]],[[[14,[-1]]],13,[]],[[[14,[-1]]],13,[]],[[[14,[-1]]],13,[]],[[[14,[-1]]],13,[]],[[[14,[-1]]],13,[]],[[[14,[-1]]],13,[]],[[[14,[-1]]],13,[]],[[[14,[-1]]],13,[]],[[[14,[-1]]],13,[]],[[[14,[-1]]],13,[]],[[[14,[-1]]],13,[]],[[[14,[-1]]],13,[]],[[[14,[-1]]],13,[]],[[[14,[-1]]],13,[]],[[[14,[-1]]],13,[]],[[[14,[-1]]],13,[]],[[[14,[-1]]],13,[]],[47,-1,[]],[47,-1,[]],[47,-1,[]],[47,-1,[]],[47,-1,[]],[47,-1,[]],0,0,[66,5],0,[[44,5],[[33,[44]]]],[[44,5],[[33,[44]]]],[[76,[41,[36,36]]],3],[77,3],[[76,34,[41,[36,36]]],3],0,[[44,-1],16,49],[[71,-1],16,49],[[72,-1],16,49],[[64,-1],16,49],[[43,-1],16,49],[[2,-1],16,49],[[67,-1],16,49],[[95,-1],16,49],[[66,-1],16,49],[[73,18],3],[[75,[33,[74]]],3],[[77,44],3],[[78,55],3],[[80,36],3],[[61,[42,[36]]],3],[[81,36],3],[[82,-1],3,[[99,[36]]]],[[83,36],3],[[69,57],3],[[69,55],3],[[77,36],3],[[106,1],18],[69,3],[56,70],[69,3],[[56,70],3],[[32,[33,[36]]],3],0,[44,44],[[73,6],50],[[59,6],50],[[58,6],50],[[75,6],50],[[60,6],50],[[76,6],50],[[[93,[-1]],6],50,[48,98]],[[54,6],50],[[63,6],50],[[77,6],50],[[78,6],50],[[62,6],50],[[80,6],50],[[61,6],50],[[81,6],50],[[69,6],50],[[56,6],50],[[82,6],50],[[83,6],50],[[73,[33,[36]]],[[33,[18]]]],[[59,[33,[36]]],[[33,[50]]]],[[58,[33,[36]]],[[33,[95]]]],[[75,[33,[36]]],[[33,[74]]]],[[60,[33,[36]]],[[33,[50]]]],[[76,[33,[36]]],[[33,[[42,[71]]]]]],[[54,[33,[36]]],[[33,[95]]]],[[63,[33,[36]]],[[33,[79]]]],[[77,[33,[36]]],[[33,[44]]]],[[78,[33,[36]]],[[33,[55]]]],[[62,[33,[36]]],[[33,[79]]]],[[80,[33,[36]]],[[33,[36]]]],[[61,[33,[36]]],[[33,[[42,[36]]]]]],[[81,[33,[36]]],[[33,[36]]]],[[69,[33,[36]]],[[33,[55]]]],[[56,[33,[36]]],[[33,[95]]]],[[82,[33,[36]]],[[33,[36]]]],[[83,[33,[36]]],[[33,[36]]]],[[75,[33,[36]]],[[33,[36]]]],0,[-1,[[16,[[42,[51]],52]]],[]],[-1,[[16,[[42,[51]],52]]],[]],[-1,[[16,[[42,[51]],52]]],[]],[-1,[[16,[[42,[51]],52]]],[]],[-1,[[16,[[42,[51]],52]]],[]],[-1,[[16,[[42,[51]],52]]],[]],[-1,[[16,[[42,[51]],52]]],[]],[-1,[[16,[[42,[51]],52]]],[]],[-1,[[16,[[42,[51]],52]]],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,36,[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[50,[[16,[72,-1]]],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[50,[[16,[64,-1]]],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[36,[[16,[2,-1]]],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[50,[[16,[67,-1]]],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],0,[[106,36],106],[[73,36],73],[[59,36],59],[[58,36],58],[[54,36],54],[[80,36],80],[[81,36],81],[[56,36],56],[[106,36],106],[[73,36],73],[[59,36],59],[[58,36],58],[[54,36],54],[[80,36],80],[[81,36],81],[[56,36],56],0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[107,30],[[9,[3]]]],[13,13],[13,13],[[107,1,32,[33,[5]],5,5],[[33,[108]]]],[13,[[14,[-1]]],[]],[13,[[14,[-1]]],[]],0,[[],107],0,[-1,-1,[]],[-1,-1,[]],0,0,[-1,-2,[],[]],[-1,-2,[],[]],0,[[],107],[[[14,[-1]]],13,[]],[[[14,[-1]]],13,[]],0,[[107,30,108],[[109,[3]]]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,53,[]],[-1,53,[]],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[13,13],[13,[[14,[-1]]],[]],[-1,-1,[]],[-1,-2,[],[]],[[[14,[-1]]],13,[]],0,0,0,0,0,[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,53,[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[111,34],3],[[112,57],3],[[112,[42,[34]]],3],[[112,[42,[55]]],3],[[113,[42,[55]]],3],[[112,55],3],[[113,55],3],[[114,50],3],[[115,-1],3,[[99,[36]]]],[[116,50],3],[[117,50],3],[[116,50],3],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[118,3],[[112,70],3],[119,119],[13,13],[13,13],[13,13],[[-1,-2],3,[],[]],[13,[[14,[-1]]],[]],[13,[[14,[-1]]],[]],[13,[[14,[-1]]],[]],[[119,119],18],[[119,19],20],[[29,19],20],[[29,19],20],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[5,[[16,[120,29]]]],[121,122],[[123,5],-1,98],[[119,-1],3,105],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[124,[[41,[36,36]]]],[119,[[41,[36,36]]]],[120,[[16,[44,29]]]],[[[14,[-1]]],13,[]],[[[14,[-1]]],13,[]],[[[14,[-1]]],13,[]],[[[126,[],[[125,[-1]]]],-2],3,124,[[99,[[33,[-1]]]]]],[[127,18],3],[[128,[33,[74]]],3],[[129,55],3],[[130,-1],3,[[99,[36]]]],[[115,[42,[36]]],3],[[131,-1],3,[[99,[36]]]],[[132,-1],3,[[99,[36]]]],[[121,122],3],[[118,57],3],[118,3],[112,70],[118,3],[[112,70],3],[[133,[33,[5]]],3],[[127,6],50],[[114,6],50],[[113,6],50],[[128,6],50],[[[126,[],[[125,[-1]]]],6],50,124],[[123,6],50],[[111,6],50],[[117,6],50],[[129,6],50],[[116,6],50],[[130,6],50],[[115,6],50],[[131,6],50],[[118,6],50],[[112,6],50],[[132,6],50],[[121,6],50],[[127,-1],[[33,[18]]],[[99,[[33,[5]]]]]],[[114,-1],[[33,[50]]],[[99,[[33,[5]]]]]],[[113,-1],[[33,[95]]],[[99,[[33,[5]]]]]],[[128,-1],[[33,[74]]],[[99,[[33,[5]]]]]],[[[126,[],[[125,[-1]]]],-2],[[33,[[42,[71]]]]],124,[[99,[[33,[5]]]]]],[[111,-1],[[33,[95]]],[[99,[[33,[5]]]]]],[[117,-1],[[33,[79]]],[[99,[[33,[5]]]]]],[[129,-1],[[33,[55]]],[[99,[[33,[5]]]]]],[[116,-1],[[33,[79]]],[[99,[[33,[5]]]]]],[[130,-1],[[33,[36]]],[[99,[[33,[5]]]]]],[[115,-1],[[33,[[42,[36]]]]],[[99,[[33,[5]]]]]],[[131,-1],[[33,[36]]],[[99,[[33,[5]]]]]],[[118,-1],[[33,[34]]],[[99,[[33,[5]]]]]],[[112,-1],[[33,[95]]],[[99,[[33,[5]]]]]],[[132,-1],[[33,[36]]],[[99,[[33,[5]]]]]],[[121,-1],[[33,[122]]],[[99,[[33,[5]]]]]],[-1,-2,[],[]],[-1,36,[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[5,[[16,[119,-1]]],[]],[50,[[16,[119,-1]]],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[[5,5],3],[134,[[137,[[136,[135]]]]]],[138,138],[135,135],[13,13],[13,13],[13,13],[13,13],[13,13],[13,13],[13,13],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[13,[[14,[-1]]],[]],[13,[[14,[-1]]],[]],[13,[[14,[-1]]],[]],[13,[[14,[-1]]],[]],[13,[[14,[-1]]],[]],[13,[[14,[-1]]],[]],[13,[[14,[-1]]],[]],[[],138],[[],139],[-1,[[16,[139]]],17],0,0,[[],38],[[134,1,138],3],[[134,1,5],3],[[135,135],18],[[35,35],18],[[138,19],20],[[135,19],20],[[38,19],20],[[39,19],20],[[35,19],20],[[134,19],20],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[5,[[16,[-1,29]]],[]],[38,[[33,[5]]]],[[134,1,18],35],0,0,0,[50,38],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[16,[44,29]]],[]],[135,18],[35,18],[35,18],0,[[-1,5],134,[[99,[140]]]],[[[14,[-1]]],13,[]],[[[14,[-1]]],13,[]],[[[14,[-1]]],13,[]],[[[14,[-1]]],13,[]],[[[14,[-1]]],13,[]],[[[14,[-1]]],13,[]],[[[14,[-1]]],13,[]],0,0,0,0,[135,[[33,[36]]]],[[134,1,5,38],39],[[],38],[[134,18],[[141,[3]]]],[[139,-1],16,49],[[134,34,88],3],[-1,[[16,[[42,[51]],52]]],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],[-1,53,[]],[[],38],0,0,0,0],"c":[],"p":[[5,"Glean",0],[5,"RemoteSettingsConfig",374],[1,"tuple"],[6,"Lifetime",0],[1,"str"],[6,"ErrorType",0],[10,"OnGleanEvents",0],[6,"CallbackError",0],[8,"Result",0],[5,"CommonMetricData",0],[5,"InternalConfiguration",0],[5,"PingRateLimit",0],[5,"Handle",1614],[5,"Arc",1615],[5,"ClientInfoMetrics",0],[6,"Result",1616],[10,"Deserializer",1617],[1,"bool"],[5,"Formatter",1618],[8,"Result",1618],[6,"ErrorKind",0],[5,"Error",0],[6,"Infallible",1619],[6,"StoreError",1620],[5,"OsString",1621],[5,"Error",1622],[5,"Error",1623],[5,"UnexpectedUniFFICallbackError",1624],[5,"ObjectError",1330],[5,"Path",1625],[1,"usize"],[5,"PingType",374],[6,"Option",1626],[1,"u64"],[6,"PingUploadTask",1469],[5,"String",1627],[5,"Box",1628],[6,"UploadResult",1469],[6,"UploadTaskAction",1469],[10,"GleanEventListener",0],[5,"HashMap",1629],[5,"Vec",1630],[5,"RecordedExperiment",374],[6,"JsonValue",374],[17,"Item"],[10,"Iterator",1631],[6,"LabeledMetricData",0],[10,"AllowLabeled",0],[10,"Serializer",1632],[1,"i32"],[1,"u8"],[6,"DataError",1620],[5,"TypeId",1633],[5,"MemoryDistributionMetric",374],[1,"i64"],[5,"TimingDistributionMetric",374],[5,"Duration",1634],[5,"CustomDistributionMetric",374],[5,"CounterMetric",374],[5,"DenominatorMetric",374],[5,"StringListMetric",374],[5,"RateMetric",374],[5,"NumeratorMetric",374],[6,"MemoryUnit",374],[1,"f64"],[6,"Metric",374],[6,"TimeUnit",374],[5,"Map",1635],[5,"TimespanMetric",374],[5,"TimerId",374],[5,"RecordedEvent",374],[6,"HistogramType",374],[5,"BooleanMetric",374],[5,"Datetime",374],[5,"DatetimeMetric",374],[5,"EventMetric",374],[5,"ObjectMetric",374],[5,"QuantityMetric",374],[5,"Rate",374],[5,"StringMetric",374],[5,"TextMetric",374],[5,"UrlMetric",374],[5,"UuidMetric",374],[10,"Visitor",1617],[1,"slice"],[1,"i8"],[1,"i16"],[1,"u32"],[1,"u16"],[1,"f32"],[1,"isize"],[5,"Error",1618],[5,"LabeledMetric",374],[10,"Debug",1618],[5,"DistributionData",374],[5,"Number",1636],[6,"Cow",1637],[10,"Clone",1638],[10,"Into",1619],[5,"FixedOffset",1639],[5,"DateTime",1640],[10,"IntoIterator",1641],[10,"Index",1642],[10,"AsRef",1619],[10,"Hasher",1643],[10,"MetricType",374],[5,"PingMaker",1280],[5,"Ping",1280],[8,"Result",1623],[5,"StorageManager",1314],[10,"MemoryDistribution",1330],[10,"TimingDistribution",1330],[10,"CustomDistribution",1330],[10,"Counter",1330],[10,"StringList",1330],[10,"Rate",1330],[10,"Numerator",1330],[10,"Timespan",1330],[6,"NoExtraKeys",1330],[10,"ObjectSerialize",1330],[10,"Uuid",1330],[5,"Uuid",1644],[10,"Labeled",1330],[10,"ExtraKeys",1330],[17,"Extra"],[10,"Event",1330],[10,"Boolean",1330],[10,"Datetime",1330],[10,"Quantity",1330],[10,"String",1330],[10,"Text",1330],[10,"Url",1330],[10,"Ping",1330],[5,"PingUploadManager",1469],[5,"PingRequest",1469],[5,"VecDeque",1645],[5,"RwLockWriteGuard",1646],[5,"PingPayload",1469],[5,"PingMetadata",1469],[5,"PathBuf",1625],[5,"JoinHandle",1647],[15,"CustomDistribution",364],[15,"Common",364],[15,"MemoryDistribution",364],[15,"TimingDistribution",364],[6,"EventRecordingError",1330],[15,"Upload",1611],[15,"Wait",1611],[15,"HttpStatus",1613]],"b":[[172,"impl-Display-for-Error"],[173,"impl-Debug-for-Error"],[177,"impl-Debug-for-CallbackError"],[178,"impl-Display-for-CallbackError"],[186,"impl-From%3CErrorKind%3E-for-Error"],[187,"impl-From%3CInfallible%3E-for-Error"],[188,"impl-From%3CStoreError%3E-for-Error"],[189,"impl-From%3COsString%3E-for-Error"],[190,"impl-From%3CError%3E-for-Error"],[191,"impl-From%3CError%3E-for-Error"],[684,"impl-Deserializer%3C\'de%3E-for-%26Value"],[685,"impl-Deserializer%3C\'de%3E-for-Value"],[686,"impl-Deserializer%3C\'de%3E-for-Value"],[687,"impl-Deserializer%3C\'de%3E-for-%26Value"],[688,"impl-Deserializer%3C\'de%3E-for-%26Value"],[689,"impl-Deserializer%3C\'de%3E-for-Value"],[690,"impl-Deserializer%3C\'de%3E-for-%26Value"],[691,"impl-Deserializer%3C\'de%3E-for-Value"],[692,"impl-Deserializer%3C\'de%3E-for-Value"],[693,"impl-Deserializer%3C\'de%3E-for-%26Value"],[694,"impl-Deserializer%3C\'de%3E-for-%26Value"],[695,"impl-Deserializer%3C\'de%3E-for-Value"],[696,"impl-Deserializer%3C\'de%3E-for-%26Value"],[697,"impl-Deserializer%3C\'de%3E-for-Value"],[698,"impl-Deserializer%3C\'de%3E-for-%26Value"],[699,"impl-Deserializer%3C\'de%3E-for-Value"],[700,"impl-Deserializer%3C\'de%3E-for-Value"],[701,"impl-Deserializer%3C\'de%3E-for-%26Value"],[702,"impl-Deserializer%3C\'de%3E-for-%26Value"],[703,"impl-Deserializer%3C\'de%3E-for-Value"],[704,"impl-Deserializer%3C\'de%3E-for-Value"],[705,"impl-Deserializer%3C\'de%3E-for-%26Value"],[706,"impl-Deserializer%3C\'de%3E-for-%26Value"],[707,"impl-Deserializer%3C\'de%3E-for-Value"],[708,"impl-Deserializer%3C\'de%3E-for-%26Value"],[709,"impl-Deserializer%3C\'de%3E-for-Value"],[710,"impl-Deserializer%3C\'de%3E-for-%26Value"],[711,"impl-Deserializer%3C\'de%3E-for-Value"],[712,"impl-Deserializer%3C\'de%3E-for-%26Value"],[713,"impl-Deserializer%3C\'de%3E-for-Value"],[714,"impl-Deserializer%3C\'de%3E-for-Value"],[715,"impl-Deserializer%3C\'de%3E-for-%26Value"],[716,"impl-Deserializer%3C\'de%3E-for-Value"],[717,"impl-Deserializer%3C\'de%3E-for-%26Value"],[718,"impl-Deserializer%3C\'de%3E-for-Value"],[719,"impl-Deserializer%3C\'de%3E-for-%26Value"],[720,"impl-Deserializer%3C\'de%3E-for-Value"],[721,"impl-Deserializer%3C\'de%3E-for-%26Value"],[722,"impl-Deserializer%3C\'de%3E-for-Value"],[723,"impl-Deserializer%3C\'de%3E-for-%26Value"],[724,"impl-Deserializer%3C\'de%3E-for-Value"],[725,"impl-Deserializer%3C\'de%3E-for-%26Value"],[726,"impl-Deserializer%3C\'de%3E-for-Value"],[727,"impl-Deserializer%3C\'de%3E-for-%26Value"],[728,"impl-Deserializer%3C\'de%3E-for-%26Value"],[729,"impl-Deserializer%3C\'de%3E-for-Value"],[730,"impl-Deserializer%3C\'de%3E-for-Value"],[731,"impl-Deserializer%3C\'de%3E-for-%26Value"],[732,"impl-Deserializer%3C\'de%3E-for-%26Value"],[733,"impl-Deserializer%3C\'de%3E-for-Value"],[734,"impl-Deserializer%3C\'de%3E-for-%26Value"],[735,"impl-Deserializer%3C\'de%3E-for-Value"],[736,"impl-Deserializer%3C\'de%3E-for-%26Value"],[737,"impl-Deserializer%3C\'de%3E-for-Value"],[738,"impl-Deserializer%3C\'de%3E-for-%26Value"],[739,"impl-Deserializer%3C\'de%3E-for-Value"],[740,"impl-Deserializer%3C\'de%3E-for-%26Value"],[741,"impl-Deserializer%3C\'de%3E-for-Value"],[742,"impl-Deserializer%3C\'de%3E-for-Value"],[743,"impl-Deserializer%3C\'de%3E-for-%26Value"],[744,"impl-Deserializer%3C\'de%3E-for-Value"],[745,"impl-Deserializer%3C\'de%3E-for-%26Value"],[747,"impl-PartialEq%3Ci8%3E-for-Value"],[748,"impl-PartialEq%3Ci16%3E-for-%26Value"],[749,"impl-PartialEq%3Cu8%3E-for-Value"],[750,"impl-PartialEq%3Cu8%3E-for-%26mut+Value"],[751,"impl-PartialEq%3Cu64%3E-for-%26Value"],[752,"impl-PartialEq%3Cu64%3E-for-%26mut+Value"],[753,"impl-PartialEq%3Cu32%3E-for-%26Value"],[754,"impl-PartialEq%3Cu16%3E-for-%26mut+Value"],[755,"impl-PartialEq%3Cbool%3E-for-Value"],[756,"impl-PartialEq%3CString%3E-for-Value"],[757,"impl-PartialEq%3Cf32%3E-for-%26Value"],[758,"impl-PartialEq%3Ci8%3E-for-%26mut+Value"],[759,"impl-PartialEq%3Cu32%3E-for-%26mut+Value"],[760,"impl-PartialEq%3Cusize%3E-for-%26mut+Value"],[761,"impl-PartialEq%3Cf64%3E-for-%26Value"],[762,"impl-PartialEq%3Cisize%3E-for-Value"],[763,"impl-PartialEq%3Cu64%3E-for-Value"],[764,"impl-PartialEq%3Cusize%3E-for-Value"],[765,"impl-PartialEq%3Cbool%3E-for-%26mut+Value"],[766,"impl-PartialEq%3Cusize%3E-for-%26Value"],[767,"impl-PartialEq%3Cu16%3E-for-Value"],[768,"impl-PartialEq%3Ci64%3E-for-%26Value"],[769,"impl-PartialEq%3Ci16%3E-for-Value"],[770,"impl-PartialEq%3Cu16%3E-for-%26Value"],[771,"impl-PartialEq%3Cbool%3E-for-%26Value"],[772,"impl-PartialEq-for-Value"],[773,"impl-PartialEq%3Ci32%3E-for-Value"],[774,"impl-PartialEq%3Cf64%3E-for-Value"],[775,"impl-PartialEq%3Ci16%3E-for-%26mut+Value"],[776,"impl-PartialEq%3C%26str%3E-for-Value"],[777,"impl-PartialEq%3Cisize%3E-for-%26mut+Value"],[778,"impl-PartialEq%3Cf32%3E-for-%26mut+Value"],[779,"impl-PartialEq%3Cstr%3E-for-Value"],[780,"impl-PartialEq%3Ci64%3E-for-Value"],[781,"impl-PartialEq%3Cu32%3E-for-Value"],[782,"impl-PartialEq%3Ci32%3E-for-%26mut+Value"],[783,"impl-PartialEq%3Cf64%3E-for-%26mut+Value"],[784,"impl-PartialEq%3Ci64%3E-for-%26mut+Value"],[785,"impl-PartialEq%3Cf32%3E-for-Value"],[786,"impl-PartialEq%3Ci8%3E-for-%26Value"],[787,"impl-PartialEq%3Cisize%3E-for-%26Value"],[788,"impl-PartialEq%3Cu8%3E-for-%26Value"],[789,"impl-PartialEq%3Ci32%3E-for-%26Value"],[800,"impl-Debug-for-Value"],[801,"impl-Display-for-Value"],[833,"impl-From%3CNumber%3E-for-Value"],[834,"impl-From%3Cu16%3E-for-Value"],[835,"impl-From%3Cu8%3E-for-Value"],[836,"impl-From%3Ci64%3E-for-Value"],[837,"impl-From%3C()%3E-for-Value"],[838,"impl-From%3CCow%3C\'a,+str%3E%3E-for-Value"],[839,"impl-From%3CString%3E-for-Value"],[840,"impl-From%3Cf32%3E-for-Value"],[841,"impl-From%3Cbool%3E-for-Value"],[842,"impl-From%3Cusize%3E-for-Value"],[843,"impl-From%3Ci32%3E-for-Value"],[844,"impl-From%3CMap%3CString,+Value%3E%3E-for-Value"],[845,"impl-From%3C%26%5BT%5D%3E-for-Value"],[846,"impl-From%3COption%3CT%3E%3E-for-Value"],[847,"impl-From%3Cf64%3E-for-Value"],[848,"impl-From%3Ci16%3E-for-Value"],[849,"impl-From%3CVec%3CT%3E%3E-for-Value"],[850,"impl-From%3Cisize%3E-for-Value"],[851,"impl-From%3Cu32%3E-for-Value"],[852,"impl-From%3C%26str%3E-for-Value"],[853,"impl-From%3Ci8%3E-for-Value"],[855,"impl-From%3Cu64%3E-for-Value"],[883,"impl-From%3Cu64%3E-for-TimerId"],[884,"impl-From%3Cusize%3E-for-TimerId"],[891,"impl-FromIterator%3C(K,+V)%3E-for-Value"],[892,"impl-FromIterator%3CT%3E-for-Value"],[1390,"impl-Debug-for-ObjectError"],[1391,"impl-Display-for-ObjectError"],[1460,"impl-TryFrom%3C%26str%3E-for-NoExtraKeys"],[1461,"impl-TryFrom%3Ci32%3E-for-NoExtraKeys"]]}],\ +["uniffi_bindgen",{"doc":"","t":"","n":[],"q":[],"d":[],"i":[],"f":[],"c":[],"p":[],"b":[]}]\ +]')); +if (typeof exports !== 'undefined') exports.searchIndex = searchIndex; +else if (window.initSearch) window.initSearch(searchIndex); diff --git a/docs/settings.html b/docs/settings.html index 4af70a169e..194d5c455b 100644 --- a/docs/settings.html +++ b/docs/settings.html @@ -1 +1,2 @@ -Rustdoc settings

    Rustdoc settings

    Back
    \ No newline at end of file +Settings +

    Rustdoc settings

    Back
    \ No newline at end of file diff --git a/docs/source-files.js b/docs/source-files.js deleted file mode 100644 index e136cd83e8..0000000000 --- a/docs/source-files.js +++ /dev/null @@ -1,5 +0,0 @@ -var sourcesIndex = JSON.parse('{\ -"glean_core":["",[["core",[],["mod.rs"]],["database",[],["mod.rs"]],["dispatcher",[],["global.rs","mod.rs"]],["event_database",[],["mod.rs"]],["histogram",[],["exponential.rs","functional.rs","linear.rs","mod.rs"]],["metrics",[],["boolean.rs","counter.rs","custom_distribution.rs","datetime.rs","denominator.rs","event.rs","experiment.rs","labeled.rs","memory_distribution.rs","memory_unit.rs","mod.rs","numerator.rs","object.rs","ping.rs","quantity.rs","rate.rs","recorded_experiment.rs","remote_settings_config.rs","string.rs","string_list.rs","text.rs","time_unit.rs","timespan.rs","timing_distribution.rs","url.rs","uuid.rs"]],["ping",[],["mod.rs"]],["storage",[],["mod.rs"]],["traits",[],["boolean.rs","counter.rs","custom_distribution.rs","datetime.rs","event.rs","labeled.rs","memory_distribution.rs","mod.rs","numerator.rs","object.rs","ping.rs","quantity.rs","rate.rs","string.rs","string_list.rs","text.rs","timespan.rs","timing_distribution.rs","url.rs","uuid.rs"]],["upload",[],["directory.rs","mod.rs","policy.rs","request.rs","result.rs"]]],["common_metric_data.rs","core_metrics.rs","coverage.rs","debug.rs","error.rs","error_recording.rs","fd_logger.rs","glean_metrics.rs","internal_metrics.rs","internal_pings.rs","lib.rs","scheduler.rs","system.rs","util.rs"]],\ -"uniffi_bindgen":["",[],["lib.rs"]]\ -}'); -createSourceSidebar(); diff --git a/docs/src-files.js b/docs/src-files.js new file mode 100644 index 0000000000..541b2d3038 --- /dev/null +++ b/docs/src-files.js @@ -0,0 +1,5 @@ +var srcIndex = new Map(JSON.parse('[\ +["glean_core",["",[["core",[],["mod.rs"]],["database",[],["mod.rs"]],["dispatcher",[],["global.rs","mod.rs"]],["event_database",[],["mod.rs"]],["histogram",[],["exponential.rs","functional.rs","linear.rs","mod.rs"]],["metrics",[],["boolean.rs","counter.rs","custom_distribution.rs","datetime.rs","denominator.rs","event.rs","experiment.rs","labeled.rs","memory_distribution.rs","memory_unit.rs","mod.rs","numerator.rs","object.rs","ping.rs","quantity.rs","rate.rs","recorded_experiment.rs","remote_settings_config.rs","string.rs","string_list.rs","text.rs","time_unit.rs","timespan.rs","timing_distribution.rs","url.rs","uuid.rs"]],["ping",[],["mod.rs"]],["storage",[],["mod.rs"]],["traits",[],["boolean.rs","counter.rs","custom_distribution.rs","datetime.rs","event.rs","labeled.rs","memory_distribution.rs","mod.rs","numerator.rs","object.rs","ping.rs","quantity.rs","rate.rs","string.rs","string_list.rs","text.rs","timespan.rs","timing_distribution.rs","url.rs","uuid.rs"]],["upload",[],["directory.rs","mod.rs","policy.rs","request.rs","result.rs"]]],["common_metric_data.rs","core_metrics.rs","coverage.rs","debug.rs","error.rs","error_recording.rs","fd_logger.rs","glean_metrics.rs","internal_metrics.rs","internal_pings.rs","lib.rs","scheduler.rs","system.rs","util.rs"]]],\ +["uniffi_bindgen",["",[],["lib.rs"]]]\ +]')); +createSrcSidebar(); diff --git a/docs/src/glean_core/common_metric_data.rs.html b/docs/src/glean_core/common_metric_data.rs.html index c08b11b1d8..33c7e0cf5c 100644 --- a/docs/src/glean_core/common_metric_data.rs.html +++ b/docs/src/glean_core/common_metric_data.rs.html @@ -1,4 +1,5 @@ -common_metric_data.rs - source
    1
    +common_metric_data.rs - source
    +    
    1
     2
     3
     4
    @@ -147,7 +148,7 @@
     147
     148
     149
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -158,12 +159,12 @@
     use crate::Glean;
     use serde::{Deserialize, Serialize};
     
    -/// The supported metrics' lifetimes.
    +/// The supported metrics' lifetimes.
     ///
    -/// A metric's lifetime determines when its stored data gets reset.
    +/// A metric's lifetime determines when its stored data gets reset.
     #[derive(Copy, Clone, Debug, PartialEq, Eq, Deserialize, Serialize, Default)]
     #[repr(i32)] // Use i32 to be compatible with our JNA definition
    -#[serde(rename_all = "lowercase")]
    +#[serde(rename_all = "lowercase")]
     pub enum Lifetime {
         /// The metric is reset with each sent ping
         #[default]
    @@ -176,11 +177,11 @@
     
     impl Lifetime {
         /// String representation of the lifetime.
    -    pub fn as_str(self) -> &'static str {
    +    pub fn as_str(self) -> &'static str {
             match self {
    -            Lifetime::Ping => "ping",
    -            Lifetime::Application => "app",
    -            Lifetime::User => "user",
    +            Lifetime::Ping => "ping",
    +            Lifetime::Application => "app",
    +            Lifetime::User => "user",
             }
         }
     }
    @@ -201,13 +202,13 @@
     /// The common set of data shared across all different metric types.
     #[derive(Default, Debug, Clone, Deserialize, Serialize)]
     pub struct CommonMetricData {
    -    /// The metric's name.
    +    /// The metric's name.
         pub name: String,
    -    /// The metric's category.
    +    /// The metric's category.
         pub category: String,
         /// List of ping names to include this metric in.
         pub send_in_pings: Vec<String>,
    -    /// The metric's lifetime.
    +    /// The metric's lifetime.
         pub lifetime: Lifetime,
         /// Whether or not the metric is disabled.
         ///
    @@ -265,22 +266,22 @@
             }
         }
     
    -    /// The metric's base identifier, including the category and name, but not the label.
    +    /// The metric's base identifier, including the category and name, but not the label.
         ///
    -    /// If `category` is empty, it's ommitted.
    -    /// Otherwise, it's the combination of the metric's `category` and `name`.
    +    /// If `category` is empty, it's ommitted.
    +    /// Otherwise, it's the combination of the metric's `category` and `name`.
         pub(crate) fn base_identifier(&self) -> String {
             if self.inner.category.is_empty() {
                 self.inner.name.clone()
             } else {
    -            format!("{}.{}", self.inner.category, self.inner.name)
    +            format!("{}.{}", self.inner.category, self.inner.name)
             }
         }
     
    -    /// The metric's unique identifier, including the category, name and label.
    +    /// The metric's unique identifier, including the category, name and label.
         ///
    -    /// If `category` is empty, it's ommitted.
    -    /// Otherwise, it's the combination of the metric's `category`, `name` and `label`.
    +    /// If `category` is empty, it's ommitted.
    +    /// Otherwise, it's the combination of the metric's `category`, `name` and `label`.
         pub(crate) fn identifier(&self, glean: &Glean) -> String {
             let base_identifier = self.base_identifier();
     
    @@ -296,5 +297,4 @@
             &self.inner.send_in_pings
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/core/mod.rs.html b/docs/src/glean_core/core/mod.rs.html index 769db2e9dd..e76faeb642 100644 --- a/docs/src/glean_core/core/mod.rs.html +++ b/docs/src/glean_core/core/mod.rs.html @@ -1,4 +1,5 @@ -mod.rs - source
    1
    +mod.rs - source
    +    
    1
     2
     3
     4
    @@ -1026,7 +1027,7 @@
     1026
     1027
     1028
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -1058,7 +1059,7 @@
     
     static GLEAN: OnceCell<Mutex<Glean>> = OnceCell::new();
     
    -pub fn global_glean() -> Option<&'static Mutex<Glean>> {
    +pub fn global_glean() -> Option<&'static Mutex<Glean>> {
         GLEAN.get()
     }
     
    @@ -1076,7 +1077,7 @@
         if GLEAN.get().is_none() {
             if GLEAN.set(Mutex::new(glean)).is_err() {
                 log::warn!(
    -                "Global Glean object is initialized already. This probably happened concurrently."
    +                "Global Glean object is initialized already. This probably happened concurrently."
                 )
             }
         } else {
    @@ -1096,7 +1097,7 @@
     where
         F: FnOnce(&Glean) -> R,
     {
    -    let glean = global_glean().expect("Global Glean object not initialized");
    +    let glean = global_glean().expect("Global Glean object not initialized");
         let lock = glean.lock().unwrap();
         f(&lock)
     }
    @@ -1108,7 +1109,7 @@
     where
         F: FnOnce(&mut Glean) -> R,
     {
    -    let glean = global_glean().expect("Global Glean object not initialized");
    +    let glean = global_glean().expect("Global Glean object not initialized");
         let mut lock = glean.lock().unwrap();
         f(&mut lock)
     }
    @@ -1136,13 +1137,13 @@
     /// ```rust,no_run
     /// # use glean_core::{Glean, InternalConfiguration, CommonMetricData, metrics::*};
     /// let cfg = InternalConfiguration {
    -///     data_path: "/tmp/glean".into(),
    -///     application_id: "glean.sample.app".into(),
    -///     language_binding_name: "Rust".into(),
    +///     data_path: "/tmp/glean".into(),
    +///     application_id: "glean.sample.app".into(),
    +///     language_binding_name: "Rust".into(),
     ///     upload_enabled: true,
     ///     max_events: None,
     ///     delay_ping_lifetime_io: false,
    -///     app_build: "".into(),
    +///     app_build: "".into(),
     ///     use_core_mps: false,
     ///     trim_data_to_registered_pings: false,
     ///     log_level: None,
    @@ -1155,13 +1156,13 @@
     ///     ping_lifetime_max_time: 2000,
     /// };
     /// let mut glean = Glean::new(cfg).unwrap();
    -/// let ping = PingType::new("sample", true, false, true, true, true, vec![], vec![]);
    +/// let ping = PingType::new("sample", true, false, true, true, true, vec![], vec![]);
     /// glean.register_ping_type(&ping);
     ///
     /// let call_counter: CounterMetric = CounterMetric::new(CommonMetricData {
    -///     name: "calls".into(),
    -///     category: "local".into(),
    -///     send_in_pings: vec!["sample".into()],
    +///     name: "calls".into(),
    +///     category: "local".into(),
    +///     send_in_pings: vec!["sample".into()],
     ///     ..Default::default()
     /// });
     ///
    @@ -1205,7 +1206,7 @@
         /// Importantly, this will not send any pings at startup, since that
         /// sort of management should only happen in the main process.
         pub fn new_for_subprocess(cfg: &InternalConfiguration, scan_directories: bool) -> Result<Self> {
    -        log::info!("Creating new Glean v{}", GLEAN_VERSION);
    +        log::info!("Creating new Glean v{}", GLEAN_VERSION);
     
             let application_id = sanitize_application_id(&cfg.application_id);
             if application_id.is_empty() {
    @@ -1252,7 +1253,7 @@
                 is_first_run: false,
                 debug: DebugOptions::new(),
                 app_build: cfg.app_build.to_string(),
    -            // Subprocess doesn't use "metrics" pings so has no need for a scheduler.
    +            // Subprocess doesn't use "metrics" pings so has no need for a scheduler.
                 schedule_metrics_pings: false,
                 remote_settings_epoch: AtomicU8::new(0),
                 remote_settings_config: Arc::new(Mutex::new(RemoteSettingsConfig::new())),
    @@ -1279,7 +1280,7 @@
             let mut glean = Self::new_for_subprocess(&cfg, false)?;
     
             // Creating the data store creates the necessary path as well.
    -        // If that fails we bail out and don't initialize further.
    +        // If that fails we bail out and don't initialize further.
             let data_path = Path::new(&cfg.data_path);
             let ping_lifetime_threshold = cfg.ping_lifetime_threshold as usize;
             let ping_lifetime_max_time = Duration::from_millis(cfg.ping_lifetime_max_time);
    @@ -1305,7 +1306,7 @@
                 // instantiate the core metrics.
                 glean.on_upload_enabled();
             } else {
    -            // If upload is disabled, and we've never run before, only set the
    +            // If upload is disabled, and we've never run before, only set the
                 // client_id to KNOWN_CLIENT_ID, but do not send a deletion request
                 // ping.
                 // If we have run before, and if the client_id is not equal to
    @@ -1315,7 +1316,7 @@
                 match glean
                     .core_metrics
                     .client_id
    -                .get_value(&glean, Some("glean_client_info"))
    +                .get_value(&glean, Some("glean_client_info"))
                 {
                     None => glean.clear_metrics(),
                     Some(uuid) => {
    @@ -1330,14 +1331,14 @@
             }
     
             // We set this only for non-subprocess situations.
    -        // If internal pings are disabled, we don't set up the MPS either,
    -        // it wouldn't send any data anyway.
    +        // If internal pings are disabled, we don't set up the MPS either,
    +        // it wouldn't send any data anyway.
             glean.schedule_metrics_pings = cfg.enable_internal_pings && cfg.use_core_mps;
     
             // We only scan the pendings pings directories **after** dealing with the upload state.
             // If upload is disabled, we delete all pending pings files
             // and we need to do that **before** scanning the pending pings folder
    -        // to ensure we don't enqueue pings before their files are deleted.
    +        // to ensure we don't enqueue pings before their files are deleted.
             let _scanning_thread = glean.upload_manager.scan_pending_pings_directories(true);
     
             Ok(glean)
    @@ -1354,11 +1355,11 @@
             let cfg = InternalConfiguration {
                 data_path: data_path.into(),
                 application_id: application_id.into(),
    -            language_binding_name: "Rust".into(),
    +            language_binding_name: "Rust".into(),
                 upload_enabled,
                 max_events: None,
                 delay_ping_lifetime_io: false,
    -            app_build: "Unknown".into(),
    +            app_build: "Unknown".into(),
                 use_core_mps: false,
                 trim_data_to_registered_pings: false,
                 log_level: None,
    @@ -1386,12 +1387,12 @@
             self.data_store = None;
         }
     
    -    /// Initializes the core metrics managed by Glean's Rust core.
    +    /// Initializes the core metrics managed by Glean's Rust core.
         fn initialize_core_metrics(&mut self) {
             let need_new_client_id = match self
                 .core_metrics
                 .client_id
    -            .get_value(self, Some("glean_client_info"))
    +            .get_value(self, Some("glean_client_info"))
             {
                 None => true,
                 Some(uuid) => uuid == *KNOWN_CLIENT_ID,
    @@ -1403,29 +1404,29 @@
             if self
                 .core_metrics
                 .first_run_date
    -            .get_value(self, "glean_client_info")
    +            .get_value(self, "glean_client_info")
                 .is_none()
             {
                 self.core_metrics.first_run_date.set_sync(self, None);
                 // The `first_run_date` field is generated on the very first run
                 // and persisted across upload toggling. We can assume that, the only
    -            // time it is set, that's indeed our "first run".
    +            // time it is set, that's indeed our "first run".
                 self.is_first_run = true;
             }
     
             self.set_application_lifetime_core_metrics();
         }
     
    -    /// Initializes the database metrics managed by Glean's Rust core.
    +    /// Initializes the database metrics managed by Glean's Rust core.
         fn initialize_database_metrics(&mut self) {
    -        log::trace!("Initializing database metrics");
    +        log::trace!("Initializing database metrics");
     
             if let Some(size) = self
                 .data_store
                 .as_ref()
                 .and_then(|database| database.file_size())
             {
    -            log::trace!("Database file size: {}", size.get());
    +            log::trace!("Database file size: {}", size.get());
                 self.database_metrics
                     .size
                     .accumulate_sync(self, size.get() as i64)
    @@ -1455,7 +1456,7 @@
         ///
         /// # Returns
         ///
    -    /// Whether the "events" ping was submitted.
    +    /// Whether the "events" ping was submitted.
         pub fn on_ready_to_submit_pings(&self, trim_data_to_registered_pings: bool) -> bool {
             self.event_data_store
                 .flush_pending_events_on_startup(self, trim_data_to_registered_pings)
    @@ -1463,7 +1464,7 @@
     
         /// Sets whether upload is enabled or not.
         ///
    -    /// When uploading is disabled, metrics aren't recorded at all and no
    +    /// When uploading is disabled, metrics aren't recorded at all and no
         /// data is uploaded.
         ///
         /// When disabling, all pending metrics, events and queued pings are cleared.
    @@ -1481,7 +1482,7 @@
         /// Whether the flag was different from the current value,
         /// and actual work was done to clear or reinstate metrics.
         pub fn set_upload_enabled(&mut self, flag: bool) -> bool {
    -        log::info!("Upload enabled: {:?}", flag);
    +        log::info!("Upload enabled: {:?}", flag);
     
             if self.upload_enabled != flag {
                 if flag {
    @@ -1523,18 +1524,18 @@
         /// Afterward, the upload_enabled flag is set to false.
         fn on_upload_disabled(&mut self, during_init: bool) {
             // The upload_enabled flag should be true here, or the deletion ping
    -        // won't be submitted.
    +        // won't be submitted.
             let reason = if during_init {
    -            Some("at_init")
    +            Some("at_init")
             } else {
    -            Some("set_upload_enabled")
    +            Some("set_upload_enabled")
             };
             if !self
                 .internal_pings
                 .deletion_request
                 .submit_sync(self, reason)
             {
    -            log::error!("Failed to submit deletion-request ping on optout.");
    +            log::error!("Failed to submit deletion-request ping on optout.");
             }
             self.clear_metrics();
             self.upload_enabled = false;
    @@ -1543,7 +1544,7 @@
         /// Clear any pending metrics when telemetry is disabled.
         fn clear_metrics(&mut self) {
             // Clear the pending pings queue and acquire the lock
    -        // so that it can't be accessed until this function is done.
    +        // so that it can't be accessed until this function is done.
             let _lock = self.upload_manager.clear_ping_queue();
     
             // There is only one metric that we want to survive after clearing all
    @@ -1552,12 +1553,12 @@
             let existing_first_run_date = self
                 .core_metrics
                 .first_run_date
    -            .get_value(self, "glean_client_info");
    +            .get_value(self, "glean_client_info");
     
             // Clear any pending pings.
             let ping_maker = PingMaker::new();
             if let Err(err) = ping_maker.clear_pending_pings(self.get_data_path()) {
    -            log::warn!("Error clearing pending pings: {}", err);
    +            log::warn!("Error clearing pending pings: {}", err);
             }
     
             // Delete all stored metrics.
    @@ -1567,10 +1568,10 @@
                 data.clear_all()
             }
             if let Err(err) = self.event_data_store.clear_all() {
    -            log::warn!("Error clearing pending events: {}", err);
    +            log::warn!("Error clearing pending events: {}", err);
             }
     
    -        // This does not clear the experiments store (which isn't managed by the
    +        // This does not clear the experiments store (which isn't managed by the
             // StorageEngineManager), since doing so would mean we would have to have the
             // application tell us again which experiments are active if telemetry is
             // re-enabled.
    @@ -1580,11 +1581,11 @@
                 // is not a no-op. This is safe, since nothing on the Rust side can
                 // run concurrently to this since we hold a mutable reference to the
                 // Glean object. Additionally, the pending pings have been cleared
    -            // from disk, so the PingUploader can't wake up and start sending
    +            // from disk, so the PingUploader can't wake up and start sending
                 // pings.
                 self.upload_enabled = true;
     
    -            // Store a "dummy" KNOWN_CLIENT_ID in the client_id metric. This will
    +            // Store a "dummy" KNOWN_CLIENT_ID in the client_id metric. This will
                 // make it easier to detect if pings were unintentionally sent after
                 // uploading is disabled.
                 self.core_metrics
    @@ -1613,9 +1614,9 @@
         }
     
         /// Gets a handle to the database.
    -    #[track_caller] // If this fails we're interested in the caller.
    +    #[track_caller] // If this fails we're interested in the caller.
         pub fn storage(&self) -> &Database {
    -        self.data_store.as_ref().expect("No database found")
    +        self.data_store.as_ref().expect("No database found")
         }
     
         /// Gets an optional handle to the database.
    @@ -1689,12 +1690,12 @@
         pub fn snapshot(&mut self, store_name: &str, clear_store: bool) -> String {
             StorageManager
                 .snapshot(self.storage(), store_name, clear_store)
    -            .unwrap_or_else(|| String::from(""))
    +            .unwrap_or_else(|| String::from(""))
         }
     
         pub(crate) fn make_path(&self, ping_name: &str, doc_id: &str) -> String {
             format!(
    -            "/submit/{}/{}/{}/{}",
    +            "/submit/{}/{}/{}/{}",
                 self.get_application_id(),
                 ping_name,
                 GLEAN_SCHEMA_VERSION,
    @@ -1725,7 +1726,7 @@
         pub fn submit_ping_by_name(&self, ping_name: &str, reason: Option<&str>) -> bool {
             match self.get_ping_by_name(ping_name) {
                 None => {
    -                log::error!("Attempted to submit unknown ping '{}'", ping_name);
    +                log::error!("Attempted to submit unknown ping '{}'", ping_name);
                     false
                 }
                 Some(ping) => ping.submit_sync(self, reason),
    @@ -1745,7 +1746,7 @@
         /// Register a new [`PingType`](metrics/struct.PingType.html).
         pub fn register_ping_type(&mut self, ping: &PingType) {
             if self.ping_registry.contains_key(ping.name()) {
    -            log::debug!("Duplicate ping named '{}'", ping.name())
    +            log::debug!("Duplicate ping named '{}'", ping.name())
             }
     
             self.ping_registry
    @@ -1816,7 +1817,7 @@
         /// * `cfg` - The stringified JSON representation of a `RemoteSettingsConfig` object
         pub fn apply_server_knobs_config(&self, cfg: RemoteSettingsConfig) {
             // Set the current RemoteSettingsConfig, keeping the lock until the epoch is
    -        // updated to prevent against reading a "new" config but an "old" epoch
    +        // updated to prevent against reading a "new" config but an "old" epoch
             let mut remote_settings_config = self.remote_settings_config.lock().unwrap();
     
             // Merge the exising metrics configuration with the supplied one
    @@ -1857,7 +1858,7 @@
         ///
         /// Clears all the metrics that have [`Lifetime::Application`].
         pub fn clear_application_lifetime_metrics(&self) {
    -        log::trace!("Clearing Lifetime::Application metrics");
    +        log::trace!("Clearing Lifetime::Application metrics");
             if let Some(data) = self.data_store.as_ref() {
                 data.clear_lifetime(Lifetime::Application);
             }
    @@ -1876,16 +1877,16 @@
         /// This will return `false` in case `value` is not a valid tag.
         ///
         /// When the debug view tag is set, pings are sent with a `X-Debug-ID` header with the value of the tag
    -    /// and are sent to the ["Ping Debug Viewer"](https://mozilla.github.io/glean/book/dev/core/internal/debug-pings.html).
    +    /// and are sent to the ["Ping Debug Viewer"](https://mozilla.github.io/glean/book/dev/core/internal/debug-pings.html).
         ///
         /// # Arguments
         ///
    -    /// * `value` - A valid HTTP header value. Must match the regex: "[a-zA-Z0-9-]{1,20}".
    +    /// * `value` - A valid HTTP header value. Must match the regex: "[a-zA-Z0-9-]{1,20}".
         pub fn set_debug_view_tag(&mut self, value: &str) -> bool {
             self.debug.debug_view_tag.set(value.into())
         }
     
    -    /// Return the value for the debug view tag or [`None`] if it hasn't been set.
    +    /// Return the value for the debug view tag or [`None`] if it hasn't been set.
         ///
         /// The `debug_view_tag` may be set from an environment variable
         /// (`GLEAN_DEBUG_VIEW_TAG`) or through the [`set_debug_view_tag`] function.
    @@ -1903,12 +1904,12 @@
         ///
         /// # Arguments
         ///
    -    /// * `value` - A vector of at most 5 valid HTTP header values. Individual tags must match the regex: "[a-zA-Z0-9-]{1,20}".
    +    /// * `value` - A vector of at most 5 valid HTTP header values. Individual tags must match the regex: "[a-zA-Z0-9-]{1,20}".
         pub fn set_source_tags(&mut self, value: Vec<String>) -> bool {
             self.debug.source_tags.set(value)
         }
     
    -    /// Return the value for the source tags or [`None`] if it hasn't been set.
    +    /// Return the value for the source tags or [`None`] if it hasn't been set.
         ///
         /// The `source_tags` may be set from an environment variable (`GLEAN_SOURCE_TAGS`)
         /// or through the [`set_source_tags`] function.
    @@ -1930,7 +1931,7 @@
             self.debug.log_pings.set(value)
         }
     
    -    /// Return the value for the log pings debug option or [`None`] if it hasn't been set.
    +    /// Return the value for the log pings debug option or [`None`] if it hasn't been set.
         ///
         /// The `log_pings` option may be set from an environment variable (`GLEAN_LOG_PINGS`)
         /// or through the [`set_log_pings`] function.
    @@ -1940,9 +1941,9 @@
     
         fn get_dirty_bit_metric(&self) -> metrics::BooleanMetric {
             metrics::BooleanMetric::new(CommonMetricData {
    -            name: "dirtybit".into(),
    -            // We don't need a category, the name is already unique
    -            category: "".into(),
    +            name: "dirtybit".into(),
    +            // We don't need a category, the name is already unique
    +            category: "".into(),
                 send_in_pings: vec![INTERNAL_STORAGE.into()],
                 lifetime: Lifetime::User,
                 ..Default::default()
    @@ -1951,9 +1952,9 @@
     
         /// **This is not meant to be used directly.**
         ///
    -    /// Sets the value of a "dirty flag" in the permanent storage.
    +    /// Sets the value of a "dirty flag" in the permanent storage.
         ///
    -    /// The "dirty flag" is meant to have the following behaviour, implemented
    +    /// The "dirty flag" is meant to have the following behaviour, implemented
         /// by the consumers of the FFI layer:
         ///
         /// - on mobile: set to `false` when going to background or shutting down,
    @@ -1961,7 +1962,7 @@
         /// - on non-mobile platforms: set to `true` at startup and `false` at
         ///   shutdown.
         ///
    -    /// At startup, before setting its new value, if the "dirty flag" value is
    +    /// At startup, before setting its new value, if the "dirty flag" value is
         /// `true`, then Glean knows it did not exit cleanly and can implement
         /// coping mechanisms (e.g. sending a `baseline` ping).
         pub fn set_dirty_flag(&self, new_value: bool) {
    @@ -1970,7 +1971,7 @@
     
         /// **This is not meant to be used directly.**
         ///
    -    /// Checks the stored value of the "dirty flag".
    +    /// Checks the stored value of the "dirty flag".
         pub fn is_dirty_flag_set(&self) -> bool {
             let dirty_bit_metric = self.get_dirty_bit_metric();
             match StorageManager.snapshot_metric(
    @@ -1992,9 +1993,9 @@
             if !self
                 .internal_pings
                 .baseline
    -            .submit_sync(self, Some("active"))
    +            .submit_sync(self, Some("active"))
             {
    -            log::info!("baseline ping not submitted on active");
    +            log::info!("baseline ping not submitted on active");
             }
     
             self.set_dirty_flag(true);
    @@ -2008,17 +2009,17 @@
             if !self
                 .internal_pings
                 .baseline
    -            .submit_sync(self, Some("inactive"))
    +            .submit_sync(self, Some("inactive"))
             {
    -            log::info!("baseline ping not submitted on inactive");
    +            log::info!("baseline ping not submitted on inactive");
             }
     
             if !self
                 .internal_pings
                 .events
    -            .submit_sync(self, Some("inactive"))
    +            .submit_sync(self, Some("inactive"))
             {
    -            log::info!("events ping not submitted on inactive");
    +            log::info!("events ping not submitted on inactive");
             }
     
             self.set_dirty_flag(false);
    @@ -2034,11 +2035,11 @@
             if let Some(data) = self.data_store.as_ref() {
                 data.clear_all()
             }
    -        // We don't care about this failing, maybe the data does just not exist.
    +        // We don't care about this failing, maybe the data does just not exist.
             let _ = self.event_data_store.clear_all();
         }
     
    -    /// Instructs the Metrics Ping Scheduler's thread to exit cleanly.
    +    /// Instructs the Metrics Ping Scheduler's thread to exit cleanly.
         /// If Glean was configured with `use_core_mps: false`, this has no effect.
         pub fn cancel_metrics_ping_scheduler(&self) {
             if self.schedule_metrics_pings {
    @@ -2054,5 +2055,4 @@
             }
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/core_metrics.rs.html b/docs/src/glean_core/core_metrics.rs.html index 557f6cfcc1..bb32eec85d 100644 --- a/docs/src/glean_core/core_metrics.rs.html +++ b/docs/src/glean_core/core_metrics.rs.html @@ -1,4 +1,5 @@ -core_metrics.rs - source
    1
    +core_metrics.rs - source
    +    
    1
     2
     3
     4
    @@ -204,7 +205,7 @@
     204
     205
     206
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -218,33 +219,33 @@
     /// Metrics included in every ping as `client_info`.
     #[derive(Debug, Default)]
     pub struct ClientInfoMetrics {
    -    /// The build identifier generated by the CI system (e.g. "1234/A").
    +    /// The build identifier generated by the CI system (e.g. "1234/A").
         pub app_build: String,
    -    /// The user visible version string (e.g. "1.0.3").
    +    /// The user visible version string (e.g. "1.0.3").
         pub app_display_version: String,
    -    /// The app's build date
    +    /// The app's build date
         pub app_build_date: Datetime,
     
    -    /// The architecture of the device (e.g. "arm", "x86").
    +    /// The architecture of the device (e.g. "arm", "x86").
         pub architecture: String,
    -    /// The name of the operating system (e.g. "Linux", "Android", "iOS").
    +    /// The name of the operating system (e.g. "Linux", "Android", "iOS").
         pub os_version: String,
     
    -    /// The product-provided release channel (e.g. "beta").
    +    /// The product-provided release channel (e.g. "beta").
         pub channel: Option<String>,
    -    /// The Android specific SDK version of the software running on this hardware device (e.g. "23").
    +    /// The Android specific SDK version of the software running on this hardware device (e.g. "23").
         pub android_sdk_version: Option<String>,
         /// The Windows specific OS build version (e.g. 19043)
         pub windows_build_number: Option<i64>,
         /// The manufacturer of the device the application is running on.
    -    /// Not set if the device manufacturer can't be determined (e.g. on Desktop).
    +    /// Not set if the device manufacturer can't be determined (e.g. on Desktop).
         pub device_manufacturer: Option<String>,
         /// The model of the device the application is running on.
    -    /// On Android, this is Build.MODEL, the user-visible marketing name, like "Pixel 2 XL".
    -    /// Not set if the device model can't be determined (e.g. on Desktop).
    +    /// On Android, this is Build.MODEL, the user-visible marketing name, like "Pixel 2 XL".
    +    /// Not set if the device model can't be determined (e.g. on Desktop).
         pub device_model: Option<String>,
    -    /// The locale of the application during initialization (e.g. "es-ES").
    -    /// If the locale can't be determined on the system, the value is "und", to indicate "undetermined".
    +    /// The locale of the application during initialization (e.g. "es-ES").
    +    /// If the locale can't be determined on the system, the value is "und", to indicate "undetermined".
         pub locale: Option<String>,
     }
     
    @@ -253,12 +254,12 @@
         /// Creates the client info with dummy values for all.
         pub fn unknown() -> Self {
             ClientInfoMetrics {
    -            app_build: "Unknown".to_string(),
    -            app_display_version: "Unknown".to_string(),
    +            app_build: "Unknown".to_string(),
    +            app_display_version: "Unknown".to_string(),
                 app_build_date: Datetime::default(),
    -            architecture: "Unknown".to_string(),
    -            os_version: "Unknown".to_string(),
    -            channel: Some("Unknown".to_string()),
    +            architecture: "Unknown".to_string(),
    +            os_version: "Unknown".to_string(),
    +            channel: Some("Unknown".to_string()),
                 android_sdk_version: None,
                 windows_build_number: None,
                 device_manufacturer: None,
    @@ -274,9 +275,9 @@
     
         pub static app_build: Lazy<StringMetric> = Lazy::new(|| {
             StringMetric::new(CommonMetricData {
    -            name: "app_build".into(),
    -            category: "".into(),
    -            send_in_pings: vec!["glean_client_info".into()],
    +            name: "app_build".into(),
    +            category: "".into(),
    +            send_in_pings: vec!["glean_client_info".into()],
                 lifetime: Lifetime::Application,
                 disabled: false,
                 ..Default::default()
    @@ -285,9 +286,9 @@
     
         pub static app_display_version: Lazy<StringMetric> = Lazy::new(|| {
             StringMetric::new(CommonMetricData {
    -            name: "app_display_version".into(),
    -            category: "".into(),
    -            send_in_pings: vec!["glean_client_info".into()],
    +            name: "app_display_version".into(),
    +            category: "".into(),
    +            send_in_pings: vec!["glean_client_info".into()],
                 lifetime: Lifetime::Application,
                 disabled: false,
                 ..Default::default()
    @@ -297,9 +298,9 @@
         pub static app_build_date: Lazy<DatetimeMetric> = Lazy::new(|| {
             DatetimeMetric::new(
                 CommonMetricData {
    -                name: "build_date".into(),
    -                category: "".into(),
    -                send_in_pings: vec!["glean_client_info".into()],
    +                name: "build_date".into(),
    +                category: "".into(),
    +                send_in_pings: vec!["glean_client_info".into()],
                     lifetime: Lifetime::Application,
                     disabled: false,
                     ..Default::default()
    @@ -310,9 +311,9 @@
     
         pub static app_channel: Lazy<StringMetric> = Lazy::new(|| {
             StringMetric::new(CommonMetricData {
    -            name: "app_channel".into(),
    -            category: "".into(),
    -            send_in_pings: vec!["glean_client_info".into()],
    +            name: "app_channel".into(),
    +            category: "".into(),
    +            send_in_pings: vec!["glean_client_info".into()],
                 lifetime: Lifetime::Application,
                 disabled: false,
                 ..Default::default()
    @@ -321,9 +322,9 @@
     
         pub static os_version: Lazy<StringMetric> = Lazy::new(|| {
             StringMetric::new(CommonMetricData {
    -            name: "os_version".into(),
    -            category: "".into(),
    -            send_in_pings: vec!["glean_client_info".into()],
    +            name: "os_version".into(),
    +            category: "".into(),
    +            send_in_pings: vec!["glean_client_info".into()],
                 lifetime: Lifetime::Application,
                 disabled: false,
                 ..Default::default()
    @@ -332,9 +333,9 @@
     
         pub static architecture: Lazy<StringMetric> = Lazy::new(|| {
             StringMetric::new(CommonMetricData {
    -            name: "architecture".into(),
    -            category: "".into(),
    -            send_in_pings: vec!["glean_client_info".into()],
    +            name: "architecture".into(),
    +            category: "".into(),
    +            send_in_pings: vec!["glean_client_info".into()],
                 lifetime: Lifetime::Application,
                 disabled: false,
                 ..Default::default()
    @@ -343,9 +344,9 @@
     
         pub static android_sdk_version: Lazy<StringMetric> = Lazy::new(|| {
             StringMetric::new(CommonMetricData {
    -            name: "android_sdk_version".into(),
    -            category: "".into(),
    -            send_in_pings: vec!["glean_client_info".into()],
    +            name: "android_sdk_version".into(),
    +            category: "".into(),
    +            send_in_pings: vec!["glean_client_info".into()],
                 lifetime: Lifetime::Application,
                 disabled: false,
                 ..Default::default()
    @@ -354,9 +355,9 @@
     
         pub static windows_build_number: Lazy<QuantityMetric> = Lazy::new(|| {
             QuantityMetric::new(CommonMetricData {
    -            name: "windows_build_number".into(),
    -            category: "".into(),
    -            send_in_pings: vec!["glean_client_info".into()],
    +            name: "windows_build_number".into(),
    +            category: "".into(),
    +            send_in_pings: vec!["glean_client_info".into()],
                 lifetime: Lifetime::Application,
                 disabled: false,
                 ..Default::default()
    @@ -365,9 +366,9 @@
     
         pub static device_manufacturer: Lazy<StringMetric> = Lazy::new(|| {
             StringMetric::new(CommonMetricData {
    -            name: "device_manufacturer".into(),
    -            category: "".into(),
    -            send_in_pings: vec!["glean_client_info".into()],
    +            name: "device_manufacturer".into(),
    +            category: "".into(),
    +            send_in_pings: vec!["glean_client_info".into()],
                 lifetime: Lifetime::Application,
                 disabled: false,
                 ..Default::default()
    @@ -376,9 +377,9 @@
     
         pub static device_model: Lazy<StringMetric> = Lazy::new(|| {
             StringMetric::new(CommonMetricData {
    -            name: "device_model".into(),
    -            category: "".into(),
    -            send_in_pings: vec!["glean_client_info".into()],
    +            name: "device_model".into(),
    +            category: "".into(),
    +            send_in_pings: vec!["glean_client_info".into()],
                 lifetime: Lifetime::Application,
                 disabled: false,
                 ..Default::default()
    @@ -387,9 +388,9 @@
     
         pub static locale: Lazy<StringMetric> = Lazy::new(|| {
             StringMetric::new(CommonMetricData {
    -            name: "locale".into(),
    -            category: "".into(),
    -            send_in_pings: vec!["glean_client_info".into()],
    +            name: "locale".into(),
    +            category: "".into(),
    +            send_in_pings: vec!["glean_client_info".into()],
                 lifetime: Lifetime::Application,
                 disabled: false,
                 ..Default::default()
    @@ -399,9 +400,9 @@
         pub static baseline_duration: Lazy<TimespanMetric> = Lazy::new(|| {
             TimespanMetric::new(
                 CommonMetricData {
    -                name: "duration".into(),
    -                category: "glean.baseline".into(),
    -                send_in_pings: vec!["baseline".into()],
    +                name: "duration".into(),
    +                category: "glean.baseline".into(),
    +                send_in_pings: vec!["baseline".into()],
                     lifetime: Lifetime::Ping,
                     disabled: false,
                     ..Default::default()
    @@ -410,5 +411,4 @@
             )
         });
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/coverage.rs.html b/docs/src/glean_core/coverage.rs.html index fb31d07450..dd1c6693b5 100644 --- a/docs/src/glean_core/coverage.rs.html +++ b/docs/src/glean_core/coverage.rs.html @@ -1,4 +1,5 @@ -coverage.rs - source
    1
    +coverage.rs - source
    +    
    1
     2
     3
     4
    @@ -45,7 +46,7 @@
     45
     46
     47
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -54,7 +55,7 @@
     //!
     //! Testing coverage is enabled by setting the GLEAN_TEST_COVERAGE environment
     //! variable to the name of an output file. This output file must run through a
    -//! post-processor (in glean_parser's `coverage` command) to convert to a format
    +//! post-processor (in glean_parser's `coverage` command) to convert to a format
     //! understood by third-party coverage reporting tools.
     //!
     //! While running a unit test suite, Glean records which database keys were
    @@ -72,13 +73,13 @@
     use once_cell::sync::Lazy;
     
     static COVERAGE_FILE: Lazy<Option<Mutex<File>>> = Lazy::new(|| {
    -    if let Some(filename) = env::var_os("GLEAN_TEST_COVERAGE") {
    +    if let Some(filename) = env::var_os("GLEAN_TEST_COVERAGE") {
             match OpenOptions::new().append(true).create(true).open(filename) {
                 Ok(file) => {
                     return Some(Mutex::new(file));
                 }
                 Err(err) => {
    -                log::error!("Couldn't open file for coverage results: {:?}", err);
    +                log::error!("Couldn't open file for coverage results: {:?}", err);
                 }
             }
         }
    @@ -88,9 +89,8 @@
     pub(crate) fn record_coverage(metric_id: &str) {
         if let Some(file_mutex) = &*COVERAGE_FILE {
             let mut file = file_mutex.lock().unwrap();
    -        writeln!(&mut file, "{}", metric_id).ok();
    +        writeln!(&mut file, "{}", metric_id).ok();
             file.flush().ok();
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/database/mod.rs.html b/docs/src/glean_core/database/mod.rs.html index bf7843f57a..5010d38b0b 100644 --- a/docs/src/glean_core/database/mod.rs.html +++ b/docs/src/glean_core/database/mod.rs.html @@ -1,4 +1,5 @@ -mod.rs - source
    1
    +mod.rs - source
    +    
    1
     2
     3
     4
    @@ -1916,7 +1917,7 @@
     1916
     1917
     1918
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -1970,7 +1971,7 @@
     /// cbindgen:ignore
     pub type SingleStore = rkv::SingleStore<rkv::backend::SafeModeDatabase>;
     /// cbindgen:ignore
    -pub type Writer<'t> = rkv::Writer<rkv::backend::SafeModeRwTransaction<'t>>;
    +pub type Writer<'t> = rkv::Writer<rkv::backend::SafeModeRwTransaction<'t>>;
     
     #[derive(Debug)]
     pub enum RkvLoadState {
    @@ -1984,17 +1985,17 @@
             // 1. An empty file.
             // 2. A corrupted file.
             //
    -        // In both instances there's not much we can do.
    +        // In both instances there's not much we can do.
             // Drop the data by removing the file, and start over.
             Err(rkv::StoreError::FileInvalid) => {
    -            let safebin = path.join("data.safe.bin");
    +            let safebin = path.join("data.safe.bin");
                 fs::remove_file(safebin).map_err(|_| rkv::StoreError::FileInvalid)?;
                 // Now try again, we only handle that error once.
                 let rkv = Rkv::new::<rkv::backend::SafeMode>(path)?;
                 Ok((rkv, RkvLoadState::Err(rkv::StoreError::FileInvalid)))
             }
             Err(rkv::StoreError::DatabaseCorrupted) => {
    -            let safebin = path.join("data.safe.bin");
    +            let safebin = path.join("data.safe.bin");
                 fs::remove_file(safebin).map_err(|_| rkv::StoreError::DatabaseCorrupted)?;
                 // Try again, only allowing the error once.
                 let rkv = Rkv::new::<rkv::backend::SafeMode>(path)?;
    @@ -2013,17 +2014,17 @@
                 std::io::ErrorKind::NotFound => {
                     // Silently drop this error, the file was already non-existing.
                 }
    -            _ => log::warn!("{}", msg),
    +            _ => log::warn!("{}", msg),
             }
         }
     }
     
     fn delete_lmdb_database(path: &Path) {
    -    let datamdb = path.join("data.mdb");
    -    delete_and_log(&datamdb, "Failed to delete old data.");
    +    let datamdb = path.join("data.mdb");
    +    delete_and_log(&datamdb, "Failed to delete old data.");
     
    -    let lockmdb = path.join("lock.mdb");
    -    delete_and_log(&lockmdb, "Failed to delete old lock.");
    +    let lockmdb = path.join("lock.mdb");
    +    delete_and_log(&lockmdb, "Failed to delete old lock.");
     }
     
     /// Migrate from LMDB storage to safe-mode storage.
    @@ -2035,17 +2036,17 @@
     /// without migrating data.
     /// This is a no-op if no LMDB database file exists.
     pub fn migrate(path: &Path, dst_env: &Rkv) {
    -    log::debug!("Migrating files in {}", path.display());
    +    log::debug!("Migrating files in {}", path.display());
     
         // Shortcut if no data to migrate is around.
    -    let datamdb = path.join("data.mdb");
    +    let datamdb = path.join("data.mdb");
         if !datamdb.exists() {
    -        log::debug!("No data to migrate.");
    +        log::debug!("No data to migrate.");
             return;
         }
     
    -    // We're handling the same error cases as `easy_migrate_lmdb_to_safe_mode`,
    -    // but annotate each why they don't cause problems for Glean.
    +    // We're handling the same error cases as `easy_migrate_lmdb_to_safe_mode`,
    +    // but annotate each why they don't cause problems for Glean.
         // Additionally for known cases we delete the LMDB database regardless.
         let should_delete =
             match Migrator::open_and_migrate_lmdb_to_safe_mode(path, |builder| builder, dst_env) {
    @@ -2058,8 +2059,8 @@
                 // Nothing we can do really.
                 Err(MigrateError::StoreError(StoreError::IoError(_))) => true,
                 // Path accessible but incompatible for configuration.
    -            // This should not happen, we never used storages that safe-mode doesn't understand.
    -            // If it does happen, let's start fresh and use the safe-mode from now on.
    +            // This should not happen, we never used storages that safe-mode doesn't understand.
    +            // If it does happen, let's start fresh and use the safe-mode from now on.
                 Err(MigrateError::StoreError(StoreError::UnsuitableEnvironmentPath(_))) => true,
                 // Nothing to migrate.
                 // Source database was empty. We just start fresh anyway.
    @@ -2069,30 +2070,30 @@
                 // or someone placed back an old data file.
                 // In any case we better stay on the new data and delete the old one.
                 Err(MigrateError::DestinationNotEmpty) => {
    -                log::warn!("Failed to migrate old data. Destination was not empty");
    +                log::warn!("Failed to migrate old data. Destination was not empty");
                     true
                 }
                 // An internal lock was poisoned.
                 // This would only happen if multiple things run concurrently and one crashes.
                 Err(MigrateError::ManagerPoisonError) => false,
    -            // Couldn't close source environment and delete files on disk (e.g. other stores still open).
    +            // Couldn't close source environment and delete files on disk (e.g. other stores still open).
                 // This could only happen if multiple instances are running,
                 // we leave files in place.
                 Err(MigrateError::CloseError(_)) => false,
                 // Other store errors are never returned from the migrator.
                 // We need to handle them to please rustc.
                 Err(MigrateError::StoreError(_)) => false,
    -            // Other errors can't happen, so this leaves us with the Ok case.
    +            // Other errors can't happen, so this leaves us with the Ok case.
                 // This already deleted the LMDB files.
                 Ok(()) => false,
             };
     
         if should_delete {
    -        log::debug!("Need to delete remaining LMDB files.");
    +        log::debug!("Need to delete remaining LMDB files.");
             delete_lmdb_database(path);
         }
     
    -    log::debug!("Migration ended. Safe-mode database in {}", path.display());
    +    log::debug!("Migration ended. Safe-mode database in {}", path.display());
     }
     
     use crate::common_metric_data::CommonMetricDataInternal;
    @@ -2105,16 +2106,16 @@
         /// Handle to the database environment.
         rkv: Rkv,
     
    -    /// Handles to the "lifetime" stores.
    +    /// Handles to the "lifetime" stores.
         ///
    -    /// A "store" is a handle to the underlying database.
    +    /// A "store" is a handle to the underlying database.
         /// We keep them open for fast and frequent access.
         user_store: SingleStore,
         ping_store: SingleStore,
         application_store: SingleStore,
     
         /// If the `delay_ping_lifetime_io` Glean config option is `true`,
    -    /// we will save metrics with 'ping' lifetime data in a map temporarily
    +    /// we will save metrics with 'ping' lifetime data in a map temporarily
         /// so as to persist them to disk using rkv in bulk on demand.
         ping_lifetime_data: Option<RwLock<BTreeMap<String, Metric>>>,
     
    @@ -2152,12 +2153,12 @@
     
     impl std::fmt::Debug for Database {
         fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
    -        fmt.debug_struct("Database")
    -            .field("rkv", &self.rkv)
    -            .field("user_store", &"SingleStore")
    -            .field("ping_store", &"SingleStore")
    -            .field("application_store", &"SingleStore")
    -            .field("ping_lifetime_data", &self.ping_lifetime_data)
    +        fmt.debug_struct("Database")
    +            .field("rkv", &self.rkv)
    +            .field("user_store", &"SingleStore")
    +            .field("ping_store", &"SingleStore")
    +            .field("application_store", &"SingleStore")
    +            .field("ping_lifetime_data", &self.ping_lifetime_data)
                 .finish()
         }
     }
    @@ -2206,8 +2207,8 @@
             ping_lifetime_threshold: usize,
             ping_lifetime_max_time: Duration,
         ) -> Result<Self> {
    -        let path = data_path.join("db");
    -        log::debug!("Database path: {:?}", path.display());
    +        let path = data_path.join("db");
    +        log::debug!("Database path: {:?}", path.display());
             let file_size = database_size(&path);
     
             let (rkv, rkv_load_state) = Self::open_rkv(&path)?;
    @@ -2276,7 +2277,7 @@
             let (rkv, load_state) = rkv_new(path)?;
             migrate(path, &rkv);
     
    -        log::info!("Database initialized");
    +        log::info!("Database initialized");
             Ok((rkv, load_state))
         }
     
    @@ -2294,20 +2295,20 @@
         /// A string representing the location in the database.
         fn get_storage_key(storage_name: &str, metric_key: Option<&str>) -> String {
             match metric_key {
    -            Some(k) => format!("{}#{}", storage_name, k),
    -            None => format!("{}#", storage_name),
    +            Some(k) => format!("{}#{}", storage_name, k),
    +            None => format!("{}#", storage_name),
             }
         }
     
         /// Loads Lifetime::Ping data from rkv to memory,
         /// if `delay_ping_lifetime_io` is set to true.
         ///
    -    /// Does nothing if it isn't or if there is not data to load.
    +    /// Does nothing if it isn't or if there is not data to load.
         fn load_ping_lifetime_data(&self) {
             if let Some(ping_lifetime_data) = &self.ping_lifetime_data {
                 let mut data = ping_lifetime_data
                     .write()
    -                .expect("Can't read ping lifetime data");
    +                .expect("Can't read ping lifetime data");
     
                 let reader = unwrap_or!(self.rkv.read(), return);
                 let store = self.get_store(Lifetime::Ping);
    @@ -2368,7 +2369,7 @@
                 if let Some(ping_lifetime_data) = &self.ping_lifetime_data {
                     let data = ping_lifetime_data
                         .read()
    -                    .expect("Can't read ping lifetime data");
    +                    .expect("Can't read ping lifetime data");
                     for (key, value) in data.iter() {
                         if key.starts_with(&iter_start) {
                             let key = &key[len..];
    @@ -2456,7 +2457,7 @@
     
         /// Records a metric in the underlying storage system.
         pub fn record(&self, glean: &Glean, data: &CommonMetricDataInternal, value: &Metric) {
    -        // If upload is disabled we don't want to record.
    +        // If upload is disabled we don't want to record.
             if !glean.is_upload_enabled() {
                 return;
             }
    @@ -2466,7 +2467,7 @@
             for ping_name in data.storage_names() {
                 if let Err(e) = self.record_per_lifetime(data.inner.lifetime, ping_name, &name, value) {
                     log::error!(
    -                    "Failed to record metric '{}' into {}: {:?}",
    +                    "Failed to record metric '{}' into {}: {:?}",
                         data.base_identifier(),
                         ping_name,
                         e
    @@ -2501,7 +2502,7 @@
                 if let Some(ping_lifetime_data) = &self.ping_lifetime_data {
                     let mut data = ping_lifetime_data
                         .write()
    -                    .expect("Can't read ping lifetime data");
    +                    .expect("Can't read ping lifetime data");
                     data.insert(final_key, metric.clone());
     
                     // flush ping lifetime
    @@ -2510,7 +2511,7 @@
                 }
             }
     
    -        let encoded = bincode::serialize(&metric).expect("IMPOSSIBLE: Serializing metric failed");
    +        let encoded = bincode::serialize(&metric).expect("IMPOSSIBLE: Serializing metric failed");
             let value = rkv::Value::Blob(&encoded);
     
             let mut writer = self.rkv.write()?;
    @@ -2526,7 +2527,7 @@
         where
             F: FnMut(Option<Metric>) -> Metric,
         {
    -        // If upload is disabled we don't want to record.
    +        // If upload is disabled we don't want to record.
             if !glean.is_upload_enabled() {
                 return;
             }
    @@ -2537,7 +2538,7 @@
                     self.record_per_lifetime_with(data.inner.lifetime, ping_name, &name, &mut transform)
                 {
                     log::error!(
    -                    "Failed to record metric '{}' into {}: {:?}",
    +                    "Failed to record metric '{}' into {}: {:?}",
                         data.base_identifier(),
                         ping_name,
                         e
    @@ -2576,7 +2577,7 @@
                 if let Some(ping_lifetime_data) = &self.ping_lifetime_data {
                     let mut data = ping_lifetime_data
                         .write()
    -                    .expect("Can't access ping lifetime data as writable");
    +                    .expect("Can't access ping lifetime data as writable");
                     let entry = data.entry(final_key);
                     match entry {
                         Entry::Vacant(entry) => {
    @@ -2609,7 +2610,7 @@
             };
     
             let encoded =
    -            bincode::serialize(&new_value).expect("IMPOSSIBLE: Serializing metric failed");
    +            bincode::serialize(&new_value).expect("IMPOSSIBLE: Serializing metric failed");
             let value = rkv::Value::Blob(&encoded);
             store.put(&mut writer, final_key, &value)?;
             measure_commit!(self, writer.commit())?;
    @@ -2635,7 +2636,7 @@
             if let Some(ping_lifetime_data) = &self.ping_lifetime_data {
                 ping_lifetime_data
                     .write()
    -                .expect("Can't access ping lifetime data as writable")
    +                .expect("Can't access ping lifetime data as writable")
                     .retain(|metric_id, _| !metric_id.starts_with(storage_name));
             }
     
    @@ -2656,7 +2657,7 @@
                 let mut res = Ok(());
                 for to_delete in metrics {
                     if let Err(e) = store.delete(&mut writer, to_delete) {
    -                    log::warn!("Can't delete from store: {:?}", e);
    +                    log::warn!("Can't delete from store: {:?}", e);
                         res = Err(e);
                     }
                 }
    @@ -2698,7 +2699,7 @@
                 if let Some(ping_lifetime_data) = &self.ping_lifetime_data {
                     let mut data = ping_lifetime_data
                         .write()
    -                    .expect("Can't access app lifetime data as writable");
    +                    .expect("Can't access app lifetime data as writable");
                     data.remove(&final_key);
                 }
             }
    @@ -2734,11 +2735,11 @@
             if let Err(e) = res {
                 // We try to clear everything.
                 // If there was no data to begin with we encounter a `NotFound` error.
    -            // There's no point in logging that.
    +            // There's no point in logging that.
                 if let ErrorKind::Rkv(StoreError::IoError(ioerr)) = e.kind() {
                     if let io::ErrorKind::NotFound = ioerr.kind() {
                         log::debug!(
    -                        "Could not clear store for lifetime {:?}: {:?}",
    +                        "Could not clear store for lifetime {:?}: {:?}",
                             lifetime,
                             ioerr
                         );
    @@ -2746,7 +2747,7 @@
                     }
                 }
     
    -            log::warn!("Could not clear store for lifetime {:?}: {:?}", lifetime, e);
    +            log::warn!("Could not clear store for lifetime {:?}: {:?}", lifetime, e);
             }
         }
     
    @@ -2761,7 +2762,7 @@
             if let Some(ping_lifetime_data) = &self.ping_lifetime_data {
                 ping_lifetime_data
                     .write()
    -                .expect("Can't access ping lifetime data as writable")
    +                .expect("Can't access ping lifetime data as writable")
                     .clear();
             }
     
    @@ -2781,7 +2782,7 @@
             if let Some(ping_lifetime_data) = &self.ping_lifetime_data {
                 let data = ping_lifetime_data
                     .read()
    -                .expect("Can't read ping lifetime data");
    +                .expect("Can't read ping lifetime data");
     
                 // We can reset the write-counter. Current data has been persisted.
                 self.ping_lifetime_count.store(0, Ordering::Release);
    @@ -2790,7 +2791,7 @@
                 self.write_with_store(Lifetime::Ping, |mut writer, store| {
                     for (key, value) in data.iter() {
                         let encoded =
    -                        bincode::serialize(&value).expect("IMPOSSIBLE: Serializing metric failed");
    +                        bincode::serialize(&value).expect("IMPOSSIBLE: Serializing metric failed");
                         // There is no need for `get_storage_key` here because
                         // the key is already formatted from when it was saved
                         // to ping_lifetime_data.
    @@ -2808,7 +2809,7 @@
             data: &BTreeMap<String, Metric>,
         ) -> Result<()> {
             if self.ping_lifetime_threshold == 0 && self.ping_lifetime_max_time.is_zero() {
    -            log::trace!("Auto-flush disabled.");
    +            log::trace!("Auto-flush disabled.");
                 return Ok(());
             }
     
    @@ -2820,7 +2821,7 @@
                 && (self.ping_lifetime_max_time.is_zero() || elapsed < self.ping_lifetime_max_time)
             {
                 log::trace!(
    -                "Not flushing. write_count={} (threshold={}), elapsed={:?} (max={:?})",
    +                "Not flushing. write_count={} (threshold={}), elapsed={:?} (max={:?})",
                     write_count,
                     self.ping_lifetime_threshold,
                     elapsed,
    @@ -2831,12 +2832,12 @@
     
             if self.ping_lifetime_threshold > 0 && write_count >= self.ping_lifetime_threshold {
                 log::debug!(
    -                "Flushing database due to threshold of {} reached.",
    +                "Flushing database due to threshold of {} reached.",
                     self.ping_lifetime_threshold
                 )
             } else if !self.ping_lifetime_max_time.is_zero() && elapsed >= self.ping_lifetime_max_time {
                 log::debug!(
    -                "Flushing database due to last write more than {:?} ago",
    +                "Flushing database due to last write more than {:?} ago",
                     self.ping_lifetime_max_time
                 );
             }
    @@ -2846,7 +2847,7 @@
             self.write_with_store(Lifetime::Ping, |mut writer, store| {
                 for (key, value) in data.iter() {
                     let encoded =
    -                    bincode::serialize(&value).expect("IMPOSSIBLE: Serializing metric failed");
    +                    bincode::serialize(&value).expect("IMPOSSIBLE: Serializing metric failed");
                     // There is no need for `get_storage_key` here because
                     // the key is already formatted from when it was saved
                     // to ping_lifetime_data.
    @@ -2867,7 +2868,7 @@
     
         #[test]
         fn test_panicks_if_fails_dir_creation() {
    -        let path = Path::new("/!#\"'@#°ç");
    +        let path = Path::new("/!#\"'@#°ç");
             assert!(Database::new(path, false, 0, Duration::ZERO).is_err());
         }
     
    @@ -2877,7 +2878,7 @@
             use std::ffi::OsString;
             use std::os::windows::prelude::*;
     
    -        // Here the values 0x0066 and 0x006f correspond to 'f' and 'o'
    +        // Here the values 0x0066 and 0x006f correspond to 'f' and 'o'
             // respectively. The value 0xD800 is a lone surrogate half, invalid
             // in a UTF-16 sequence.
             let source = [0x0066, 0x006f, 0xD800, 0x006f];
    @@ -2890,19 +2891,19 @@
     
             assert!(
                 res.is_ok(),
    -            "Database should succeed at {}: {:?}",
    +            "Database should succeed at {}: {:?}",
                 path.display(),
                 res
             );
         }
     
         #[test]
    -    #[cfg(target_os = "linux")]
    +    #[cfg(target_os = "linux")]
         fn linux_invalid_utf8_panicfree() {
             use std::ffi::OsStr;
             use std::os::unix::ffi::OsStrExt;
     
    -        // Here, the values 0x66 and 0x6f correspond to 'f' and 'o'
    +        // Here, the values 0x66 and 0x6f correspond to 'f' and 'o'
             // respectively. The value 0x80 is a lone continuation byte, invalid
             // in a UTF-8 sequence.
             let source = [0x66, 0x6f, 0x80, 0x6f];
    @@ -2913,19 +2914,19 @@
             let res = Database::new(&path, false, 0, Duration::ZERO);
             assert!(
                 res.is_ok(),
    -            "Database should not fail at {}: {:?}",
    +            "Database should not fail at {}: {:?}",
                 path.display(),
                 res
             );
         }
     
         #[test]
    -    #[cfg(target_os = "macos")]
    +    #[cfg(target_os = "macos")]
         fn macos_invalid_utf8_panicfree() {
             use std::ffi::OsStr;
             use std::os::unix::ffi::OsStrExt;
     
    -        // Here, the values 0x66 and 0x6f correspond to 'f' and 'o'
    +        // Here, the values 0x66 and 0x6f correspond to 'f' and 'o'
             // respectively. The value 0x80 is a lone continuation byte, invalid
             // in a UTF-8 sequence.
             let source = [0x66, 0x6f, 0x80, 0x6f];
    @@ -2936,7 +2937,7 @@
             let res = Database::new(&path, false, 0, Duration::ZERO);
             assert!(
                 res.is_err(),
    -            "Database should not fail at {}: {:?}",
    +            "Database should not fail at {}: {:?}",
                 path.display(),
                 res
             );
    @@ -2959,9 +2960,9 @@
             assert!(db.ping_lifetime_data.is_none());
     
             // Attempt to record a known value.
    -        let test_value = "test-value";
    -        let test_storage = "test-storage";
    -        let test_metric_id = "telemetry_test.test_name";
    +        let test_value = "test-value";
    +        let test_storage = "test-storage";
    +        let test_metric_id = "telemetry_test.test_name";
             db.record_per_lifetime(
                 Lifetime::Ping,
                 test_storage,
    @@ -2978,12 +2979,12 @@
                 assert_eq!(test_metric_id, metric_id);
                 match metric {
                     Metric::String(s) => assert_eq!(test_value, s),
    -                _ => panic!("Unexpected data found"),
    +                _ => panic!("Unexpected data found"),
                 }
             };
     
             db.iter_store_from(Lifetime::Ping, test_storage, None, &mut snapshotter);
    -        assert_eq!(1, found_metrics, "We only expect 1 Lifetime.Ping metric.");
    +        assert_eq!(1, found_metrics, "We only expect 1 Lifetime.Ping metric.");
         }
     
         #[test]
    @@ -2993,9 +2994,9 @@
             let db = Database::new(dir.path(), false, 0, Duration::ZERO).unwrap();
     
             // Attempt to record a known value.
    -        let test_value = "test-value";
    -        let test_storage = "test-storage1";
    -        let test_metric_id = "telemetry_test.test_name";
    +        let test_value = "test-value";
    +        let test_storage = "test-storage1";
    +        let test_metric_id = "telemetry_test.test_name";
             db.record_per_lifetime(
                 Lifetime::Application,
                 test_storage,
    @@ -3012,14 +3013,14 @@
                 assert_eq!(test_metric_id, metric_id);
                 match metric {
                     Metric::String(s) => assert_eq!(test_value, s),
    -                _ => panic!("Unexpected data found"),
    +                _ => panic!("Unexpected data found"),
                 }
             };
     
             db.iter_store_from(Lifetime::Application, test_storage, None, &mut snapshotter);
             assert_eq!(
                 1, found_metrics,
    -            "We only expect 1 Lifetime.Application metric."
    +            "We only expect 1 Lifetime.Application metric."
             );
         }
     
    @@ -3030,9 +3031,9 @@
             let db = Database::new(dir.path(), false, 0, Duration::ZERO).unwrap();
     
             // Attempt to record a known value.
    -        let test_value = "test-value";
    -        let test_storage = "test-storage2";
    -        let test_metric_id = "telemetry_test.test_name";
    +        let test_value = "test-value";
    +        let test_storage = "test-storage2";
    +        let test_metric_id = "telemetry_test.test_name";
             db.record_per_lifetime(
                 Lifetime::User,
                 test_storage,
    @@ -3049,12 +3050,12 @@
                 assert_eq!(test_metric_id, metric_id);
                 match metric {
                     Metric::String(s) => assert_eq!(test_value, s),
    -                _ => panic!("Unexpected data found"),
    +                _ => panic!("Unexpected data found"),
                 }
             };
     
             db.iter_store_from(Lifetime::User, test_storage, None, &mut snapshotter);
    -        assert_eq!(1, found_metrics, "We only expect 1 Lifetime.User metric.");
    +        assert_eq!(1, found_metrics, "We only expect 1 Lifetime.User metric.");
         }
     
         #[test]
    @@ -3064,26 +3065,26 @@
             let db = Database::new(dir.path(), false, 0, Duration::ZERO).unwrap();
     
             // Attempt to record a known value for every single lifetime.
    -        let test_storage = "test-storage";
    +        let test_storage = "test-storage";
             db.record_per_lifetime(
                 Lifetime::User,
                 test_storage,
    -            "telemetry_test.test_name_user",
    -            &Metric::String("test-value-user".to_string()),
    +            "telemetry_test.test_name_user",
    +            &Metric::String("test-value-user".to_string()),
             )
             .unwrap();
             db.record_per_lifetime(
                 Lifetime::Ping,
                 test_storage,
    -            "telemetry_test.test_name_ping",
    -            &Metric::String("test-value-ping".to_string()),
    +            "telemetry_test.test_name_ping",
    +            &Metric::String("test-value-ping".to_string()),
             )
             .unwrap();
             db.record_per_lifetime(
                 Lifetime::Application,
                 test_storage,
    -            "telemetry_test.test_name_application",
    -            &Metric::String("test-value-application".to_string()),
    +            "telemetry_test.test_name_application",
    +            &Metric::String("test-value-application".to_string()),
             )
             .unwrap();
     
    @@ -3094,7 +3095,7 @@
                     let metric_id = String::from_utf8_lossy(metric_id).into_owned();
                     match metric {
                         Metric::String(s) => snapshot.insert(metric_id, s.to_string()),
    -                    _ => panic!("Unexpected data found"),
    +                    _ => panic!("Unexpected data found"),
                     };
                 };
     
    @@ -3102,23 +3103,23 @@
                 db.iter_store_from(Lifetime::Ping, test_storage, None, &mut snapshotter);
                 db.iter_store_from(Lifetime::Application, test_storage, None, &mut snapshotter);
     
    -            assert_eq!(3, snapshot.len(), "We expect all lifetimes to be present.");
    -            assert!(snapshot.contains_key("telemetry_test.test_name_user"));
    -            assert!(snapshot.contains_key("telemetry_test.test_name_ping"));
    -            assert!(snapshot.contains_key("telemetry_test.test_name_application"));
    +            assert_eq!(3, snapshot.len(), "We expect all lifetimes to be present.");
    +            assert!(snapshot.contains_key("telemetry_test.test_name_user"));
    +            assert!(snapshot.contains_key("telemetry_test.test_name_ping"));
    +            assert!(snapshot.contains_key("telemetry_test.test_name_application"));
             }
     
             // Clear the Ping lifetime.
             db.clear_ping_lifetime_storage(test_storage).unwrap();
     
    -        // Take a snapshot again and check that we're only clearing the Ping lifetime.
    +        // Take a snapshot again and check that we're only clearing the Ping lifetime.
             {
                 let mut snapshot: HashMap<String, String> = HashMap::new();
                 let mut snapshotter = |metric_id: &[u8], metric: &Metric| {
                     let metric_id = String::from_utf8_lossy(metric_id).into_owned();
                     match metric {
                         Metric::String(s) => snapshot.insert(metric_id, s.to_string()),
    -                    _ => panic!("Unexpected data found"),
    +                    _ => panic!("Unexpected data found"),
                     };
                 };
     
    @@ -3126,9 +3127,9 @@
                 db.iter_store_from(Lifetime::Ping, test_storage, None, &mut snapshotter);
                 db.iter_store_from(Lifetime::Application, test_storage, None, &mut snapshotter);
     
    -            assert_eq!(2, snapshot.len(), "We only expect 2 metrics to be left.");
    -            assert!(snapshot.contains_key("telemetry_test.test_name_user"));
    -            assert!(snapshot.contains_key("telemetry_test.test_name_application"));
    +            assert_eq!(2, snapshot.len(), "We only expect 2 metrics to be left.");
    +            assert!(snapshot.contains_key("telemetry_test.test_name_user"));
    +            assert!(snapshot.contains_key("telemetry_test.test_name_application"));
             }
         }
     
    @@ -3138,44 +3139,44 @@
             let dir = tempdir().unwrap();
             let db = Database::new(dir.path(), false, 0, Duration::ZERO).unwrap();
     
    -        let test_storage = "test-storage-single-lifetime";
    -        let metric_id_pattern = "telemetry_test.single_metric";
    +        let test_storage = "test-storage-single-lifetime";
    +        let metric_id_pattern = "telemetry_test.single_metric";
     
             // Write sample metrics to the database.
             let lifetimes = [Lifetime::User, Lifetime::Ping, Lifetime::Application];
     
             for lifetime in lifetimes.iter() {
    -            for value in &["retain", "delete"] {
    +            for value in &["retain", "delete"] {
                     db.record_per_lifetime(
                         *lifetime,
                         test_storage,
    -                    &format!("{}_{}", metric_id_pattern, value),
    +                    &format!("{}_{}", metric_id_pattern, value),
                         &Metric::String((*value).to_string()),
                     )
                     .unwrap();
                 }
             }
     
    -        // Remove "telemetry_test.single_metric_delete" from each lifetime.
    +        // Remove "telemetry_test.single_metric_delete" from each lifetime.
             for lifetime in lifetimes.iter() {
                 db.remove_single_metric(
                     *lifetime,
                     test_storage,
    -                &format!("{}_delete", metric_id_pattern),
    +                &format!("{}_delete", metric_id_pattern),
                 )
                 .unwrap();
             }
     
    -        // Verify that "telemetry_test.single_metric_retain" is still around for all lifetimes.
    +        // Verify that "telemetry_test.single_metric_retain" is still around for all lifetimes.
             for lifetime in lifetimes.iter() {
                 let mut found_metrics = 0;
                 let mut snapshotter = |metric_id: &[u8], metric: &Metric| {
                     found_metrics += 1;
                     let metric_id = String::from_utf8_lossy(metric_id).into_owned();
    -                assert_eq!(format!("{}_retain", metric_id_pattern), metric_id);
    +                assert_eq!(format!("{}_retain", metric_id_pattern), metric_id);
                     match metric {
    -                    Metric::String(s) => assert_eq!("retain", s),
    -                    _ => panic!("Unexpected data found"),
    +                    Metric::String(s) => assert_eq!("retain", s),
    +                    _ => panic!("Unexpected data found"),
                     }
                 };
     
    @@ -3183,7 +3184,7 @@
                 db.iter_store_from(*lifetime, test_storage, None, &mut snapshotter);
                 assert_eq!(
                     1, found_metrics,
    -                "We only expect 1 metric for this lifetime."
    +                "We only expect 1 metric for this lifetime."
                 );
             }
         }
    @@ -3193,13 +3194,13 @@
             // Init the database in a temporary directory.
             let dir = tempdir().unwrap();
             let db = Database::new(dir.path(), true, 0, Duration::ZERO).unwrap();
    -        let test_storage = "test-storage";
    +        let test_storage = "test-storage";
     
             assert!(db.ping_lifetime_data.is_some());
     
             // Attempt to record a known value.
    -        let test_value1 = "test-value1";
    -        let test_metric_id1 = "telemetry_test.test_name1";
    +        let test_value1 = "test-value1";
    +        let test_metric_id1 = "telemetry_test.test_name1";
             db.record_per_lifetime(
                 Lifetime::Ping,
                 test_storage,
    @@ -3212,8 +3213,8 @@
             db.persist_ping_lifetime_data().unwrap();
     
             // Attempt to record another known value.
    -        let test_value2 = "test-value2";
    -        let test_metric_id2 = "telemetry_test.test_name2";
    +        let test_value2 = "test-value2";
    +        let test_metric_id2 = "telemetry_test.test_name2";
             db.record_per_lifetime(
                 Lifetime::Ping,
                 test_storage,
    @@ -3234,27 +3235,27 @@
     
                 // Verify that test_value1 is in rkv.
                 assert!(store
    -                .get(&reader, format!("{}#{}", test_storage, test_metric_id1))
    +                .get(&reader, format!("{}#{}", test_storage, test_metric_id1))
                     .unwrap_or(None)
                     .is_some());
                 // Verifiy that test_value2 is **not** in rkv.
                 assert!(store
    -                .get(&reader, format!("{}#{}", test_storage, test_metric_id2))
    +                .get(&reader, format!("{}#{}", test_storage, test_metric_id2))
                     .unwrap_or(None)
                     .is_none());
     
                 let data = match &db.ping_lifetime_data {
                     Some(ping_lifetime_data) => ping_lifetime_data,
    -                None => panic!("Expected `ping_lifetime_data` to exist here!"),
    +                None => panic!("Expected `ping_lifetime_data` to exist here!"),
                 };
                 let data = data.read().unwrap();
                 // Verify that test_value1 is also in memory.
                 assert!(data
    -                .get(&format!("{}#{}", test_storage, test_metric_id1))
    +                .get(&format!("{}#{}", test_storage, test_metric_id1))
                     .is_some());
                 // Verify that test_value2 is in memory.
                 assert!(data
    -                .get(&format!("{}#{}", test_storage, test_metric_id2))
    +                .get(&format!("{}#{}", test_storage, test_metric_id2))
                     .is_some());
             }
     
    @@ -3273,27 +3274,27 @@
     
                 // Verify that test_value1 is in rkv.
                 assert!(store
    -                .get(&reader, format!("{}#{}", test_storage, test_metric_id1))
    +                .get(&reader, format!("{}#{}", test_storage, test_metric_id1))
                     .unwrap_or(None)
                     .is_some());
                 // Verifiy that test_value2 is also in rkv.
                 assert!(store
    -                .get(&reader, format!("{}#{}", test_storage, test_metric_id2))
    +                .get(&reader, format!("{}#{}", test_storage, test_metric_id2))
                     .unwrap_or(None)
                     .is_some());
     
                 let data = match &db.ping_lifetime_data {
                     Some(ping_lifetime_data) => ping_lifetime_data,
    -                None => panic!("Expected `ping_lifetime_data` to exist here!"),
    +                None => panic!("Expected `ping_lifetime_data` to exist here!"),
                 };
                 let data = data.read().unwrap();
                 // Verify that test_value1 is also in memory.
                 assert!(data
    -                .get(&format!("{}#{}", test_storage, test_metric_id1))
    +                .get(&format!("{}#{}", test_storage, test_metric_id1))
                     .is_some());
                 // Verify that test_value2 is also in memory.
                 assert!(data
    -                .get(&format!("{}#{}", test_storage, test_metric_id2))
    +                .get(&format!("{}#{}", test_storage, test_metric_id2))
                     .is_some());
             }
         }
    @@ -3303,9 +3304,9 @@
             // Init the database in a temporary directory.
             let dir = tempdir().unwrap();
     
    -        let test_storage = "test-storage";
    -        let test_value = "test-value";
    -        let test_metric_id = "telemetry_test.test_name";
    +        let test_storage = "test-storage";
    +        let test_value = "test-value";
    +        let test_metric_id = "telemetry_test.test_name";
     
             {
                 let db = Database::new(dir.path(), true, 0, Duration::ZERO).unwrap();
    @@ -3322,11 +3323,11 @@
                 // Verify that test_value is in memory.
                 let data = match &db.ping_lifetime_data {
                     Some(ping_lifetime_data) => ping_lifetime_data,
    -                None => panic!("Expected `ping_lifetime_data` to exist here!"),
    +                None => panic!("Expected `ping_lifetime_data` to exist here!"),
                 };
                 let data = data.read().unwrap();
                 assert!(data
    -                .get(&format!("{}#{}", test_storage, test_metric_id))
    +                .get(&format!("{}#{}", test_storage, test_metric_id))
                     .is_some());
     
                 // Attempt to persist data.
    @@ -3339,7 +3340,7 @@
                     .unwrap();
                 let reader = db.rkv.read().unwrap();
                 assert!(store
    -                .get(&reader, format!("{}#{}", test_storage, test_metric_id))
    +                .get(&reader, format!("{}#{}", test_storage, test_metric_id))
                     .unwrap_or(None)
                     .is_some());
             }
    @@ -3352,11 +3353,11 @@
                 // Verify that test_value is in memory.
                 let data = match &db.ping_lifetime_data {
                     Some(ping_lifetime_data) => ping_lifetime_data,
    -                None => panic!("Expected `ping_lifetime_data` to exist here!"),
    +                None => panic!("Expected `ping_lifetime_data` to exist here!"),
                 };
                 let data = data.read().unwrap();
                 assert!(data
    -                .get(&format!("{}#{}", test_storage, test_metric_id))
    +                .get(&format!("{}#{}", test_storage, test_metric_id))
                     .is_some());
     
                 // Verify that test_value is also in rkv.
    @@ -3366,7 +3367,7 @@
                     .unwrap();
                 let reader = db.rkv.read().unwrap();
                 assert!(store
    -                .get(&reader, format!("{}#{}", test_storage, test_metric_id))
    +                .get(&reader, format!("{}#{}", test_storage, test_metric_id))
                     .unwrap_or(None)
                     .is_some());
             }
    @@ -3377,13 +3378,13 @@
             // Init the database in a temporary directory.
             let dir = tempdir().unwrap();
             let db = Database::new(dir.path(), true, 0, Duration::ZERO).unwrap();
    -        let test_storage = "test-storage";
    +        let test_storage = "test-storage";
     
             assert!(db.ping_lifetime_data.is_some());
     
             // Attempt to record a known value.
    -        let test_value1 = "test-value1";
    -        let test_metric_id1 = "telemetry_test.test_name1";
    +        let test_value1 = "test-value1";
    +        let test_metric_id1 = "telemetry_test.test_name1";
             db.record_per_lifetime(
                 Lifetime::Ping,
                 test_storage,
    @@ -3395,44 +3396,44 @@
             {
                 let data = match &db.ping_lifetime_data {
                     Some(ping_lifetime_data) => ping_lifetime_data,
    -                None => panic!("Expected `ping_lifetime_data` to exist here!"),
    +                None => panic!("Expected `ping_lifetime_data` to exist here!"),
                 };
                 let data = data.read().unwrap();
                 // Verify that test_value1 is in memory.
                 assert!(data
    -                .get(&format!("{}#{}", test_storage, test_metric_id1))
    +                .get(&format!("{}#{}", test_storage, test_metric_id1))
                     .is_some());
             }
     
    -        // Clear ping lifetime storage for a storage that isn't test_storage.
    -        // Doesn't matter what it's called, just that it isn't test_storage.
    -        db.clear_ping_lifetime_storage(&(test_storage.to_owned() + "x"))
    +        // Clear ping lifetime storage for a storage that isn't test_storage.
    +        // Doesn't matter what it's called, just that it isn't test_storage.
    +        db.clear_ping_lifetime_storage(&(test_storage.to_owned() + "x"))
                 .unwrap();
     
             {
                 let data = match &db.ping_lifetime_data {
                     Some(ping_lifetime_data) => ping_lifetime_data,
    -                None => panic!("Expected `ping_lifetime_data` to exist here!"),
    +                None => panic!("Expected `ping_lifetime_data` to exist here!"),
                 };
                 let data = data.read().unwrap();
                 // Verify that test_value1 is still in memory.
                 assert!(data
    -                .get(&format!("{}#{}", test_storage, test_metric_id1))
    +                .get(&format!("{}#{}", test_storage, test_metric_id1))
                     .is_some());
             }
     
    -        // Clear test_storage's ping lifetime storage.
    +        // Clear test_storage's ping lifetime storage.
             db.clear_ping_lifetime_storage(test_storage).unwrap();
     
             {
                 let data = match &db.ping_lifetime_data {
                     Some(ping_lifetime_data) => ping_lifetime_data,
    -                None => panic!("Expected `ping_lifetime_data` to exist here!"),
    +                None => panic!("Expected `ping_lifetime_data` to exist here!"),
                 };
                 let data = data.read().unwrap();
                 // Verify that test_value1 is no longer in memory.
                 assert!(data
    -                .get(&format!("{}#{}", test_storage, test_metric_id1))
    +                .get(&format!("{}#{}", test_storage, test_metric_id1))
                     .is_none());
             }
         }
    @@ -3443,14 +3444,14 @@
     
             // Init the database in a temporary directory.
     
    -        let test_storage = "test-storage";
    -        let test_data = CommonMetricDataInternal::new("category", "name", test_storage);
    +        let test_storage = "test-storage";
    +        let test_data = CommonMetricDataInternal::new("category", "name", test_storage);
             let test_metric_id = test_data.identifier(&glean);
     
             // Attempt to record metric with the record and record_with functions,
             // this should work since upload is enabled.
             let db = Database::new(dir.path(), true, 0, Duration::ZERO).unwrap();
    -        db.record(&glean, &test_data, &Metric::String("record".to_owned()));
    +        db.record(&glean, &test_data, &Metric::String("record".to_owned()));
             db.iter_store_from(
                 Lifetime::Ping,
                 test_storage,
    @@ -3461,14 +3462,14 @@
                         test_metric_id
                     );
                     match metric {
    -                    Metric::String(v) => assert_eq!("record", *v),
    -                    _ => panic!("Unexpected data found"),
    +                    Metric::String(v) => assert_eq!("record", *v),
    +                    _ => panic!("Unexpected data found"),
                     }
                 },
             );
     
             db.record_with(&glean, &test_data, |_| {
    -            Metric::String("record_with".to_owned())
    +            Metric::String("record_with".to_owned())
             });
             db.iter_store_from(
                 Lifetime::Ping,
    @@ -3480,8 +3481,8 @@
                         test_metric_id
                     );
                     match metric {
    -                    Metric::String(v) => assert_eq!("record_with", *v),
    -                    _ => panic!("Unexpected data found"),
    +                    Metric::String(v) => assert_eq!("record_with", *v),
    +                    _ => panic!("Unexpected data found"),
                     }
                 },
             );
    @@ -3491,7 +3492,7 @@
     
             // Attempt to record metric with the record and record_with functions,
             // this should work since upload is now **disabled**.
    -        db.record(&glean, &test_data, &Metric::String("record_nop".to_owned()));
    +        db.record(&glean, &test_data, &Metric::String("record_nop".to_owned()));
             db.iter_store_from(
                 Lifetime::Ping,
                 test_storage,
    @@ -3502,13 +3503,13 @@
                         test_metric_id
                     );
                     match metric {
    -                    Metric::String(v) => assert_eq!("record_with", *v),
    -                    _ => panic!("Unexpected data found"),
    +                    Metric::String(v) => assert_eq!("record_with", *v),
    +                    _ => panic!("Unexpected data found"),
                     }
                 },
             );
             db.record_with(&glean, &test_data, |_| {
    -            Metric::String("record_with_nop".to_owned())
    +            Metric::String("record_with_nop".to_owned())
             });
             db.iter_store_from(
                 Lifetime::Ping,
    @@ -3520,8 +3521,8 @@
                         test_metric_id
                     );
                     match metric {
    -                    Metric::String(v) => assert_eq!("record_with", *v),
    -                    _ => panic!("Unexpected data found"),
    +                    Metric::String(v) => assert_eq!("record_with", *v),
    +                    _ => panic!("Unexpected data found"),
                     }
                 },
             );
    @@ -3538,12 +3539,12 @@
                 let dir = tempdir().unwrap();
     
                 // Create database directory structure.
    -            let database_dir = dir.path().join("db");
    -            fs::create_dir_all(&database_dir).expect("create database dir");
    +            let database_dir = dir.path().join("db");
    +            fs::create_dir_all(&database_dir).expect("create database dir");
     
                 // Create empty database file.
    -            let safebin = database_dir.join("data.safe.bin");
    -            let f = File::create(safebin).expect("create database file");
    +            let safebin = database_dir.join("data.safe.bin");
    +            let f = File::create(safebin).expect("create database file");
                 drop(f);
     
                 let db = Database::new(dir.path(), false, 0, Duration::ZERO).unwrap();
    @@ -3551,7 +3552,7 @@
                 assert!(dir.path().exists());
                 assert!(
                     matches!(db.rkv_load_state, RkvLoadState::Err(_)),
    -                "Load error recorded"
    +                "Load error recorded"
                 );
             }
     
    @@ -3560,19 +3561,19 @@
                 let dir = tempdir().unwrap();
     
                 // Create database directory structure.
    -            let database_dir = dir.path().join("db");
    -            fs::create_dir_all(&database_dir).expect("create database dir");
    +            let database_dir = dir.path().join("db");
    +            fs::create_dir_all(&database_dir).expect("create database dir");
     
                 // Create empty database file.
    -            let safebin = database_dir.join("data.safe.bin");
    -            fs::write(safebin, "<broken>").expect("write to database file");
    +            let safebin = database_dir.join("data.safe.bin");
    +            fs::write(safebin, "<broken>").expect("write to database file");
     
                 let db = Database::new(dir.path(), false, 0, Duration::ZERO).unwrap();
     
                 assert!(dir.path().exists());
                 assert!(
                     matches!(db.rkv_load_state, RkvLoadState::Err(_)),
    -                "Load error recorded"
    +                "Load error recorded"
                 );
             }
     
    @@ -3580,34 +3581,34 @@
             fn migration_works_on_startup() {
                 let dir = tempdir().unwrap();
     
    -            let database_dir = dir.path().join("db");
    -            let datamdb = database_dir.join("data.mdb");
    -            let lockmdb = database_dir.join("lock.mdb");
    -            let safebin = database_dir.join("data.safe.bin");
    +            let database_dir = dir.path().join("db");
    +            let datamdb = database_dir.join("data.mdb");
    +            let lockmdb = database_dir.join("lock.mdb");
    +            let safebin = database_dir.join("data.safe.bin");
     
                 assert!(!safebin.exists());
                 assert!(!datamdb.exists());
                 assert!(!lockmdb.exists());
     
    -            let store_name = "store1";
    -            let metric_name = "bool";
    +            let store_name = "store1";
    +            let metric_name = "bool";
                 let key = Database::get_storage_key(store_name, Some(metric_name));
     
                 // Ensure some old data in the LMDB format exists.
                 {
    -                fs::create_dir_all(&database_dir).expect("create dir");
    -                let rkv_db = rkv::Rkv::new::<rkv::backend::Lmdb>(&database_dir).expect("rkv env");
    +                fs::create_dir_all(&database_dir).expect("create dir");
    +                let rkv_db = rkv::Rkv::new::<rkv::backend::Lmdb>(&database_dir).expect("rkv env");
     
                     let store = rkv_db
    -                    .open_single("ping", StoreOptions::create())
    -                    .expect("opened");
    -                let mut writer = rkv_db.write().expect("writer");
    +                    .open_single("ping", StoreOptions::create())
    +                    .expect("opened");
    +                let mut writer = rkv_db.write().expect("writer");
                     let metric = Metric::Boolean(true);
    -                let value = bincode::serialize(&metric).expect("serialized");
    +                let value = bincode::serialize(&metric).expect("serialized");
                     store
                         .put(&mut writer, &key, &Value::Blob(&value))
    -                    .expect("wrote");
    -                writer.commit().expect("committed");
    +                    .expect("wrote");
    +                writer.commit().expect("committed");
     
                     assert!(datamdb.exists());
                     assert!(lockmdb.exists());
    @@ -3617,17 +3618,17 @@
                 // First open should migrate the data.
                 {
                     let db = Database::new(dir.path(), false, 0, Duration::ZERO).unwrap();
    -                let safebin = database_dir.join("data.safe.bin");
    -                assert!(safebin.exists(), "safe-mode file should exist");
    -                assert!(!datamdb.exists(), "LMDB data should be deleted");
    -                assert!(!lockmdb.exists(), "LMDB lock should be deleted");
    +                let safebin = database_dir.join("data.safe.bin");
    +                assert!(safebin.exists(), "safe-mode file should exist");
    +                assert!(!datamdb.exists(), "LMDB data should be deleted");
    +                assert!(!lockmdb.exists(), "LMDB lock should be deleted");
     
                     let mut stored_metrics = vec![];
                     let mut snapshotter = |name: &[u8], metric: &Metric| {
                         let name = str::from_utf8(name).unwrap().to_string();
                         stored_metrics.push((name, metric.clone()))
                     };
    -                db.iter_store_from(Lifetime::Ping, "store1", None, &mut snapshotter);
    +                db.iter_store_from(Lifetime::Ping, "store1", None, &mut snapshotter);
     
                     assert_eq!(1, stored_metrics.len());
                     assert_eq!(metric_name, stored_metrics[0].0);
    @@ -3637,17 +3638,17 @@
                 // Next open should not re-create the LMDB files.
                 {
                     let db = Database::new(dir.path(), false, 0, Duration::ZERO).unwrap();
    -                let safebin = database_dir.join("data.safe.bin");
    -                assert!(safebin.exists(), "safe-mode file exists");
    -                assert!(!datamdb.exists(), "LMDB data should not be recreated");
    -                assert!(!lockmdb.exists(), "LMDB lock should not be recreated");
    +                let safebin = database_dir.join("data.safe.bin");
    +                assert!(safebin.exists(), "safe-mode file exists");
    +                assert!(!datamdb.exists(), "LMDB data should not be recreated");
    +                assert!(!lockmdb.exists(), "LMDB lock should not be recreated");
     
                     let mut stored_metrics = vec![];
                     let mut snapshotter = |name: &[u8], metric: &Metric| {
                         let name = str::from_utf8(name).unwrap().to_string();
                         stored_metrics.push((name, metric.clone()))
                     };
    -                db.iter_store_from(Lifetime::Ping, "store1", None, &mut snapshotter);
    +                db.iter_store_from(Lifetime::Ping, "store1", None, &mut snapshotter);
     
                     assert_eq!(1, stored_metrics.len());
                     assert_eq!(metric_name, stored_metrics[0].0);
    @@ -3659,34 +3660,34 @@
             fn migration_doesnt_overwrite() {
                 let dir = tempdir().unwrap();
     
    -            let database_dir = dir.path().join("db");
    -            let datamdb = database_dir.join("data.mdb");
    -            let lockmdb = database_dir.join("lock.mdb");
    -            let safebin = database_dir.join("data.safe.bin");
    +            let database_dir = dir.path().join("db");
    +            let datamdb = database_dir.join("data.mdb");
    +            let lockmdb = database_dir.join("lock.mdb");
    +            let safebin = database_dir.join("data.safe.bin");
     
                 assert!(!safebin.exists());
                 assert!(!datamdb.exists());
                 assert!(!lockmdb.exists());
     
    -            let store_name = "store1";
    -            let metric_name = "counter";
    +            let store_name = "store1";
    +            let metric_name = "counter";
                 let key = Database::get_storage_key(store_name, Some(metric_name));
     
                 // Ensure some old data in the LMDB format exists.
                 {
    -                fs::create_dir_all(&database_dir).expect("create dir");
    -                let rkv_db = rkv::Rkv::new::<rkv::backend::Lmdb>(&database_dir).expect("rkv env");
    +                fs::create_dir_all(&database_dir).expect("create dir");
    +                let rkv_db = rkv::Rkv::new::<rkv::backend::Lmdb>(&database_dir).expect("rkv env");
     
                     let store = rkv_db
    -                    .open_single("ping", StoreOptions::create())
    -                    .expect("opened");
    -                let mut writer = rkv_db.write().expect("writer");
    +                    .open_single("ping", StoreOptions::create())
    +                    .expect("opened");
    +                let mut writer = rkv_db.write().expect("writer");
                     let metric = Metric::Counter(734); // this value will be ignored
    -                let value = bincode::serialize(&metric).expect("serialized");
    +                let value = bincode::serialize(&metric).expect("serialized");
                     store
                         .put(&mut writer, &key, &Value::Blob(&value))
    -                    .expect("wrote");
    -                writer.commit().expect("committed");
    +                    .expect("wrote");
    +                writer.commit().expect("committed");
     
                     assert!(datamdb.exists());
                     assert!(lockmdb.exists());
    @@ -3694,20 +3695,20 @@
     
                 // Ensure some data exists in the new database.
                 {
    -                fs::create_dir_all(&database_dir).expect("create dir");
    +                fs::create_dir_all(&database_dir).expect("create dir");
                     let rkv_db =
    -                    rkv::Rkv::new::<rkv::backend::SafeMode>(&database_dir).expect("rkv env");
    +                    rkv::Rkv::new::<rkv::backend::SafeMode>(&database_dir).expect("rkv env");
     
                     let store = rkv_db
    -                    .open_single("ping", StoreOptions::create())
    -                    .expect("opened");
    -                let mut writer = rkv_db.write().expect("writer");
    +                    .open_single("ping", StoreOptions::create())
    +                    .expect("opened");
    +                let mut writer = rkv_db.write().expect("writer");
                     let metric = Metric::Counter(2);
    -                let value = bincode::serialize(&metric).expect("serialized");
    +                let value = bincode::serialize(&metric).expect("serialized");
                     store
                         .put(&mut writer, &key, &Value::Blob(&value))
    -                    .expect("wrote");
    -                writer.commit().expect("committed");
    +                    .expect("wrote");
    +                writer.commit().expect("committed");
     
                     assert!(safebin.exists());
                 }
    @@ -3716,17 +3717,17 @@
                 // It also deletes the leftover LMDB database.
                 {
                     let db = Database::new(dir.path(), false, 0, Duration::ZERO).unwrap();
    -                let safebin = database_dir.join("data.safe.bin");
    -                assert!(safebin.exists(), "safe-mode file should exist");
    -                assert!(!datamdb.exists(), "LMDB data should be deleted");
    -                assert!(!lockmdb.exists(), "LMDB lock should be deleted");
    +                let safebin = database_dir.join("data.safe.bin");
    +                assert!(safebin.exists(), "safe-mode file should exist");
    +                assert!(!datamdb.exists(), "LMDB data should be deleted");
    +                assert!(!lockmdb.exists(), "LMDB lock should be deleted");
     
                     let mut stored_metrics = vec![];
                     let mut snapshotter = |name: &[u8], metric: &Metric| {
                         let name = str::from_utf8(name).unwrap().to_string();
                         stored_metrics.push((name, metric.clone()))
                     };
    -                db.iter_store_from(Lifetime::Ping, "store1", None, &mut snapshotter);
    +                db.iter_store_from(Lifetime::Ping, "store1", None, &mut snapshotter);
     
                     assert_eq!(1, stored_metrics.len());
                     assert_eq!(metric_name, stored_metrics[0].0);
    @@ -3738,60 +3739,60 @@
             fn migration_ignores_broken_database() {
                 let dir = tempdir().unwrap();
     
    -            let database_dir = dir.path().join("db");
    -            let datamdb = database_dir.join("data.mdb");
    -            let lockmdb = database_dir.join("lock.mdb");
    -            let safebin = database_dir.join("data.safe.bin");
    +            let database_dir = dir.path().join("db");
    +            let datamdb = database_dir.join("data.mdb");
    +            let lockmdb = database_dir.join("lock.mdb");
    +            let safebin = database_dir.join("data.safe.bin");
     
                 assert!(!safebin.exists());
                 assert!(!datamdb.exists());
                 assert!(!lockmdb.exists());
     
    -            let store_name = "store1";
    -            let metric_name = "counter";
    +            let store_name = "store1";
    +            let metric_name = "counter";
                 let key = Database::get_storage_key(store_name, Some(metric_name));
     
                 // Ensure some old data in the LMDB format exists.
                 {
    -                fs::create_dir_all(&database_dir).expect("create dir");
    -                fs::write(&datamdb, "bogus").expect("dbfile created");
    +                fs::create_dir_all(&database_dir).expect("create dir");
    +                fs::write(&datamdb, "bogus").expect("dbfile created");
     
                     assert!(datamdb.exists());
                 }
     
                 // Ensure some data exists in the new database.
                 {
    -                fs::create_dir_all(&database_dir).expect("create dir");
    +                fs::create_dir_all(&database_dir).expect("create dir");
                     let rkv_db =
    -                    rkv::Rkv::new::<rkv::backend::SafeMode>(&database_dir).expect("rkv env");
    +                    rkv::Rkv::new::<rkv::backend::SafeMode>(&database_dir).expect("rkv env");
     
                     let store = rkv_db
    -                    .open_single("ping", StoreOptions::create())
    -                    .expect("opened");
    -                let mut writer = rkv_db.write().expect("writer");
    +                    .open_single("ping", StoreOptions::create())
    +                    .expect("opened");
    +                let mut writer = rkv_db.write().expect("writer");
                     let metric = Metric::Counter(2);
    -                let value = bincode::serialize(&metric).expect("serialized");
    +                let value = bincode::serialize(&metric).expect("serialized");
                     store
                         .put(&mut writer, &key, &Value::Blob(&value))
    -                    .expect("wrote");
    -                writer.commit().expect("committed");
    +                    .expect("wrote");
    +                writer.commit().expect("committed");
                 }
     
                 // First open should try migration and ignore it, because destination is not empty.
                 // It also deletes the leftover LMDB database.
                 {
                     let db = Database::new(dir.path(), false, 0, Duration::ZERO).unwrap();
    -                let safebin = database_dir.join("data.safe.bin");
    -                assert!(safebin.exists(), "safe-mode file should exist");
    -                assert!(!datamdb.exists(), "LMDB data should be deleted");
    -                assert!(!lockmdb.exists(), "LMDB lock should be deleted");
    +                let safebin = database_dir.join("data.safe.bin");
    +                assert!(safebin.exists(), "safe-mode file should exist");
    +                assert!(!datamdb.exists(), "LMDB data should be deleted");
    +                assert!(!lockmdb.exists(), "LMDB lock should be deleted");
     
                     let mut stored_metrics = vec![];
                     let mut snapshotter = |name: &[u8], metric: &Metric| {
                         let name = str::from_utf8(name).unwrap().to_string();
                         stored_metrics.push((name, metric.clone()))
                     };
    -                db.iter_store_from(Lifetime::Ping, "store1", None, &mut snapshotter);
    +                db.iter_store_from(Lifetime::Ping, "store1", None, &mut snapshotter);
     
                     assert_eq!(1, stored_metrics.len());
                     assert_eq!(metric_name, stored_metrics[0].0);
    @@ -3803,10 +3804,10 @@
             fn migration_ignores_empty_database() {
                 let dir = tempdir().unwrap();
     
    -            let database_dir = dir.path().join("db");
    -            let datamdb = database_dir.join("data.mdb");
    -            let lockmdb = database_dir.join("lock.mdb");
    -            let safebin = database_dir.join("data.safe.bin");
    +            let database_dir = dir.path().join("db");
    +            let datamdb = database_dir.join("data.mdb");
    +            let lockmdb = database_dir.join("lock.mdb");
    +            let safebin = database_dir.join("data.safe.bin");
     
                 assert!(!safebin.exists());
                 assert!(!datamdb.exists());
    @@ -3814,8 +3815,8 @@
     
                 // Ensure old LMDB database exists, but is empty.
                 {
    -                fs::create_dir_all(&database_dir).expect("create dir");
    -                let rkv_db = rkv::Rkv::new::<rkv::backend::Lmdb>(&database_dir).expect("rkv env");
    +                fs::create_dir_all(&database_dir).expect("create dir");
    +                let rkv_db = rkv::Rkv::new::<rkv::backend::Lmdb>(&database_dir).expect("rkv env");
                     drop(rkv_db);
                     assert!(datamdb.exists());
                     assert!(lockmdb.exists());
    @@ -3826,13 +3827,12 @@
                 // It also deletes the leftover LMDB database.
                 {
                     let _db = Database::new(dir.path(), false, 0, Duration::ZERO).unwrap();
    -                let safebin = database_dir.join("data.safe.bin");
    -                assert!(!safebin.exists(), "safe-mode file should exist");
    -                assert!(!datamdb.exists(), "LMDB data should be deleted");
    -                assert!(!lockmdb.exists(), "LMDB lock should be deleted");
    +                let safebin = database_dir.join("data.safe.bin");
    +                assert!(!safebin.exists(), "safe-mode file should exist");
    +                assert!(!datamdb.exists(), "LMDB data should be deleted");
    +                assert!(!lockmdb.exists(), "LMDB lock should be deleted");
                 }
             }
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/debug.rs.html b/docs/src/glean_core/debug.rs.html index 77a5bab2c7..8dde2f9081 100644 --- a/docs/src/glean_core/debug.rs.html +++ b/docs/src/glean_core/debug.rs.html @@ -1,4 +1,5 @@ -debug.rs - source
    1
    +debug.rs - source
    +    
    1
     2
     3
     4
    @@ -316,7 +317,7 @@
     316
     317
     318
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -331,9 +332,9 @@
     //!
     //! * **Ping logging** - logging the contents of ping requests that are correctly assembled;
     //!         This may be set by calling glean.set_log_pings(value: bool)
    -//!         or by setting the environment variable GLEAN_LOG_PINGS="true";
    +//!         or by setting the environment variable GLEAN_LOG_PINGS="true";
     //! * **Debug tagging** - Adding the X-Debug-ID header to every ping request,
    -//!         allowing these tagged pings to be sent to the ["Ping Debug Viewer"](https://mozilla.github.io/glean/book/dev/core/internal/debug-pings.html).
    +//!         allowing these tagged pings to be sent to the ["Ping Debug Viewer"](https://mozilla.github.io/glean/book/dev/core/internal/debug-pings.html).
     //!         This may be set by calling glean.set_debug_view_tag(value: &str)
     //!         or by setting the environment variable `GLEAN_DEBUG_VIEW_TAG=<some tag>`;
     //! * **Source tagging** - Adding the X-Source-Tags header to every ping request,
    @@ -345,12 +346,12 @@
     
     use std::env;
     
    -const GLEAN_LOG_PINGS: &str = "GLEAN_LOG_PINGS";
    -const GLEAN_DEBUG_VIEW_TAG: &str = "GLEAN_DEBUG_VIEW_TAG";
    -const GLEAN_SOURCE_TAGS: &str = "GLEAN_SOURCE_TAGS";
    +const GLEAN_LOG_PINGS: &str = "GLEAN_LOG_PINGS";
    +const GLEAN_DEBUG_VIEW_TAG: &str = "GLEAN_DEBUG_VIEW_TAG";
    +const GLEAN_SOURCE_TAGS: &str = "GLEAN_SOURCE_TAGS";
     const GLEAN_MAX_SOURCE_TAGS: usize = 5;
     
    -/// A representation of all of Glean's debug options.
    +/// A representation of all of Glean's debug options.
     pub struct DebugOptions {
         /// Option to log the payload of pings that are successfully assembled into a ping request.
         pub log_pings: DebugOption<bool>,
    @@ -363,10 +364,10 @@
     
     impl std::fmt::Debug for DebugOptions {
         fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
    -        fmt.debug_struct("DebugOptions")
    -            .field("log_pings", &self.log_pings.get())
    -            .field("debug_view_tag", &self.debug_view_tag.get())
    -            .field("source_tags", &self.source_tags.get())
    +        fmt.debug_struct("DebugOptions")
    +            .field("log_pings", &self.log_pings.get())
    +            .field("debug_view_tag", &self.debug_view_tag.get())
    +            .field("source_tags", &self.source_tags.get())
                 .finish()
         }
     }
    @@ -439,7 +440,7 @@
                     }
                     None => {
                         log::error!(
    -                        "Unable to parse debug option {}={} into {}. Ignoring.",
    +                        "Unable to parse debug option {}={} into {}. Ignoring.",
                             self.env,
                             env_value,
                             std::any::type_name::<T>()
    @@ -447,7 +448,7 @@
                     }
                 },
                 Err(env::VarError::NotUnicode(_)) => {
    -                log::error!("The value of {} is not valid unicode. Ignoring.", self.env)
    +                log::error!("The value of {} is not valid unicode. Ignoring.", self.env)
                 }
                 // The other possible error is that the env var is not set,
                 // which is not an error for us and can safely be ignored.
    @@ -465,11 +466,11 @@
         pub fn set(&mut self, value: T) -> bool {
             let validated = self.validate(&value);
             if validated {
    -            log::info!("Setting the debug option {}.", self.env);
    +            log::info!("Setting the debug option {}.", self.env);
                 self.value = Some(value);
                 return true;
             }
    -        log::error!("Invalid value for debug option {}.", self.env);
    +        log::error!("Invalid value for debug option {}.", self.env);
             false
         }
     
    @@ -489,20 +490,20 @@
             return None;
         }
     
    -    Some(trimmed.split(',').map(|s| s.trim().to_string()).collect())
    +    Some(trimmed.split(',').map(|s| s.trim().to_string()).collect())
     }
     
     /// A tag is the value used in both the `X-Debug-ID` and `X-Source-Tags` headers
     /// of tagged ping requests, thus is it must be a valid header value.
     ///
    -/// In other words, it must match the regex: "[a-zA-Z0-9-]{1,20}"
    +/// In other words, it must match the regex: "[a-zA-Z0-9-]{1,20}"
     ///
    -/// The regex crate isn't used here because it adds to the binary size,
    -/// and the Glean SDK doesn't use regular expressions anywhere else.
    +/// The regex crate isn't used here because it adds to the binary size,
    +/// and the Glean SDK doesn't use regular expressions anywhere else.
     #[allow(clippy::ptr_arg)]
     fn validate_tag(value: &String) -> bool {
         if value.is_empty() {
    -        log::error!("A tag must have at least one character.");
    +        log::error!("A tag must have at least one character.");
             return false;
         }
     
    @@ -514,16 +515,16 @@
                 // We are done, so the whole expression is valid.
                 None => return true,
                 // Valid characters.
    -            Some('-') | Some('a'..='z') | Some('A'..='Z') | Some('0'..='9') => (),
    +            Some('-') | Some('a'..='z') | Some('A'..='Z') | Some('0'..='9') => (),
                 // An invalid character
                 Some(c) => {
    -                log::error!("Invalid character '{}' in the tag.", c);
    +                log::error!("Invalid character '{}' in the tag.", c);
                     return false;
                 }
             }
             count += 1;
             if count == 20 {
    -            log::error!("A tag cannot exceed 20 characters.");
    +            log::error!("A tag cannot exceed 20 characters.");
                 return false;
             }
         }
    @@ -541,14 +542,14 @@
     
         if tags.len() > GLEAN_MAX_SOURCE_TAGS {
             log::error!(
    -            "A list of tags cannot contain more than {} elements.",
    +            "A list of tags cannot contain more than {} elements.",
                 GLEAN_MAX_SOURCE_TAGS
             );
             return false;
         }
     
    -    if tags.iter().any(|s| s.starts_with("glean")) {
    -        log::error!("Tags starting with `glean` are reserved and must not be used.");
    +    if tags.iter().any(|s| s.starts_with("glean")) {
    +        log::error!("Tags starting with `glean` are reserved and must not be used.");
             return false;
         }
     
    @@ -561,78 +562,77 @@
     
         #[test]
         fn debug_option_is_correctly_loaded_from_env() {
    -        env::set_var("GLEAN_TEST_1", "test");
    -        let option: DebugOption<String> = DebugOption::new("GLEAN_TEST_1", Some, None);
    -        assert_eq!(option.get().unwrap(), "test");
    +        env::set_var("GLEAN_TEST_1", "test");
    +        let option: DebugOption<String> = DebugOption::new("GLEAN_TEST_1", Some, None);
    +        assert_eq!(option.get().unwrap(), "test");
         }
     
         #[test]
         fn debug_option_is_correctly_validated_when_necessary() {
             #[allow(clippy::ptr_arg)]
             fn validate(value: &String) -> bool {
    -            value == "test"
    +            value == "test"
             }
     
             // Invalid values from the env are not set
    -        env::set_var("GLEAN_TEST_2", "invalid");
    +        env::set_var("GLEAN_TEST_2", "invalid");
             let mut option: DebugOption<String> =
    -            DebugOption::new("GLEAN_TEST_2", Some, Some(validate));
    +            DebugOption::new("GLEAN_TEST_2", Some, Some(validate));
             assert!(option.get().is_none());
     
             // Valid values are set using the `set` function
    -        assert!(option.set("test".into()));
    -        assert_eq!(option.get().unwrap(), "test");
    +        assert!(option.set("test".into()));
    +        assert_eq!(option.get().unwrap(), "test");
     
             // Invalid values are not set using the `set` function
    -        assert!(!option.set("invalid".into()));
    -        assert_eq!(option.get().unwrap(), "test");
    +        assert!(!option.set("invalid".into()));
    +        assert_eq!(option.get().unwrap(), "test");
         }
     
         #[test]
         fn tokenize_string_splits_correctly() {
             // Valid list is properly tokenized and spaces are trimmed.
             assert_eq!(
    -            Some(vec!["test1".to_string(), "test2".to_string()]),
    -            tokenize_string("    test1,        test2  ".to_string())
    +            Some(vec!["test1".to_string(), "test2".to_string()]),
    +            tokenize_string("    test1,        test2  ".to_string())
             );
     
             // Empty strings return no item.
    -        assert_eq!(None, tokenize_string("".to_string()));
    +        assert_eq!(None, tokenize_string("".to_string()));
         }
     
         #[test]
         fn validates_tag_correctly() {
    -        assert!(validate_tag(&"valid-value".to_string()));
    -        assert!(validate_tag(&"-also-valid-value".to_string()));
    -        assert!(!validate_tag(&"invalid_value".to_string()));
    -        assert!(!validate_tag(&"invalid value".to_string()));
    -        assert!(!validate_tag(&"!nv@lid-val*e".to_string()));
    +        assert!(validate_tag(&"valid-value".to_string()));
    +        assert!(validate_tag(&"-also-valid-value".to_string()));
    +        assert!(!validate_tag(&"invalid_value".to_string()));
    +        assert!(!validate_tag(&"invalid value".to_string()));
    +        assert!(!validate_tag(&"!nv@lid-val*e".to_string()));
             assert!(!validate_tag(
    -            &"invalid-value-because-way-too-long".to_string()
    +            &"invalid-value-because-way-too-long".to_string()
             ));
    -        assert!(!validate_tag(&"".to_string()));
    +        assert!(!validate_tag(&"".to_string()));
         }
     
         #[test]
         fn validates_source_tags_correctly() {
             // Empty tags.
    -        assert!(!validate_source_tags(&vec!["".to_string()]));
    +        assert!(!validate_source_tags(&vec!["".to_string()]));
             // Too many tags.
             assert!(!validate_source_tags(&vec![
    -            "1".to_string(),
    -            "2".to_string(),
    -            "3".to_string(),
    -            "4".to_string(),
    -            "5".to_string(),
    -            "6".to_string()
    +            "1".to_string(),
    +            "2".to_string(),
    +            "3".to_string(),
    +            "4".to_string(),
    +            "5".to_string(),
    +            "6".to_string()
             ]));
             // Invalid tags.
    -        assert!(!validate_source_tags(&vec!["!nv@lid-val*e".to_string()]));
    +        assert!(!validate_source_tags(&vec!["!nv@lid-val*e".to_string()]));
             assert!(!validate_source_tags(&vec![
    -            "glean-test1".to_string(),
    -            "test2".to_string()
    +            "glean-test1".to_string(),
    +            "test2".to_string()
             ]));
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/dispatcher/global.rs.html b/docs/src/glean_core/dispatcher/global.rs.html index a901755353..36f33a1dfb 100644 --- a/docs/src/glean_core/dispatcher/global.rs.html +++ b/docs/src/glean_core/dispatcher/global.rs.html @@ -1,4 +1,5 @@ -global.rs - source
    1
    +global.rs - source
    +    
    1
     2
     3
     4
    @@ -227,7 +228,7 @@
     227
     228
     229
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -273,25 +274,25 @@
     /// This will not block.
     ///
     /// [`flush_init`]: fn.flush_init.html
    -pub fn launch(task: impl FnOnce() + Send + 'static) {
    +pub fn launch(task: impl FnOnce() + Send + 'static) {
         let current_thread = thread::current();
    -    if let Some("glean.shutdown") = current_thread.name() {
    -        log::error!("Tried to launch a task from the shutdown thread. That is forbidden.");
    +    if let Some("glean.shutdown") = current_thread.name() {
    +        log::error!("Tried to launch a task from the shutdown thread. That is forbidden.");
         }
     
         let guard = guard();
         match guard.launch(task) {
             Ok(_) => {}
             Err(DispatchError::QueueFull) => {
    -            log::info!("Exceeded maximum queue size, discarding task");
    +            log::info!("Exceeded maximum queue size, discarding task");
                 // TODO: Record this as an error.
             }
             Err(_) => {
    -            log::info!("Failed to launch a task on the queue. Discarding task.");
    +            log::info!("Failed to launch a task on the queue. Discarding task.");
             }
         }
     
    -    // In test mode wait for the execution, unless we're still queueing tasks.
    +    // In test mode wait for the execution, unless we're still queueing tasks.
         let is_queueing = QUEUE_TASKS.load(Ordering::SeqCst);
         let is_test = TESTING_MODE.load(Ordering::SeqCst);
         if !is_queueing && is_test {
    @@ -317,7 +318,7 @@
     /// # Returns
     ///
     /// Returns the total number of items that were added to the queue before being flushed,
    -/// or an error if the queue couldn't be flushed.
    +/// or an error if the queue couldn't be flushed.
     pub fn flush_init() -> Result<usize, DispatchError> {
         guard().flush_init()
     }
    @@ -326,7 +327,7 @@
         // After we issue the shutdown command, make sure to wait for the
         // worker thread to join.
         let mut lock = GLOBAL_DISPATCHER.write().unwrap();
    -    let dispatcher = lock.as_mut().expect("Global dispatcher has gone missing");
    +    let dispatcher = lock.as_mut().expect("Global dispatcher has gone missing");
     
         if let Some(worker) = dispatcher.worker.take() {
             return worker.join().map_err(|_| DispatchError::WorkerPanic);
    @@ -357,12 +358,12 @@
     /// TEST ONLY FUNCTION.
     /// Resets the Glean state and triggers init again.
     pub(crate) fn reset_dispatcher() {
    -    // We don't care about shutdown errors, since they will
    +    // We don't care about shutdown errors, since they will
         // definitely happen if this is run concurrently.
         // We will still replace the global dispatcher.
         let _ = shutdown();
     
    -    // New dispatcher = we're queuing again.
    +    // New dispatcher = we're queuing again.
         QUEUE_TASKS.store(true, Ordering::SeqCst);
     
         // Now that the dispatcher is shut down, replace it.
    @@ -382,7 +383,7 @@
         use super::*;
     
         #[test]
    -    #[ignore] // We can't reset the queue at the moment, so filling it up breaks other tests.
    +    #[ignore] // We can't reset the queue at the moment, so filling it up breaks other tests.
         fn global_fills_up_in_order_and_works() {
             let _ = env_logger::builder().is_test(true).try_init();
     
    @@ -419,7 +420,7 @@
         }
     
         #[test]
    -    #[ignore] // We can't reset the queue at the moment, so flushing it breaks other tests.
    +    #[ignore] // We can't reset the queue at the moment, so flushing it breaks other tests.
         fn global_nested_calls() {
             let _ = env_logger::builder().is_test(true).try_init();
     
    @@ -456,5 +457,4 @@
             assert_eq!(&*result.lock().unwrap(), &expected);
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/dispatcher/mod.rs.html b/docs/src/glean_core/dispatcher/mod.rs.html index 48aaf5c716..f05c0683e9 100644 --- a/docs/src/glean_core/dispatcher/mod.rs.html +++ b/docs/src/glean_core/dispatcher/mod.rs.html @@ -1,4 +1,5 @@ -mod.rs - source
    1
    +mod.rs - source
    +    
    1
     2
     3
     4
    @@ -588,7 +589,7 @@
     588
     589
     590
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -603,12 +604,12 @@
     //! dispatcher::flush_init();
     //!
     //! dispatcher::launch(|| {
    -//!     println!("Executing expensive task");
    +//!     println!("Executing expensive task");
     //!     // Run your expensive task in a separate thread.
     //! });
     //!
     //! dispatcher::launch(|| {
    -//!     println!("A second task that's executed sequentially, but off the main thread.");
    +//!     println!("A second task that's executed sequentially, but off the main thread.");
     //! });
     //! ```
     
    @@ -653,23 +654,23 @@
     #[derive(Error, Debug, PartialEq, Eq)]
     pub enum DispatchError {
         /// The worker panicked while running a task
    -    #[error("The worker panicked while running a task")]
    +    #[error("The worker panicked while running a task")]
         WorkerPanic,
     
         /// Maximum queue size reached
    -    #[error("Maximum queue size reached")]
    +    #[error("Maximum queue size reached")]
         QueueFull,
     
         /// Pre-init buffer was already flushed
    -    #[error("Pre-init buffer was already flushed")]
    +    #[error("Pre-init buffer was already flushed")]
         AlreadyFlushed,
     
         /// Failed to send command to worker thread
    -    #[error("Failed to send command to worker thread")]
    +    #[error("Failed to send command to worker thread")]
         SendError,
     
         /// Failed to receive from channel
    -    #[error("Failed to receive from channel")]
    +    #[error("Failed to receive from channel")]
         RecvError(#[from] crossbeam_channel::RecvError),
     }
     
    @@ -702,7 +703,7 @@
     }
     
     impl DispatchGuard {
    -    pub fn launch(&self, task: impl FnOnce() + Send + 'static) -> Result<(), DispatchError> {
    +    pub fn launch(&self, task: impl FnOnce() + Send + 'static) -> Result<(), DispatchError> {
             let task = Command::Task(Box::new(task));
             self.send(task)
         }
    @@ -735,28 +736,28 @@
         fn block_on_queue(&self) {
             let (tx, rx) = crossbeam_channel::bounded(0);
     
    -        // We explicitly don't use `self.launch` here.
    +        // We explicitly don't use `self.launch` here.
             // We always put this task on the unbounded queue.
             // The pre-init queue might be full before its flushed, in which case this would panic.
             // Blocking on the queue can only work if it is eventually flushed anyway.
     
             let task = Command::Task(Box::new(move || {
                 tx.send(())
    -                .expect("(worker) Can't send message on single-use channel");
    +                .expect("(worker) Can't send message on single-use channel");
             }));
             self.sender
                 .send(task)
    -            .expect("Failed to launch the blocking task");
    +            .expect("Failed to launch the blocking task");
     
             rx.recv()
    -            .expect("Failed to receive message on single-use channel");
    +            .expect("Failed to receive message on single-use channel");
         }
     
         /// Block on the task queue emptying, with a timeout.
         fn block_on_queue_timeout(&self, timeout: Duration) -> Result<(), RecvTimeoutError> {
             let (tx, rx) = crossbeam_channel::bounded(0);
     
    -        // We explicitly don't use `self.launch` here.
    +        // We explicitly don't use `self.launch` here.
             // We always put this task on the unbounded queue.
             // The pre-init queue might be full before its flushed, in which case this would panic.
             // Blocking on the queue can only work if it is eventually flushed anyway.
    @@ -764,12 +765,12 @@
             let task = Command::Task(Box::new(move || {
                 // In case the calling thread times out waiting for this
                 // the channel will be dropped.
    -            // But in case the work continues we don't want to panic.
    +            // But in case the work continues we don't want to panic.
                 _ = tx.send(());
             }));
             self.sender
                 .send(task)
    -            .expect("Failed to launch the blocking task");
    +            .expect("Failed to launch the blocking task");
     
             rx.recv_timeout(timeout)
         }
    @@ -814,7 +815,7 @@
             // This blocks until all tasks in the preinit buffer have been processed.
             swap_receiver.recv()?;
     
    -        // We're not queueing anymore.
    +        // We're not queueing anymore.
             global::QUEUE_TASKS.store(false, Ordering::SeqCst);
     
             let overflow_count = self.overflow_count.load(Ordering::SeqCst);
    @@ -844,7 +845,7 @@
     impl Dispatcher {
         /// Creates a new dispatcher with a maximum queue size.
         ///
    -    /// Launched tasks won't run until [`flush_init`] is called.
    +    /// Launched tasks won't run until [`flush_init`] is called.
         ///
         /// [`flush_init`]: #method.flush_init
         pub fn new(max_queue_size: usize) -> Self {
    @@ -856,13 +857,13 @@
             let overflow_count = Arc::new(AtomicUsize::new(0));
     
             let worker = thread::Builder::new()
    -            .name("glean.dispatcher".into())
    +            .name("glean.dispatcher".into())
                 .spawn(move || {
                     match block_receiver.recv() {
                         Err(_) => {
                             // The other side was disconnected.
    -                        // There's nothing the worker thread can do.
    -                        log::error!("The task producer was disconnected. Worker thread will exit.");
    +                        // There's nothing the worker thread can do.
    +                        log::error!("The task producer was disconnected. Worker thread will exit.");
                             return;
                         }
                         Ok(Blocked::Shutdown) => {
    @@ -901,20 +902,20 @@
                                 // We can notify the other side.
                                 swap_done
                                     .send(())
    -                                .expect("The caller of `flush_init` has gone missing");
    +                                .expect("The caller of `flush_init` has gone missing");
                             }
     
                             // Other side was disconnected.
                             Err(_) => {
                                 log::error!(
    -                                "The task producer was disconnected. Worker thread will exit."
    +                                "The task producer was disconnected. Worker thread will exit."
                                 );
                                 return;
                             }
                         }
                     }
                 })
    -            .expect("Failed to spawn Glean's dispatcher thread");
    +            .expect("Failed to spawn Glean's dispatcher thread");
     
             let guard = DispatchGuard {
                 queue_preinit,
    @@ -972,7 +973,7 @@
             dispatcher
                 .guard()
                 .flush_init()
    -            .expect("Failed to get out of preinit queue mode");
    +            .expect("Failed to get out of preinit queue mode");
     
             let canary_clone = thread_canary.clone();
             dispatcher
    @@ -984,7 +985,7 @@
                     assert!(!canary_clone.load(Ordering::SeqCst));
                     canary_clone.store(true, Ordering::SeqCst);
                 })
    -            .expect("Failed to dispatch the test task");
    +            .expect("Failed to dispatch the test task");
     
             dispatcher.guard().block_on_queue();
             assert!(thread_canary.load(Ordering::SeqCst));
    @@ -1011,7 +1012,7 @@
                         assert!(thread::current().id() != main_thread_id);
                         canary_clone.fetch_add(1, Ordering::SeqCst);
                     })
    -                .expect("Failed to dispatch the test task");
    +                .expect("Failed to dispatch the test task");
             }
     
             // Ensure that no task ran.
    @@ -1021,7 +1022,7 @@
             dispatcher
                 .guard()
                 .flush_init()
    -            .expect("Failed to get out of preinit queue mode");
    +            .expect("Failed to get out of preinit queue mode");
             // Validate that we have the expected canary value.
             assert_eq!(3, thread_canary.load(Ordering::SeqCst));
         }
    @@ -1137,7 +1138,7 @@
         fn normal_queue_is_unbounded() {
             enable_test_logging();
     
    -        // Note: We can't actually test that it's fully unbounded,
    +        // Note: We can't actually test that it's fully unbounded,
             // but we can quickly queue more slow tasks than the pre-init buffer holds
             // and then guarantuee they all run.
     
    @@ -1178,5 +1179,4 @@
             assert_eq!(&*result.lock().unwrap(), &expected);
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/error.rs.html b/docs/src/glean_core/error.rs.html index f6c20ba813..345ccd65a9 100644 --- a/docs/src/glean_core/error.rs.html +++ b/docs/src/glean_core/error.rs.html @@ -1,4 +1,5 @@ -error.rs - source
    1
    +error.rs - source
    +    
    1
     2
     3
     4
    @@ -167,7 +168,7 @@
     167
     168
     169
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -178,7 +179,7 @@
     
     use rkv::StoreError;
     
    -/// A specialized [`Result`] type for this crate's operations.
    +/// A specialized [`Result`] type for this crate's operations.
     ///
     /// This is generally used to avoid writing out [`Error`] directly and
     /// is otherwise a direct mapping to [`Result`].
    @@ -233,7 +234,7 @@
         PingBodyOverflow(usize),
     }
     
    -/// A specialized [`Error`] type for this crate's operations.
    +/// A specialized [`Error`] type for this crate's operations.
     ///
     /// [`Error`]: https://doc.rust-lang.org/stable/std/error/trait.Error.html
     #[derive(Debug)]
    @@ -267,23 +268,23 @@
     impl std::error::Error for Error {}
     
     impl Display for Error {
    -    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    +    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
             use ErrorKind::*;
             match self.kind() {
    -            Lifetime(l) => write!(f, "Lifetime conversion from {} failed", l),
    -            IoError(e) => write!(f, "An I/O error occurred: {}", e),
    -            Rkv(e) => write!(f, "An Rkv error occurred: {}", e),
    -            Json(e) => write!(f, "A JSON error occurred: {}", e),
    -            TimeUnit(t) => write!(f, "TimeUnit conversion from {} failed", t),
    -            MemoryUnit(m) => write!(f, "MemoryUnit conversion from {} failed", m),
    -            HistogramType(h) => write!(f, "HistogramType conversion from {} failed", h),
    -            OsString(s) => write!(f, "OsString conversion from {:?} failed", s),
    -            Utf8Error => write!(f, "Invalid UTF-8 byte sequence in string"),
    -            InvalidConfig => write!(f, "Invalid Glean configuration provided"),
    -            NotInitialized => write!(f, "Global Glean object missing"),
    +            Lifetime(l) => write!(f, "Lifetime conversion from {} failed", l),
    +            IoError(e) => write!(f, "An I/O error occurred: {}", e),
    +            Rkv(e) => write!(f, "An Rkv error occurred: {}", e),
    +            Json(e) => write!(f, "A JSON error occurred: {}", e),
    +            TimeUnit(t) => write!(f, "TimeUnit conversion from {} failed", t),
    +            MemoryUnit(m) => write!(f, "MemoryUnit conversion from {} failed", m),
    +            HistogramType(h) => write!(f, "HistogramType conversion from {} failed", h),
    +            OsString(s) => write!(f, "OsString conversion from {:?} failed", s),
    +            Utf8Error => write!(f, "Invalid UTF-8 byte sequence in string"),
    +            InvalidConfig => write!(f, "Invalid Glean configuration provided"),
    +            NotInitialized => write!(f, "Global Glean object missing"),
                 PingBodyOverflow(s) => write!(
                     f,
    -                "Ping request body size exceeded maximum size allowed: {}kB.",
    +                "Ping request body size exceeded maximum size allowed: {}kB.",
                     s / 1024
                 ),
             }
    @@ -336,5 +337,4 @@
             unreachable!()
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/error_recording.rs.html b/docs/src/glean_core/error_recording.rs.html index 8ec5b9c9b8..bc02bd50ae 100644 --- a/docs/src/glean_core/error_recording.rs.html +++ b/docs/src/glean_core/error_recording.rs.html @@ -1,4 +1,5 @@ -error_recording.rs - source
    1
    +error_recording.rs - source
    +    
    1
     2
     3
     4
    @@ -236,7 +237,7 @@
     236
     237
     238
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -247,7 +248,7 @@
     //!
     //! Error counts are stored in labeled counters in the `glean.error` category.
     //! The labeled counter metrics that store the errors are defined in the `metrics.yaml` for documentation purposes,
    -//! but are not actually used directly, since the `send_in_pings` value needs to match the pings of the metric that is erroring (plus the "metrics" ping),
    +//! but are not actually used directly, since the `send_in_pings` value needs to match the pings of the metric that is erroring (plus the "metrics" ping),
     //! not some constant value that we could define in `metrics.yaml`.
     
     use std::fmt::Display;
    @@ -264,7 +265,7 @@
     /// Note: the cases in this enum must be kept in sync with the ones
     /// in the platform-specific code (e.g. `ErrorType.kt`) and with the
     /// metrics in the registry files.
    -// When adding a new error type ensure it's also added to `ErrorType::iter()` below.
    +// When adding a new error type ensure it's also added to `ErrorType::iter()` below.
     #[repr(C)]
     #[derive(Copy, Clone, Debug, PartialEq, Eq)]
     pub enum ErrorType {
    @@ -279,13 +280,13 @@
     }
     
     impl ErrorType {
    -    /// The error type's metric id
    -    pub fn as_str(&self) -> &'static str {
    +    /// The error type's metric id
    +    pub fn as_str(&self) -> &'static str {
             match self {
    -            ErrorType::InvalidValue => "invalid_value",
    -            ErrorType::InvalidLabel => "invalid_label",
    -            ErrorType::InvalidState => "invalid_state",
    -            ErrorType::InvalidOverflow => "invalid_overflow",
    +            ErrorType::InvalidValue => "invalid_value",
    +            ErrorType::InvalidLabel => "invalid_label",
    +            ErrorType::InvalidState => "invalid_state",
    +            ErrorType::InvalidOverflow => "invalid_overflow",
             }
         }
     
    @@ -327,21 +328,21 @@
     
     /// For a given metric, get the metric in which to record errors
     fn get_error_metric_for_metric(meta: &CommonMetricDataInternal, error: ErrorType) -> CounterMetric {
    -    // Can't use meta.identifier here, since that might cause infinite recursion
    +    // Can't use meta.identifier here, since that might cause infinite recursion
         // if the label on this metric needs to report an error.
         let identifier = meta.base_identifier();
         let name = strip_label(&identifier);
     
         // Record errors in the pings the metric is in, as well as the metrics ping.
         let mut send_in_pings = meta.inner.send_in_pings.clone();
    -    let ping_name = "metrics".to_string();
    +    let ping_name = "metrics".to_string();
         if !send_in_pings.contains(&ping_name) {
             send_in_pings.push(ping_name);
         }
     
         CounterMetric::new(CommonMetricData {
             name: combine_base_identifier_and_label(error.as_str(), name),
    -        category: "glean.error".into(),
    +        category: "glean.error".into(),
             lifetime: Lifetime::Ping,
             send_in_pings,
             ..Default::default()
    @@ -354,12 +355,12 @@
     ///
     /// *Note*: We do make assumptions here how labeled metrics are encoded, namely by having the name
     /// `<name>/<label>`.
    -/// Errors do not adhere to the usual "maximum label" restriction.
    +/// Errors do not adhere to the usual "maximum label" restriction.
     ///
     /// # Arguments
     ///
     /// * `glean` - The Glean instance containing the database
    -/// * `meta` - The metric's meta data
    +/// * `meta` - The metric's meta data
     /// * `error` -  The error type to record
     /// * `message` - The message to log. This message is not sent with the ping.
     ///             It does not need to include the metric id, as that is automatically prepended to the message.
    @@ -373,7 +374,7 @@
     ) {
         let metric = get_error_metric_for_metric(meta, error);
     
    -    log::warn!("{}: {}", meta.base_identifier(), message);
    +    log::warn!("{}: {}", meta.base_identifier(), message);
         let to_report = num_errors.into().unwrap_or(1);
         debug_assert!(to_report > 0);
         metric.add_sync(glean, to_report);
    @@ -399,9 +400,9 @@
     ) -> Result<i32, String> {
         let metric = get_error_metric_for_metric(meta, error);
     
    -    metric.get_value(glean, Some("metrics")).ok_or_else(|| {
    +    metric.get_value(glean, Some("metrics")).ok_or_else(|| {
             format!(
    -            "No error recorded for {} in 'metrics' store",
    +            "No error recorded for {} in 'metrics' store",
                 meta.base_identifier(),
             )
         })
    @@ -430,9 +431,9 @@
             let (glean, _t) = new_glean(None);
     
             let string_metric = StringMetric::new(CommonMetricData {
    -            name: "string_metric".into(),
    -            category: "telemetry".into(),
    -            send_in_pings: vec!["store1".into(), "store2".into()],
    +            name: "string_metric".into(),
    +            category: "telemetry".into(),
    +            send_in_pings: vec!["store1".into(), "store2".into()],
                 disabled: false,
                 lifetime: Lifetime::User,
                 ..Default::default()
    @@ -445,7 +446,7 @@
                 &glean,
                 string_metric.meta(),
                 ErrorType::InvalidValue,
    -            "Invalid value",
    +            "Invalid value",
                 None,
             );
     
    @@ -453,7 +454,7 @@
                 &glean,
                 string_metric.meta(),
                 ErrorType::InvalidLabel,
    -            "Invalid label",
    +            "Invalid label",
                 expected_invalid_labels_errors,
             );
     
    @@ -461,7 +462,7 @@
                 get_error_metric_for_metric(string_metric.meta(), ErrorType::InvalidValue);
             let invalid_label =
                 get_error_metric_for_metric(string_metric.meta(), ErrorType::InvalidLabel);
    -        for &store in &["store1", "store2", "metrics"] {
    +        for &store in &["store1", "store2", "metrics"] {
                 assert_eq!(
                     Some(expected_invalid_values_errors),
                     invalid_val.get_value(&glean, Some(store))
    @@ -474,5 +475,4 @@
             }
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/event_database/mod.rs.html b/docs/src/glean_core/event_database/mod.rs.html index b999c27b83..12c5a24c76 100644 --- a/docs/src/glean_core/event_database/mod.rs.html +++ b/docs/src/glean_core/event_database/mod.rs.html @@ -1,4 +1,5 @@ -mod.rs - source
    1
    +mod.rs - source
    +    
    1
     2
     3
     4
    @@ -1302,7 +1303,7 @@
     1302
     1303
     1304
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -1340,12 +1341,12 @@
         /// This allows to order events from a single process run.
         pub timestamp: u64,
     
    -    /// The event's category.
    +    /// The event's category.
         ///
         /// This is defined by users in the metrics file.
         pub category: String,
     
    -    /// The event's name.
    +    /// The event's name.
         ///
         /// This is defined by users in the metrics file.
         pub name: String,
    @@ -1353,7 +1354,7 @@
         /// A map of all extra data values.
         ///
         /// The set of allowed extra keys is defined by users in the metrics file.
    -    #[serde(skip_serializing_if = "Option::is_none")]
    +    #[serde(skip_serializing_if = "Option::is_none")]
         pub extra: Option<HashMap<String, String>>,
     }
     
    @@ -1368,7 +1369,7 @@
         /// Included to allow sending of events across Glean restarts (bug 1716725).
         /// Is i32 because it is stored in a CounterMetric.
         #[serde(default)]
    -    #[serde(skip_serializing_if = "Option::is_none")]
    +    #[serde(skip_serializing_if = "Option::is_none")]
         pub execution_counter: Option<i32>,
     }
     
    @@ -1411,7 +1412,7 @@
         /// * `data_path` - The directory to store events in. A new directory
         /// * `events` - will be created inside of this directory.
         pub fn new(data_path: &Path) -> Result<Self> {
    -        let path = data_path.join("events");
    +        let path = data_path.join("events");
             create_dir_all(&path)?;
     
             Ok(Self {
    @@ -1425,16 +1426,16 @@
         ///
         /// This must be called once on application startup, e.g. from
         /// [Glean.initialize], but after we are ready to send pings, since this
    -    /// could potentially collect and send the "events" ping.
    +    /// could potentially collect and send the "events" ping.
         ///
         /// If there are any events queued on disk, it loads them into memory so
         /// that the memory and disk representations are in sync.
         ///
    -    /// If event records for the "events" ping are present, they are assembled into
    -    /// an "events" ping which is submitted immediately with reason "startup".
    +    /// If event records for the "events" ping are present, they are assembled into
    +    /// an "events" ping which is submitted immediately with reason "startup".
         ///
    -    /// If event records for custom pings are present, we increment the custom pings'
    -    /// stores' `execution_counter` and record a `glean.restarted`
    +    /// If event records for custom pings are present, we increment the custom pings'
    +    /// stores' `execution_counter` and record a `glean.restarted`
         /// event with the current client clock in its `glean.startup.date` extra.
         ///
         /// # Arguments
    @@ -1445,7 +1446,7 @@
         ///
         /// # Returns
         ///
    -    /// Whether the "events" ping was submitted.
    +    /// Whether the "events" ping was submitted.
         pub fn flush_pending_events_on_startup(
             &self,
             glean: &Glean,
    @@ -1463,11 +1464,11 @@
                     };
                     // We do not want to be holding the event stores lock when
                     // submitting a ping or recording new events.
    -                let has_events_events = stores_with_events.contains(&"events".to_owned());
    +                let has_events_events = stores_with_events.contains(&"events".to_owned());
                     let glean_restarted_stores = if has_events_events {
                         stores_with_events
                             .into_iter()
    -                        .filter(|store| store != "events")
    +                        .filter(|store| store != "events")
                             .collect()
                     } else {
                         stores_with_events
    @@ -1475,7 +1476,7 @@
                     if !glean_restarted_stores.is_empty() {
                         for store_name in glean_restarted_stores.iter() {
                             CounterMetric::new(CommonMetricData {
    -                            name: "execution_counter".into(),
    +                            name: "execution_counter".into(),
                                 category: store_name.into(),
                                 send_in_pings: vec![INTERNAL_STORAGE.into()],
                                 lifetime: Lifetime::Ping,
    @@ -1484,19 +1485,19 @@
                             .add_sync(glean, 1);
                         }
                         let glean_restarted = CommonMetricData {
    -                        name: "restarted".into(),
    -                        category: "glean".into(),
    +                        name: "restarted".into(),
    +                        category: "glean".into(),
                             send_in_pings: glean_restarted_stores,
                             lifetime: Lifetime::Ping,
                             ..Default::default()
                         };
                         let startup = get_iso_time_string(glean.start_time(), TimeUnit::Minute);
                         let mut extra: HashMap<String, String> =
    -                        [("glean.startup.date".into(), startup)].into();
    +                        [("glean.startup.date".into(), startup)].into();
                         if glean.with_timestamps() {
                             let now = Utc::now();
                             let precise_timestamp = now.timestamp_millis() as u64;
    -                        extra.insert("glean_timestamp".to_string(), precise_timestamp.to_string());
    +                        extra.insert("glean_timestamp".to_string(), precise_timestamp.to_string());
                         }
                         self.record(
                             glean,
    @@ -1505,10 +1506,10 @@
                             Some(extra),
                         );
                     }
    -                has_events_events && glean.submit_ping_by_name("events", Some("startup"))
    +                has_events_events && glean.submit_ping_by_name("events", Some("startup"))
                 }
                 Err(err) => {
    -                log::warn!("Error loading events from disk: {}", err);
    +                log::warn!("Error loading events from disk: {}", err);
                     false
                 }
             }
    @@ -1530,15 +1531,15 @@
                 let entry = entry?;
                 if entry.file_type()?.is_file() {
                     let store_name = entry.file_name().into_string()?;
    -                log::info!("Loading events for {}", store_name);
    +                log::info!("Loading events for {}", store_name);
                     if trim_data_to_registered_pings && glean.get_ping_by_name(&store_name).is_none() {
    -                    log::warn!("Trimming {}'s events", store_name);
    +                    log::warn!("Trimming {}'s events", store_name);
                         if let Err(err) = fs::remove_file(entry.path()) {
                             match err.kind() {
                                 std::io::ErrorKind::NotFound => {
                                     // silently drop this error, the file was already non-existing
                                 }
    -                            _ => log::warn!("Error trimming events file '{}': {}", store_name, err),
    +                            _ => log::warn!("Error trimming events file '{}': {}", store_name, err),
                             }
                         }
                         continue;
    @@ -1579,7 +1580,7 @@
             timestamp: u64,
             extra: Option<HashMap<String, String>>,
         ) -> bool {
    -        // If upload is disabled we don't want to record.
    +        // If upload is disabled we don't want to record.
             if !glean.is_upload_enabled() {
                 return false;
             }
    @@ -1590,7 +1591,7 @@
                 for store_name in meta.inner.send_in_pings.iter() {
                     let store = db.entry(store_name.to_string()).or_default();
                     let execution_counter = CounterMetric::new(CommonMetricData {
    -                    name: "execution_counter".into(),
    +                    name: "execution_counter".into(),
                         category: store_name.into(),
                         send_in_pings: vec![INTERNAL_STORAGE.into()],
                         lifetime: Lifetime::Ping,
    @@ -1610,13 +1611,13 @@
                     let event_json = serde_json::to_string(&event).unwrap(); // safe unwrap, event can always be serialized
                     store.push(event);
                     self.write_event_to_disk(store_name, &event_json);
    -                if store_name == "events" && store.len() == glean.get_max_events() {
    +                if store_name == "events" && store.len() == glean.get_max_events() {
                         submit_max_capacity_event_ping = true;
                     }
                 }
             }
             if submit_max_capacity_event_ping {
    -            glean.submit_ping_by_name("events", Some("max_capacity"));
    +            glean.submit_ping_by_name("events", Some("max_capacity"));
                 true
             } else {
                 false
    @@ -1635,9 +1636,9 @@
                 .create(true)
                 .append(true)
                 .open(self.path.join(store_name))
    -            .and_then(|mut file| writeln!(file, "{}", event_json))
    +            .and_then(|mut file| writeln!(file, "{}", event_json))
             {
    -            log::warn!("IO error writing event to store '{}': {}", store_name, err);
    +            log::warn!("IO error writing event to store '{}': {}", store_name, err);
             }
         }
     
    @@ -1652,10 +1653,10 @@
         ///    breaking ties so that `glean.restarted` comes first.
         /// 2. Remove all initial and final `glean.restarted` events
         /// 3. For each group of events that share a `execution_counter`,
    -    ///    i. calculate the initial `glean.restarted` event's `timestamp`s to be
    +    ///    i. calculate the initial `glean.restarted` event's `timestamp`s to be
         ///       clamp(glean.startup.date - ping_info.start_time, biggest_timestamp_of_previous_group + 1)
    -    ///    ii. normalize each non-`glean-restarted` event's `timestamp`
    -    ///        relative to the `glean.restarted` event's uncalculated `timestamp`
    +    ///    ii. normalize each non-`glean-restarted` event's `timestamp`
    +    ///        relative to the `glean.restarted` event's uncalculated `timestamp`
         /// 4. Remove `execution_counter` and `glean.startup.date` extra keys
         /// 5. Sort by `timestamp`
         ///
    @@ -1666,9 +1667,9 @@
         /// # Arguments
         ///
         /// * `glean` - Used to report errors
    -    /// * `store_name` - The name of the store we're normalizing.
    -    /// * `store` - The store we're to normalize.
    -    /// * `glean_start_time` - Used if the glean.startup.date or ping_info.start_time aren't available. Passed as a parameter to ease unit-testing.
    +    /// * `store_name` - The name of the store we're normalizing.
    +    /// * `store` - The store we're to normalize.
    +    /// * `glean_start_time` - Used if the glean.startup.date or ping_info.start_time aren't available. Passed as a parameter to ease unit-testing.
         fn normalize_store(
             &self,
             glean: &Glean,
    @@ -1677,10 +1678,10 @@
             glean_start_time: DateTime<FixedOffset>,
         ) {
             let is_glean_restarted =
    -            |event: &RecordedEvent| event.category == "glean" && event.name == "restarted";
    +            |event: &RecordedEvent| event.category == "glean" && event.name == "restarted";
             let glean_restarted_meta = |store_name: &str| CommonMetricData {
    -            name: "restarted".into(),
    -            category: "glean".into(),
    +            name: "restarted".into(),
    +            category: "glean".into(),
                 send_in_pings: vec![store_name.into()],
                 lifetime: Lifetime::Ping,
                 ..Default::default()
    @@ -1715,13 +1716,13 @@
                 .unwrap_or(store.len());
             store.drain(..first_event);
             if store.is_empty() {
    -            // There was nothing but `glean.restarted` events. Job's done!
    +            // There was nothing but `glean.restarted` events. Job's done!
                 return;
             }
             // Step 3
             // It is allowed that there might not be any `glean.restarted` event, nor
             // `execution_counter` extra values. (This should always be the case for the
    -        // "events" ping, for instance).
    +        // "events" ping, for instance).
             // Other inconsistencies are evidence of errors, and so are logged.
             let mut cur_ec = 0;
             // The offset within a group of events with the same `execution_counter`.
    @@ -1732,7 +1733,7 @@
             for event in store.iter_mut() {
                 let execution_counter = event.execution_counter.take().unwrap_or(0);
                 if is_glean_restarted(&event.event) {
    -                // We've entered the next "event group".
    +                // We've entered the next "event group".
                     // We need a new epoch based on glean.startup.date - ping_info.start_date
                     cur_ec = execution_counter;
                     let glean_startup_date = event
    @@ -1740,14 +1741,14 @@
                         .extra
                         .as_mut()
                         .and_then(|extra| {
    -                        extra.remove("glean.startup.date").and_then(|date_str| {
    +                        extra.remove("glean.startup.date").and_then(|date_str| {
                                 DateTime::parse_from_str(&date_str, TimeUnit::Minute.format_pattern())
                                     .map_err(|_| {
                                         record_error(
                                             glean,
                                             &glean_restarted_meta(store_name).into(),
                                             ErrorType::InvalidState,
    -                                        format!("Unparseable glean.startup.date '{}'", date_str),
    +                                        format!("Unparseable glean.startup.date '{}'", date_str),
                                             None,
                                         );
                                     })
    @@ -1766,8 +1767,8 @@
                     }
                     let ping_start = DatetimeMetric::new(
                         CommonMetricData {
    -                        name: format!("{}#start", store_name),
    -                        category: "".into(),
    +                        name: format!("{}#start", store_name),
    +                        category: "".into(),
                             send_in_pings: vec![INTERNAL_STORAGE.into()],
                             lifetime: Lifetime::User,
                             ..Default::default()
    @@ -1787,10 +1788,10 @@
                             glean,
                             &glean_restarted_meta(store_name).into(),
                             ErrorType::InvalidValue,
    -                        format!("Time between restart and ping start {} indicates client clock weirdness.", time_from_ping_start_to_glean_restarted),
    +                        format!("Time between restart and ping start {} indicates client clock weirdness.", time_from_ping_start_to_glean_restarted),
                             None,
                         );
    -                    // The client's clock went backwards enough that this event group's
    +                    // The client's clock went backwards enough that this event group's
                         // glean.restarted looks like it happened _before_ the final event of the previous group.
                         // Or, it went ahead enough to overflow u64.
                         // Adjust things so this group starts 1ms after the previous one.
    @@ -1807,12 +1808,12 @@
                         &glean_restarted_meta(store_name).into(),
                         ErrorType::InvalidState,
                         format!(
    -                        "Inconsistent execution counter {} (expected {})",
    +                        "Inconsistent execution counter {} (expected {})",
                             execution_counter, cur_ec
                         ),
                         None,
                     );
    -                // Let's fix cur_ec up and hope this isn't a sign something big is broken.
    +                // Let's fix cur_ec up and hope this isn't a sign something big is broken.
                     cur_ec = execution_counter;
                 }
                 if highest_ts > event.event.timestamp {
    @@ -1823,7 +1824,7 @@
                         &glean_restarted_meta(store_name).into(),
                         ErrorType::InvalidState,
                         format!(
    -                        "Inconsistent previous highest timestamp {} (expected <= {})",
    +                        "Inconsistent previous highest timestamp {} (expected <= {})",
                             highest_ts, event.event.timestamp
                         ),
                         None,
    @@ -1855,7 +1856,7 @@
                 let mut db = self.event_stores.write().unwrap(); // safe unwrap, only error case is poisoning
                 db.get_mut(&store_name.to_string()).and_then(|store| {
                     if !store.is_empty() {
    -                    // Normalization happens in-place, so if we're not clearing,
    +                    // Normalization happens in-place, so if we're not clearing,
                         // operate on a clone.
                         let mut clone;
                         let store = if clear_store {
    @@ -1868,7 +1869,7 @@
                         self.normalize_store(glean, store_name, store, glean.start_time());
                         Some(json!(store))
                     } else {
    -                    log::warn!("Unexpectly got empty event store for '{}'", store_name);
    +                    log::warn!("Unexpectly got empty event store for '{}'", store_name);
                         None
                     }
                 })
    @@ -1886,7 +1887,7 @@
                         std::io::ErrorKind::NotFound => {
                             // silently drop this error, the file was already non-existing
                         }
    -                    _ => log::warn!("Error removing events queue file '{}': {}", store_name, err),
    +                    _ => log::warn!("Error removing events queue file '{}': {}", store_name, err),
                     }
                 }
             }
    @@ -1912,10 +1913,10 @@
         /// Gets the vector of currently stored events for the given event metric in
         /// the given store.
         ///
    -    /// This doesn't clear the stored value.
    -    pub fn test_get_value<'a>(
    -        &'a self,
    -        meta: &'a CommonMetricDataInternal,
    +    /// This doesn't clear the stored value.
    +    pub fn test_get_value<'a>(
    +        &'a self,
    +        meta: &'a CommonMetricDataInternal,
             store_name: &str,
         ) -> Option<Vec<RecordedEvent>> {
             record_coverage(&meta.base_identifier());
    @@ -1951,18 +1952,18 @@
     
             {
                 let db = EventDatabase::new(t.path()).unwrap();
    -            db.write_event_to_disk("events", "{\"timestamp\": 500");
    -            db.write_event_to_disk("events", "{\"timestamp\"");
    +            db.write_event_to_disk("events", "{\"timestamp\": 500");
    +            db.write_event_to_disk("events", "{\"timestamp\"");
                 db.write_event_to_disk(
    -                "events",
    -                "{\"timestamp\": 501, \"category\": \"ui\", \"name\": \"click\"}",
    +                "events",
    +                "{\"timestamp\": 501, \"category\": \"ui\", \"name\": \"click\"}",
                 );
             }
     
             {
                 let db = EventDatabase::new(t.path()).unwrap();
                 db.load_events_from_disk(&glean, false).unwrap();
    -            let events = &db.event_stores.read().unwrap()["events"];
    +            let events = &db.event_stores.read().unwrap()["events"];
                 assert_eq!(1, events.len());
             }
         }
    @@ -1971,17 +1972,17 @@
         fn stable_serialization() {
             let event_empty = RecordedEvent {
                 timestamp: 2,
    -            category: "cat".to_string(),
    -            name: "name".to_string(),
    +            category: "cat".to_string(),
    +            name: "name".to_string(),
                 extra: None,
             };
     
             let mut data = HashMap::new();
    -        data.insert("a key".to_string(), "a value".to_string());
    +        data.insert("a key".to_string(), "a value".to_string());
             let event_data = RecordedEvent {
                 timestamp: 2,
    -            category: "cat".to_string(),
    -            name: "name".to_string(),
    +            category: "cat".to_string(),
    +            name: "name".to_string(),
                 extra: Some(data),
             };
     
    @@ -2006,38 +2007,38 @@
     
         #[test]
         fn deserialize_existing_data() {
    -        let event_empty_json = r#"
    +        let event_empty_json = r#"
     {
    -  "timestamp": 2,
    -  "category": "cat",
    -  "name": "name"
    +  "timestamp": 2,
    +  "category": "cat",
    +  "name": "name"
     }
    -            "#;
    +            "#;
     
    -        let event_data_json = r#"
    +        let event_data_json = r#"
     {
    -  "timestamp": 2,
    -  "category": "cat",
    -  "name": "name",
    -  "extra": {
    -    "a key": "a value"
    +  "timestamp": 2,
    +  "category": "cat",
    +  "name": "name",
    +  "extra": {
    +    "a key": "a value"
       }
     }
    -        "#;
    +        "#;
     
             let event_empty = RecordedEvent {
                 timestamp: 2,
    -            category: "cat".to_string(),
    -            name: "name".to_string(),
    +            category: "cat".to_string(),
    +            name: "name".to_string(),
                 extra: None,
             };
     
             let mut data = HashMap::new();
    -        data.insert("a key".to_string(), "a value".to_string());
    +        data.insert("a key".to_string(), "a value".to_string());
             let event_data = RecordedEvent {
                 timestamp: 2,
    -            category: "cat".to_string(),
    -            name: "name".to_string(),
    +            category: "cat".to_string(),
    +            name: "name".to_string(),
                 extra: Some(data),
             };
     
    @@ -2062,9 +2063,9 @@
             let (mut glean, dir) = new_glean(None);
             let db = EventDatabase::new(dir.path()).unwrap();
     
    -        let test_storage = "test-storage";
    -        let test_category = "category";
    -        let test_name = "name";
    +        let test_storage = "test-storage";
    +        let test_category = "category";
    +        let test_name = "name";
             let test_timestamp = 2;
             let test_meta = CommonMetricDataInternal::new(test_category, test_name, test_storage);
             let event_data = RecordedEvent {
    @@ -2075,7 +2076,7 @@
             };
     
             // Upload is not yet disabled,
    -        // so let's check that everything is getting recorded as expected.
    +        // so let's check that everything is getting recorded as expected.
             db.record(&glean, &test_meta, 2, None);
             {
                 let event_stores = db.event_stores.read().unwrap();
    @@ -2091,7 +2092,7 @@
     
             glean.set_upload_enabled(false);
     
    -        // Now that upload is disabled, let's check nothing is recorded.
    +        // Now that upload is disabled, let's check nothing is recorded.
             db.record(&glean, &test_meta, 2, None);
             {
                 let event_stores = db.event_stores.read().unwrap();
    @@ -2104,12 +2105,12 @@
             // Make sure stores empty of anything but glean.restarted events normalize without issue.
             let (glean, _dir) = new_glean(None);
     
    -        let store_name = "store-name";
    +        let store_name = "store-name";
             let glean_restarted = StoredEvent {
                 event: RecordedEvent {
                     timestamp: 2,
    -                category: "glean".into(),
    -                name: "restarted".into(),
    +                category: "glean".into(),
    +                name: "restarted".into(),
                     extra: None,
                 },
                 execution_counter: None,
    @@ -2141,15 +2142,15 @@
     
         #[test]
         fn normalize_store_of_glean_restarted_on_both_ends() {
    -        // Make sure stores with non-glean.restarted events don't get drained too far.
    +        // Make sure stores with non-glean.restarted events don't get drained too far.
             let (glean, _dir) = new_glean(None);
     
    -        let store_name = "store-name";
    +        let store_name = "store-name";
             let glean_restarted = StoredEvent {
                 event: RecordedEvent {
                     timestamp: 2,
    -                category: "glean".into(),
    -                name: "restarted".into(),
    +                category: "glean".into(),
    +                name: "restarted".into(),
                     extra: None,
                 },
                 execution_counter: None,
    @@ -2157,8 +2158,8 @@
             let not_glean_restarted = StoredEvent {
                 event: RecordedEvent {
                     timestamp: 20,
    -                category: "category".into(),
    -                name: "name".into(),
    +                category: "category".into(),
    +                name: "name".into(),
                     extra: None,
                 },
                 execution_counter: None,
    @@ -2193,12 +2194,12 @@
             // (( works = Initial event gets to be 0, subsequent events get normalized to that 0 ))
             let (glean, _dir) = new_glean(None);
     
    -        let store_name = "store-name";
    +        let store_name = "store-name";
             let glean_restarted = StoredEvent {
                 event: RecordedEvent {
                     timestamp: 2,
    -                category: "glean".into(),
    -                name: "restarted".into(),
    +                category: "glean".into(),
    +                name: "restarted".into(),
                     extra: None,
                 },
                 execution_counter: None,
    @@ -2207,8 +2208,8 @@
             let not_glean_restarted = StoredEvent {
                 event: RecordedEvent {
                     timestamp: timestamps[0],
    -                category: "category".into(),
    -                name: "name".into(),
    +                category: "category".into(),
    +                name: "name".into(),
                     extra: None,
                 },
                 execution_counter: None,
    @@ -2259,19 +2260,19 @@
             //            Subsequent runs figure it out via glean.restarted.date and ping_info.start_time ))
             let (glean, _dir) = new_glean(None);
     
    -        let store_name = "store-name";
    +        let store_name = "store-name";
             let glean_restarted = StoredEvent {
                 event: RecordedEvent {
    -                category: "glean".into(),
    -                name: "restarted".into(),
    +                category: "glean".into(),
    +                name: "restarted".into(),
                     ..Default::default()
                 },
                 execution_counter: None,
             };
             let not_glean_restarted = StoredEvent {
                 event: RecordedEvent {
    -                category: "category".into(),
    -                name: "name".into(),
    +                category: "category".into(),
    +                name: "name".into(),
                     ..Default::default()
                 },
                 execution_counter: None,
    @@ -2284,7 +2285,7 @@
             let some_hour = 16;
             let startup_date = FixedOffset::east(0)
                 .ymd(2022, 11, 24)
    -            .and_hms(some_hour, 29, 0); // TimeUnit::Minute -- don't put seconds
    +            .and_hms(some_hour, 29, 0); // TimeUnit::Minute -- don't put seconds
             let glean_start_time = startup_date.with_hour(some_hour - 1);
             let restarted_ts = 2;
             let mut store = vec![
    @@ -2313,7 +2314,7 @@
                     event: RecordedEvent {
                         extra: Some(
                             [(
    -                            "glean.startup.date".into(),
    +                            "glean.startup.date".into(),
                                 get_iso_time_string(startup_date, TimeUnit::Minute),
                             )]
                             .into(),
    @@ -2338,9 +2339,9 @@
                 &mut store,
                 glean_start_time.unwrap(),
             );
    -        assert_eq!(5, store.len()); // 4 "real" events plus 1 `glean.restarted`
    +        assert_eq!(5, store.len()); // 4 "real" events plus 1 `glean.restarted`
     
    -        // Let's check the first three.
    +        // Let's check the first three.
             for (timestamp, event) in timestamps[..timestamps.len() - 1].iter().zip(store.clone()) {
                 assert_eq!(
                     StoredEvent {
    @@ -2384,19 +2385,19 @@
             // ensure the timestamp math works. Even when the client clock goes backwards.
             let (glean, _dir) = new_glean(None);
     
    -        let store_name = "store-name";
    +        let store_name = "store-name";
             let glean_restarted = StoredEvent {
                 event: RecordedEvent {
    -                category: "glean".into(),
    -                name: "restarted".into(),
    +                category: "glean".into(),
    +                name: "restarted".into(),
                     ..Default::default()
                 },
                 execution_counter: None,
             };
             let not_glean_restarted = StoredEvent {
                 event: RecordedEvent {
    -                category: "category".into(),
    -                name: "name".into(),
    +                category: "category".into(),
    +                name: "name".into(),
                     ..Default::default()
                 },
                 execution_counter: None,
    @@ -2409,7 +2410,7 @@
             let some_hour = 10;
             let startup_date = FixedOffset::east(0)
                 .ymd(2022, 11, 25)
    -            .and_hms(some_hour, 37, 0); // TimeUnit::Minute -- don't put seconds
    +            .and_hms(some_hour, 37, 0); // TimeUnit::Minute -- don't put seconds
             let glean_start_time = startup_date.with_hour(some_hour + 1);
             let restarted_ts = 2;
             let mut store = vec![
    @@ -2431,7 +2432,7 @@
                     event: RecordedEvent {
                         extra: Some(
                             [(
    -                            "glean.startup.date".into(),
    +                            "glean.startup.date".into(),
                                 get_iso_time_string(startup_date, TimeUnit::Minute),
                             )]
                             .into(),
    @@ -2463,9 +2464,9 @@
                 &mut store,
                 glean_start_time.unwrap(),
             );
    -        assert_eq!(5, store.len()); // 4 "real" events plus 1 `glean.restarted`
    +        assert_eq!(5, store.len()); // 4 "real" events plus 1 `glean.restarted`
     
    -        // Let's check the first two.
    +        // Let's check the first two.
             for (timestamp, event) in timestamps[..timestamps.len() - 2].iter().zip(store.clone()) {
                 assert_eq!(
                     StoredEvent {
    @@ -2479,7 +2480,7 @@
                 );
             }
             // The third should be a glean.restarted. Its timestamp should be
    -        // one larger than the largest timestamp seen so far (because that's
    +        // one larger than the largest timestamp seen so far (because that's
             // how we ensure monotonic timestamps when client clocks go backwards).
             assert_eq!(
                 store[2],
    @@ -2508,8 +2509,8 @@
                 test_get_num_recorded_errors(
                     &glean,
                     &CommonMetricData {
    -                    name: "restarted".into(),
    -                    category: "glean".into(),
    +                    name: "restarted".into(),
    +                    category: "glean".into(),
                         send_in_pings: vec![store_name.into()],
                         lifetime: Lifetime::Ping,
                         ..Default::default()
    @@ -2526,12 +2527,12 @@
             // Ensure normalizing a store that begins with non-zero ec works.
             let (glean, _dir) = new_glean(None);
     
    -        let store_name = "store-name";
    +        let store_name = "store-name";
             let glean_restarted = StoredEvent {
                 event: RecordedEvent {
                     timestamp: 2,
    -                category: "glean".into(),
    -                name: "restarted".into(),
    +                category: "glean".into(),
    +                name: "restarted".into(),
                     extra: None,
                 },
                 execution_counter: Some(2),
    @@ -2539,8 +2540,8 @@
             let not_glean_restarted = StoredEvent {
                 event: RecordedEvent {
                     timestamp: 20,
    -                category: "category".into(),
    -                name: "name".into(),
    +                category: "category".into(),
    +                name: "name".into(),
                     extra: None,
                 },
                 execution_counter: Some(2),
    @@ -2548,8 +2549,8 @@
             let glean_restarted_2 = StoredEvent {
                 event: RecordedEvent {
                     timestamp: 2,
    -                category: "glean".into(),
    -                name: "restarted".into(),
    +                category: "glean".into(),
    +                name: "restarted".into(),
                     extra: None,
                 },
                 execution_counter: Some(3),
    @@ -2580,8 +2581,8 @@
             assert!(test_get_num_recorded_errors(
                 &glean,
                 &CommonMetricData {
    -                name: "restarted".into(),
    -                category: "glean".into(),
    +                name: "restarted".into(),
    +                category: "glean".into(),
                     send_in_pings: vec![store_name.into()],
                     lifetime: Lifetime::Ping,
                     ..Default::default()
    @@ -2590,12 +2591,12 @@
                 ErrorType::InvalidState
             )
             .is_err());
    -        // (and, just because we're here, double-check there are no InvalidValue either).
    +        // (and, just because we're here, double-check there are no InvalidValue either).
             assert!(test_get_num_recorded_errors(
                 &glean,
                 &CommonMetricData {
    -                name: "restarted".into(),
    -                category: "glean".into(),
    +                name: "restarted".into(),
    +                category: "glean".into(),
                     send_in_pings: vec![store_name.into()],
                     lifetime: Lifetime::Ping,
                     ..Default::default()
    @@ -2606,5 +2607,4 @@
             .is_err());
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/fd_logger.rs.html b/docs/src/glean_core/fd_logger.rs.html index 3dd7828cc7..89e5d1b121 100644 --- a/docs/src/glean_core/fd_logger.rs.html +++ b/docs/src/glean_core/fd_logger.rs.html @@ -1,4 +1,5 @@ -fd_logger.rs - source
    1
    +fd_logger.rs - source
    +    
    1
     2
     3
     4
    @@ -83,7 +84,7 @@
     83
     84
     85
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -91,13 +92,13 @@
     use std::io::Write;
     use std::sync::RwLock;
     
    -#[cfg(target_os = "windows")]
    +#[cfg(target_os = "windows")]
     use std::os::windows::io::FromRawHandle;
     
    -#[cfg(target_os = "windows")]
    +#[cfg(target_os = "windows")]
     use std::ffi::c_void;
     
    -#[cfg(not(target_os = "windows"))]
    +#[cfg(not(target_os = "windows"))]
     use std::os::unix::io::FromRawFd;
     
     use serde::Serialize;
    @@ -121,12 +122,12 @@
         target: String,
     }
     
    -#[cfg(target_os = "windows")]
    +#[cfg(target_os = "windows")]
     unsafe fn get_file_from_fd(fd: u64) -> File {
         File::from_raw_handle(fd as *mut c_void)
     }
     
    -#[cfg(not(target_os = "windows"))]
    +#[cfg(not(target_os = "windows"))]
     unsafe fn get_file_from_fd(fd: u64) -> File {
         File::from_raw_fd(fd as i32)
     }
    @@ -159,7 +160,7 @@
             };
             let _ = writeln!(
                 self.file.write().unwrap(),
    -            "{}",
    +            "{}",
                 serde_json::to_string(&payload).unwrap()
             );
         }
    @@ -168,5 +169,4 @@
             let _ = self.file.write().unwrap().flush();
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/glean_metrics.rs.html b/docs/src/glean_core/glean_metrics.rs.html index d7674291b9..f712257e36 100644 --- a/docs/src/glean_core/glean_metrics.rs.html +++ b/docs/src/glean_core/glean_metrics.rs.html @@ -1,4 +1,5 @@ -glean_metrics.rs - source
    1
    +glean_metrics.rs - source
    +    
    1
     2
     3
     4
    @@ -24,14 +25,14 @@
     24
     25
     26
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
     // ** IMPORTANT **
     //
     // This file is required in order to include the ones generated by
    -// 'glean-parser' from the SDK registry files.
    +// 'glean-parser' from the SDK registry files.
     
     pub mod error {
         use crate::metrics::CounterMetric;
    @@ -41,14 +42,13 @@
         #[allow(non_upper_case_globals)]
         pub static preinit_tasks_overflow: Lazy<CounterMetric> = Lazy::new(|| {
             CounterMetric::new(CommonMetricData {
    -            category: "glean.error".into(),
    -            name: "preinit_tasks_overflow".into(),
    -            send_in_pings: vec!["metrics".into()],
    +            category: "glean.error".into(),
    +            name: "preinit_tasks_overflow".into(),
    +            send_in_pings: vec!["metrics".into()],
                 lifetime: Lifetime::Ping,
                 disabled: false,
                 ..Default::default()
             })
         });
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/histogram/exponential.rs.html b/docs/src/glean_core/histogram/exponential.rs.html index 8d0c023859..626e3b0140 100644 --- a/docs/src/glean_core/histogram/exponential.rs.html +++ b/docs/src/glean_core/histogram/exponential.rs.html @@ -1,4 +1,5 @@ -exponential.rs - source
    1
    +exponential.rs - source
    +    
    1
     2
     3
     4
    @@ -204,7 +205,7 @@
     204
     205
     206
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -264,7 +265,7 @@
     /// and `bucket_count` buckets.
     #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
     pub struct PrecomputedExponential {
    -    // Don't serialize the (potentially large) array of ranges, instead compute them on first
    +    // Don't serialize the (potentially large) array of ranges, instead compute them on first
         // access.
         #[serde(skip)]
         bucket_ranges: OnceCell<Vec<u64>>,
    @@ -282,7 +283,7 @@
             let limit = match self.ranges().binary_search(&sample) {
                 // Found an exact match to fit it in
                 Ok(i) => i,
    -            // Sorted it fits after the bucket's limit, therefore it fits into the previous bucket
    +            // Sorted it fits after the bucket's limit, therefore it fits into the previous bucket
                 Err(i) => i - 1,
             };
     
    @@ -352,7 +353,7 @@
             let test_buckets = vec![0, 1, 2, 3, 5, 9, 16, 29, 54, 100];
     
             assert_eq!(test_buckets, exponential_range(1, 100, 10));
    -        // There's always a zero bucket, so we increase the lower limit.
    +        // There's always a zero bucket, so we increase the lower limit.
             assert_eq!(test_buckets, exponential_range(0, 100, 10));
         }
     
    @@ -410,5 +411,4 @@
             assert_eq!(2, hist.values[&500]);
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/histogram/functional.rs.html b/docs/src/glean_core/histogram/functional.rs.html index 3c51aa95a5..c900c63593 100644 --- a/docs/src/glean_core/histogram/functional.rs.html +++ b/docs/src/glean_core/histogram/functional.rs.html @@ -1,4 +1,5 @@ -functional.rs - source
    1
    +functional.rs - source
    +    
    1
     2
     3
     4
    @@ -172,7 +173,7 @@
     172
     173
     174
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -208,8 +209,8 @@
             Functional { exponent }
         }
     
    -    /// Maps a sample to a "bucket index" that it belongs in.
    -    /// A "bucket index" is the consecutive integer index of each bucket, useful as a
    +    /// Maps a sample to a "bucket index" that it belongs in.
    +    /// A "bucket index" is the consecutive integer index of each bucket, useful as a
         /// mathematical concept, even though the internal representation is stored and
         /// sent using the minimum value in each bucket.
         fn sample_to_bucket_index(&self, sample: u64) -> u64 {
    @@ -239,7 +240,7 @@
         }
     
         fn ranges(&self) -> &[u64] {
    -        unimplemented!("Bucket ranges for functional bucketing are not precomputed")
    +        unimplemented!("Bucket ranges for functional bucketing are not precomputed")
         }
     }
     
    @@ -272,12 +273,12 @@
             for key in self.values.keys() {
                 let key = *key;
     
    -            // safe unwrap, we checked it's not none
    +            // safe unwrap, we checked it's not none
                 if min_key.is_none() || key < min_key.unwrap() {
                     min_key = Some(key);
                 }
     
    -            // safe unwrap, we checked it's not none
    +            // safe unwrap, we checked it's not none
                 if max_key.is_none() || key > max_key.unwrap() {
                     max_key = Some(key);
                 }
    @@ -346,5 +347,4 @@
             }
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/histogram/linear.rs.html b/docs/src/glean_core/histogram/linear.rs.html index 94bc25b196..626366df65 100644 --- a/docs/src/glean_core/histogram/linear.rs.html +++ b/docs/src/glean_core/histogram/linear.rs.html @@ -1,4 +1,5 @@ -linear.rs - source
    1
    +linear.rs - source
    +    
    1
     2
     3
     4
    @@ -176,7 +177,7 @@
     176
     177
     178
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -216,7 +217,7 @@
     /// and `bucket_count` buckets.
     #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
     pub struct PrecomputedLinear {
    -    // Don't serialize the (potentially large) array of ranges, instead compute them on first
    +    // Don't serialize the (potentially large) array of ranges, instead compute them on first
         // access.
         #[serde(skip)]
         bucket_ranges: OnceCell<Vec<u64>>,
    @@ -234,7 +235,7 @@
             let limit = match self.ranges().binary_search(&sample) {
                 // Found an exact match to fit it in
                 Ok(i) => i,
    -            // Sorted it fits after the bucket's limit, therefore it fits into the previous bucket
    +            // Sorted it fits after the bucket's limit, therefore it fits into the previous bucket
                 Err(i) => i - 1,
             };
     
    @@ -300,7 +301,7 @@
             let test_buckets = vec![0, 1, 2, 3, 4, 5, 6, 7, 8, 10];
     
             assert_eq!(test_buckets, linear_range(1, 10, 10));
    -        // There's always a zero bucket, so we increase the lower limit.
    +        // There's always a zero bucket, so we increase the lower limit.
             assert_eq!(test_buckets, linear_range(0, 10, 10));
         }
     
    @@ -354,5 +355,4 @@
             assert_eq!(2, hist.values[&500]);
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/histogram/mod.rs.html b/docs/src/glean_core/histogram/mod.rs.html index c69b9fd3ee..a7eb806b4f 100644 --- a/docs/src/glean_core/histogram/mod.rs.html +++ b/docs/src/glean_core/histogram/mod.rs.html @@ -1,4 +1,5 @@ -mod.rs - source
    1
    +mod.rs - source
    +    
    1
     2
     3
     4
    @@ -136,7 +137,7 @@
     136
     137
     138
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -158,7 +159,7 @@
     
     /// Different kinds of histograms.
     #[derive(Debug, Clone, Copy, Serialize, Deserialize)]
    -#[serde(rename_all = "lowercase")]
    +#[serde(rename_all = "lowercase")]
     pub enum HistogramType {
         /// A histogram with linear distributed buckets.
         Linear,
    @@ -197,7 +198,7 @@
     /// ```
     #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
     pub struct Histogram<B> {
    -    /// Mapping bucket's minimum to sample count.
    +    /// Mapping bucket's minimum to sample count.
         values: HashMap<u64, u64>,
     
         /// The count of samples added.
    @@ -211,10 +212,10 @@
     
     /// A bucketing algorithm for histograms.
     ///
    -/// It's responsible to calculate the bucket a sample goes into.
    +/// It's responsible to calculate the bucket a sample goes into.
     /// It can calculate buckets on-the-fly or pre-calculate buckets and re-use that when needed.
     pub trait Bucketing {
    -    /// Get the bucket's minimum value the sample falls into.
    +    /// Get the bucket's minimum value the sample falls into.
         fn sample_to_bucket_minimum(&self, sample: u64) -> u64;
     
         /// The computed bucket ranges for this bucketing algorithm.
    @@ -274,5 +275,4 @@
             res
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/internal_metrics.rs.html b/docs/src/glean_core/internal_metrics.rs.html index 9309d2c4c9..a43681226c 100644 --- a/docs/src/glean_core/internal_metrics.rs.html +++ b/docs/src/glean_core/internal_metrics.rs.html @@ -1,4 +1,5 @@ -internal_metrics.rs - source
    1
    +internal_metrics.rs - source
    +    
    1
     2
     3
     4
    @@ -311,7 +312,7 @@
     311
     312
     313
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -350,9 +351,9 @@
         pub fn new() -> CoreMetrics {
             CoreMetrics {
                 client_id: UuidMetric::new(CommonMetricData {
    -                name: "client_id".into(),
    -                category: "".into(),
    -                send_in_pings: vec!["glean_client_info".into()],
    +                name: "client_id".into(),
    +                category: "".into(),
    +                send_in_pings: vec!["glean_client_info".into()],
                     lifetime: Lifetime::User,
                     disabled: false,
                     dynamic_label: None,
    @@ -360,9 +361,9 @@
     
                 first_run_date: DatetimeMetric::new(
                     CommonMetricData {
    -                    name: "first_run_date".into(),
    -                    category: "".into(),
    -                    send_in_pings: vec!["glean_client_info".into()],
    +                    name: "first_run_date".into(),
    +                    category: "".into(),
    +                    send_in_pings: vec!["glean_client_info".into()],
                         lifetime: Lifetime::User,
                         disabled: false,
                         dynamic_label: None,
    @@ -371,9 +372,9 @@
                 ),
     
                 os: StringMetric::new(CommonMetricData {
    -                name: "os".into(),
    -                category: "".into(),
    -                send_in_pings: vec!["glean_client_info".into()],
    +                name: "os".into(),
    +                category: "".into(),
    +                send_in_pings: vec!["glean_client_info".into()],
                     lifetime: Lifetime::Application,
                     disabled: false,
                     dynamic_label: None,
    @@ -386,9 +387,9 @@
         pub fn new() -> AdditionalMetrics {
             AdditionalMetrics {
                 io_errors: CounterMetric::new(CommonMetricData {
    -                name: "io".into(),
    -                category: "glean.error".into(),
    -                send_in_pings: vec!["metrics".into()],
    +                name: "io".into(),
    +                category: "glean.error".into(),
    +                send_in_pings: vec!["metrics".into()],
                     lifetime: Lifetime::Ping,
                     disabled: false,
                     dynamic_label: None,
    @@ -397,9 +398,9 @@
                 pings_submitted: LabeledMetric::<CounterMetric>::new(
                     LabeledMetricData::Common {
                         cmd: CommonMetricData {
    -                        name: "pings_submitted".into(),
    -                        category: "glean.validation".into(),
    -                        send_in_pings: vec!["metrics".into(), "baseline".into()],
    +                        name: "pings_submitted".into(),
    +                        category: "glean.validation".into(),
    +                        send_in_pings: vec!["metrics".into(), "baseline".into()],
                             lifetime: Lifetime::Ping,
                             disabled: false,
                             dynamic_label: None,
    @@ -410,9 +411,9 @@
     
                 shutdown_wait: TimingDistributionMetric::new(
                     CommonMetricData {
    -                    name: "shutdown_wait".into(),
    -                    category: "glean.validation".into(),
    -                    send_in_pings: vec!["metrics".into()],
    +                    name: "shutdown_wait".into(),
    +                    category: "glean.validation".into(),
    +                    send_in_pings: vec!["metrics".into()],
                         lifetime: Lifetime::Ping,
                         disabled: false,
                         dynamic_label: None,
    @@ -422,9 +423,9 @@
     
                 shutdown_dispatcher_wait: TimingDistributionMetric::new(
                     CommonMetricData {
    -                    name: "shutdown_dispatcher_wait".into(),
    -                    category: "glean.validation".into(),
    -                    send_in_pings: vec!["metrics".into()],
    +                    name: "shutdown_dispatcher_wait".into(),
    +                    category: "glean.validation".into(),
    +                    send_in_pings: vec!["metrics".into()],
                         lifetime: Lifetime::Ping,
                         disabled: false,
                         dynamic_label: None,
    @@ -432,18 +433,18 @@
                     TimeUnit::Millisecond,
                 ),
     
    -            // This uses a `send_in_pings` that contains "all-ping".
    -            // This works because all of our other current "all-pings" metrics
    +            // This uses a `send_in_pings` that contains "all-ping".
    +            // This works because all of our other current "all-pings" metrics
                 // have special handling internally and are not actually processed
                 // into a store quite like this identifier is.
                 //
                 // This could become an issue if we ever decide to start generating
    -            // code from the internal Glean metrics.yaml (there aren't currently
    +            // code from the internal Glean metrics.yaml (there aren't currently
                 // any plans for this).
                 experimentation_id: StringMetric::new(CommonMetricData {
    -                name: "experimentation_id".into(),
    -                category: "glean.client.annotation".into(),
    -                send_in_pings: vec!["all-pings".into()],
    +                name: "experimentation_id".into(),
    +                category: "glean.client.annotation".into(),
    +                send_in_pings: vec!["all-pings".into()],
                     lifetime: Lifetime::Application,
                     disabled: false,
                     dynamic_label: None,
    @@ -471,28 +472,28 @@
                 ping_upload_failure: LabeledMetric::<CounterMetric>::new(
                     LabeledMetricData::Common {
                         cmd: CommonMetricData {
    -                        name: "ping_upload_failure".into(),
    -                        category: "glean.upload".into(),
    -                        send_in_pings: vec!["metrics".into()],
    +                        name: "ping_upload_failure".into(),
    +                        category: "glean.upload".into(),
    +                        send_in_pings: vec!["metrics".into()],
                             lifetime: Lifetime::Ping,
                             disabled: false,
                             dynamic_label: None,
                         },
                     },
                     Some(vec![
    -                    Cow::from("status_code_4xx"),
    -                    Cow::from("status_code_5xx"),
    -                    Cow::from("status_code_unknown"),
    -                    Cow::from("unrecoverable"),
    -                    Cow::from("recoverable"),
    +                    Cow::from("status_code_4xx"),
    +                    Cow::from("status_code_5xx"),
    +                    Cow::from("status_code_unknown"),
    +                    Cow::from("unrecoverable"),
    +                    Cow::from("recoverable"),
                     ]),
                 ),
     
                 discarded_exceeding_pings_size: MemoryDistributionMetric::new(
                     CommonMetricData {
    -                    name: "discarded_exceeding_ping_size".into(),
    -                    category: "glean.upload".into(),
    -                    send_in_pings: vec!["metrics".into()],
    +                    name: "discarded_exceeding_ping_size".into(),
    +                    category: "glean.upload".into(),
    +                    send_in_pings: vec!["metrics".into()],
                         lifetime: Lifetime::Ping,
                         disabled: false,
                         dynamic_label: None,
    @@ -502,9 +503,9 @@
     
                 pending_pings_directory_size: MemoryDistributionMetric::new(
                     CommonMetricData {
    -                    name: "pending_pings_directory_size".into(),
    -                    category: "glean.upload".into(),
    -                    send_in_pings: vec!["metrics".into()],
    +                    name: "pending_pings_directory_size".into(),
    +                    category: "glean.upload".into(),
    +                    send_in_pings: vec!["metrics".into()],
                         lifetime: Lifetime::Ping,
                         disabled: false,
                         dynamic_label: None,
    @@ -513,18 +514,18 @@
                 ),
     
                 deleted_pings_after_quota_hit: CounterMetric::new(CommonMetricData {
    -                name: "deleted_pings_after_quota_hit".into(),
    -                category: "glean.upload".into(),
    -                send_in_pings: vec!["metrics".into()],
    +                name: "deleted_pings_after_quota_hit".into(),
    +                category: "glean.upload".into(),
    +                send_in_pings: vec!["metrics".into()],
                     lifetime: Lifetime::Ping,
                     disabled: false,
                     dynamic_label: None,
                 }),
     
                 pending_pings: CounterMetric::new(CommonMetricData {
    -                name: "pending_pings".into(),
    -                category: "glean.upload".into(),
    -                send_in_pings: vec!["metrics".into()],
    +                name: "pending_pings".into(),
    +                category: "glean.upload".into(),
    +                send_in_pings: vec!["metrics".into()],
                     lifetime: Lifetime::Ping,
                     disabled: false,
                     dynamic_label: None,
    @@ -532,9 +533,9 @@
     
                 send_success: TimingDistributionMetric::new(
                     CommonMetricData {
    -                    name: "send_success".into(),
    -                    category: "glean.upload".into(),
    -                    send_in_pings: vec!["metrics".into()],
    +                    name: "send_success".into(),
    +                    category: "glean.upload".into(),
    +                    send_in_pings: vec!["metrics".into()],
                         lifetime: Lifetime::Ping,
                         disabled: false,
                         dynamic_label: None,
    @@ -544,9 +545,9 @@
     
                 send_failure: TimingDistributionMetric::new(
                     CommonMetricData {
    -                    name: "send_failure".into(),
    -                    category: "glean.upload".into(),
    -                    send_in_pings: vec!["metrics".into()],
    +                    name: "send_failure".into(),
    +                    category: "glean.upload".into(),
    +                    send_in_pings: vec!["metrics".into()],
                         lifetime: Lifetime::Ping,
                         disabled: false,
                         dynamic_label: None,
    @@ -555,18 +556,18 @@
                 ),
     
                 in_flight_pings_dropped: CounterMetric::new(CommonMetricData {
    -                name: "in_flight_pings_dropped".into(),
    -                category: "glean.upload".into(),
    -                send_in_pings: vec!["metrics".into()],
    +                name: "in_flight_pings_dropped".into(),
    +                category: "glean.upload".into(),
    +                send_in_pings: vec!["metrics".into()],
                     lifetime: Lifetime::Ping,
                     disabled: false,
                     dynamic_label: None,
                 }),
     
                 missing_send_ids: CounterMetric::new(CommonMetricData {
    -                name: "missing_send_ids".into(),
    -                category: "glean.upload".into(),
    -                send_in_pings: vec!["metrics".into()],
    +                name: "missing_send_ids".into(),
    +                category: "glean.upload".into(),
    +                send_in_pings: vec!["metrics".into()],
                     lifetime: Lifetime::Ping,
                     disabled: false,
                     dynamic_label: None,
    @@ -579,7 +580,7 @@
     pub struct DatabaseMetrics {
         pub size: MemoryDistributionMetric,
     
    -    /// RKV's load result, indicating success or relaying the detected error.
    +    /// RKV's load result, indicating success or relaying the detected error.
         pub rkv_load_error: StringMetric,
     
         /// The time it takes for a write-commit for the Glean database.
    @@ -591,9 +592,9 @@
             DatabaseMetrics {
                 size: MemoryDistributionMetric::new(
                     CommonMetricData {
    -                    name: "size".into(),
    -                    category: "glean.database".into(),
    -                    send_in_pings: vec!["metrics".into()],
    +                    name: "size".into(),
    +                    category: "glean.database".into(),
    +                    send_in_pings: vec!["metrics".into()],
                         lifetime: Lifetime::Ping,
                         disabled: false,
                         dynamic_label: None,
    @@ -602,9 +603,9 @@
                 ),
     
                 rkv_load_error: StringMetric::new(CommonMetricData {
    -                name: "rkv_load_error".into(),
    -                category: "glean.error".into(),
    -                send_in_pings: vec!["metrics".into()],
    +                name: "rkv_load_error".into(),
    +                category: "glean.error".into(),
    +                send_in_pings: vec!["metrics".into()],
                     lifetime: Lifetime::Ping,
                     disabled: false,
                     dynamic_label: None,
    @@ -612,9 +613,9 @@
     
                 write_time: TimingDistributionMetric::new(
                     CommonMetricData {
    -                    name: "write_time".into(),
    -                    category: "glean.database".into(),
    -                    send_in_pings: vec!["metrics".into()],
    +                    name: "write_time".into(),
    +                    category: "glean.database".into(),
    +                    send_in_pings: vec!["metrics".into()],
                         lifetime: Lifetime::Ping,
                         disabled: false,
                         dynamic_label: None,
    @@ -624,5 +625,4 @@
             }
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/internal_pings.rs.html b/docs/src/glean_core/internal_pings.rs.html index 3d2f41599f..ca1c825d34 100644 --- a/docs/src/glean_core/internal_pings.rs.html +++ b/docs/src/glean_core/internal_pings.rs.html @@ -1,4 +1,5 @@ -internal_pings.rs - source
    1
    +internal_pings.rs - source
    +    
    1
     2
     3
     4
    @@ -78,7 +79,7 @@
     78
     79
     80
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -102,7 +103,7 @@
         pub fn new(enabled: bool) -> InternalPings {
             InternalPings {
                 baseline: PingType::new(
    -                "baseline",
    +                "baseline",
                     true,
                     true,
                     true,
    @@ -110,13 +111,13 @@
                     enabled,
                     vec![],
                     vec![
    -                    "active".to_string(),
    -                    "dirty_startup".to_string(),
    -                    "inactive".to_string(),
    +                    "active".to_string(),
    +                    "dirty_startup".to_string(),
    +                    "inactive".to_string(),
                     ],
                 ),
                 metrics: PingType::new(
    -                "metrics",
    +                "metrics",
                     true,
                     false,
                     true,
    @@ -124,15 +125,15 @@
                     enabled,
                     vec![],
                     vec![
    -                    "overdue".to_string(),
    -                    "reschedule".to_string(),
    -                    "today".to_string(),
    -                    "tomorrow".to_string(),
    -                    "upgrade".to_string(),
    +                    "overdue".to_string(),
    +                    "reschedule".to_string(),
    +                    "today".to_string(),
    +                    "tomorrow".to_string(),
    +                    "upgrade".to_string(),
                     ],
                 ),
                 events: PingType::new(
    -                "events",
    +                "events",
                     true,
                     false,
                     true,
    @@ -140,23 +141,22 @@
                     enabled,
                     vec![],
                     vec![
    -                    "startup".to_string(),
    -                    "inactive".to_string(),
    -                    "max_capacity".to_string(),
    +                    "startup".to_string(),
    +                    "inactive".to_string(),
    +                    "max_capacity".to_string(),
                     ],
                 ),
                 deletion_request: PingType::new(
    -                "deletion-request",
    +                "deletion-request",
                     true,
                     true,
                     true,
                     true,
                     true, // The deletion-request should not be disabled
                     vec![],
    -                vec!["at_init".to_string(), "set_upload_enabled".to_string()],
    +                vec!["at_init".to_string(), "set_upload_enabled".to_string()],
                 ),
             }
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/lib.rs.html b/docs/src/glean_core/lib.rs.html index f41140e1da..c1e930170d 100644 --- a/docs/src/glean_core/lib.rs.html +++ b/docs/src/glean_core/lib.rs.html @@ -1,4 +1,5 @@ -lib.rs - source
    1
    +lib.rs - source
    +    
    1
     2
     3
     4
    @@ -1267,7 +1268,7 @@
     1267
     1268
     1269
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -1278,7 +1279,7 @@
     
     //! Glean is a modern approach for recording and sending Telemetry data.
     //!
    -//! It's in use at Mozilla.
    +//! It's in use at Mozilla.
     //!
     //! All documentation can be found online:
     //!
    @@ -1322,7 +1323,7 @@
     pub mod upload;
     mod util;
     
    -#[cfg(all(not(target_os = "android"), not(target_os = "ios")))]
    +#[cfg(all(not(target_os = "android"), not(target_os = "ios")))]
     mod fd_logger;
     
     pub use crate::common_metric_data::{CommonMetricData, Lifetime};
    @@ -1345,15 +1346,15 @@
     };
     pub use crate::upload::{PingRequest, PingUploadTask, UploadResult, UploadTaskAction};
     
    -const GLEAN_VERSION: &str = env!("CARGO_PKG_VERSION");
    +const GLEAN_VERSION: &str = env!("CARGO_PKG_VERSION");
     const GLEAN_SCHEMA_VERSION: u32 = 1;
     const DEFAULT_MAX_EVENTS: u32 = 500;
     static KNOWN_CLIENT_ID: Lazy<Uuid> =
    -    Lazy::new(|| Uuid::parse_str("c0ffeec0-ffee-c0ff-eec0-ffeec0ffeec0").unwrap());
    +    Lazy::new(|| Uuid::parse_str("c0ffeec0-ffee-c0ff-eec0-ffeec0ffeec0").unwrap());
     
     // The names of the pings directories.
    -pub(crate) const PENDING_PINGS_DIRECTORY: &str = "pending_pings";
    -pub(crate) const DELETION_REQUEST_PINGS_DIRECTORY: &str = "deletion_request";
    +pub(crate) const PENDING_PINGS_DIRECTORY: &str = "pending_pings";
    +pub(crate) const DELETION_REQUEST_PINGS_DIRECTORY: &str = "deletion_request";
     
     /// Set when `glean::initialize()` returns.
     /// This allows to detect calls that happen before `glean::initialize()` was called.
    @@ -1389,10 +1390,10 @@
         pub max_events: Option<u32>,
         /// Whether Glean should delay persistence of data from metrics with ping lifetime.
         pub delay_ping_lifetime_io: bool,
    -    /// The application's build identifier. If this is different from the one provided for a previous init,
    -    /// and use_core_mps is `true`, we will trigger a "metrics" ping.
    +    /// The application's build identifier. If this is different from the one provided for a previous init,
    +    /// and use_core_mps is `true`, we will trigger a "metrics" ping.
         pub app_build: String,
    -    /// Whether Glean should schedule "metrics" pings.
    +    /// Whether Glean should schedule "metrics" pings.
         pub use_core_mps: bool,
         /// Whether Glean should, on init, trim its event storage to only the registered pings.
         pub trim_data_to_registered_pings: bool,
    @@ -1410,7 +1411,7 @@
         pub enable_internal_pings: bool,
         /// A ping schedule map.
         /// Maps a ping name to a list of pings to schedule along with it.
    -    /// Only used if the ping's own ping schedule list is empty.
    +    /// Only used if the ping's own ping schedule list is empty.
         pub ping_schedule: HashMap<String, Vec<String>>,
     
         /// Write count threshold when to auto-flush. `0` disables it.
    @@ -1429,13 +1430,13 @@
     }
     
     /// Launches a new task on the global dispatch queue with a reference to the Glean singleton.
    -fn launch_with_glean(callback: impl FnOnce(&Glean) + Send + 'static) {
    +fn launch_with_glean(callback: impl FnOnce(&Glean) + Send + 'static) {
         dispatcher::launch(|| core::with_glean(callback));
     }
     
     /// Launches a new task on the global dispatch queue with a mutable reference to the
     /// Glean singleton.
    -fn launch_with_glean_mut(callback: impl FnOnce(&mut Glean) + Send + 'static) {
    +fn launch_with_glean_mut(callback: impl FnOnce(&mut Glean) + Send + 'static) {
         dispatcher::launch(|| core::with_glean_mut(callback));
     }
     
    @@ -1446,7 +1447,7 @@
         dispatcher::block_on_queue()
     }
     
    -/// Returns a timestamp corresponding to "now" with millisecond precision.
    +/// Returns a timestamp corresponding to "now" with millisecond precision.
     pub fn get_timestamp_ms() -> u64 {
         const NANOS_PER_MILLI: u64 = 1_000_000;
         zeitstempel::now() / NANOS_PER_MILLI
    @@ -1471,16 +1472,16 @@
     /// Get a reference to the global state object.
     ///
     /// Panics if no global state object was set.
    -#[track_caller] // If this fails we're interested in the caller.
    -fn global_state() -> &'static Mutex<State> {
    +#[track_caller] // If this fails we're interested in the caller.
    +fn global_state() -> &'static Mutex<State> {
         STATE.get().unwrap()
     }
     
     /// Attempt to get a reference to the global state object.
     ///
    -/// If it hasn't been set yet, we return None.
    -#[track_caller] // If this fails we're interested in the caller.
    -fn maybe_global_state() -> Option<&'static Mutex<State>> {
    +/// If it hasn't been set yet, we return None.
    +#[track_caller] // If this fails we're interested in the caller.
    +fn maybe_global_state() -> Option<&'static Mutex<State>> {
         STATE.get()
     }
     
    @@ -1498,7 +1499,7 @@
         if STATE.get().is_none() {
             if STATE.set(Mutex::new(state)).is_err() {
                 log::error!(
    -                "Global Glean state object is initialized already. This probably happened concurrently."
    +                "Global Glean state object is initialized already. This probably happened concurrently."
                 );
             }
         } else {
    @@ -1515,7 +1516,7 @@
     static EVENT_LISTENERS: OnceCell<Mutex<HashMap<String, Box<dyn GleanEventListener>>>> =
         OnceCell::new();
     
    -fn event_listeners() -> &'static Mutex<HashMap<String, Box<dyn GleanEventListener>>> {
    +fn event_listeners() -> &'static Mutex<HashMap<String, Box<dyn GleanEventListener>>> {
         EVENT_LISTENERS.get_or_init(|| Mutex::new(HashMap::new()))
     }
     
    @@ -1537,8 +1538,8 @@
     }
     
     impl fmt::Display for CallbackError {
    -    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    -        write!(f, "Unexpected error")
    +    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    +        write!(f, "Unexpected error")
         }
     }
     
    @@ -1621,14 +1622,14 @@
         let glean = match Glean::new_for_subprocess(&cfg, true) {
             Ok(glean) => glean,
             Err(err) => {
    -            log::error!("Failed to initialize Glean: {}", err);
    +            log::error!("Failed to initialize Glean: {}", err);
                 return false;
             }
         };
         if core::setup_glean(glean).is_err() {
             return false;
         }
    -    log::info!("Glean initialized for subprocess");
    +    log::info!("Glean initialized for subprocess");
         true
     }
     
    @@ -1638,12 +1639,12 @@
         callbacks: Box<dyn OnGleanEvents>,
     ) {
         if was_initialize_called() {
    -        log::error!("Glean should not be initialized multiple times");
    +        log::error!("Glean should not be initialized multiple times");
             return;
         }
     
         let init_handle = std::thread::Builder::new()
    -        .name("glean.init".into())
    +        .name("glean.init".into())
             .spawn(move || {
                 let upload_enabled = cfg.upload_enabled;
                 let trim_data_to_registered_pings = cfg.trim_data_to_registered_pings;
    @@ -1656,7 +1657,7 @@
                 let glean = match Glean::new(cfg) {
                     Ok(glean) => glean,
                     Err(err) => {
    -                    log::error!("Failed to initialize Glean: {}", err);
    +                    log::error!("Failed to initialize Glean: {}", err);
                         return;
                     }
                 };
    @@ -1664,7 +1665,7 @@
                     return;
                 }
     
    -            log::info!("Glean initialized");
    +            log::info!("Glean initialized");
     
                 setup_state(State {
                     client_info,
    @@ -1698,7 +1699,7 @@
     
                     // Get the current value of the dirty flag so we know whether to
                     // send a dirty startup baseline ping below.  Immediately set it to
    -                // `false` so that dirty startup pings won't be sent if Glean
    +                // `false` so that dirty startup pings won't be sent if Glean
                     // initialization does not complete successfully.
                     dirty_flag = glean.is_dirty_flag_set();
                     glean.set_dirty_flag(false);
    @@ -1730,7 +1731,7 @@
                     // 2. Upload is disabled, to upload a possible deletion-request ping.
                     if pings_submitted || !upload_enabled {
                         if let Err(e) = state.callbacks.trigger_upload() {
    -                        log::error!("Triggering upload failed. Error: {}", e);
    +                        log::error!("Triggering upload failed. Error: {}", e);
                         }
                     }
                 }
    @@ -1745,17 +1746,17 @@
                 // For that it needs access to the `Glean` object.
                 // Thus we need to unlock that by leaving the context above,
                 // then re-lock it afterwards.
    -            // That's safe because user-visible functions will be queued and thus not execute until
    +            // That's safe because user-visible functions will be queued and thus not execute until
                 // we unblock later anyway.
                 {
                     let state = global_state().lock().unwrap();
     
    -                // Set up information and scheduling for Glean owned pings. Ideally, the "metrics"
    +                // Set up information and scheduling for Glean owned pings. Ideally, the "metrics"
                     // ping startup check should be performed before any other ping, since it relies
                     // on being dispatched to the API context before any other metric.
                     if state.callbacks.start_metrics_ping_scheduler() {
                         if let Err(e) = state.callbacks.trigger_upload() {
    -                        log::error!("Triggering upload failed. Error: {}", e);
    +                        log::error!("Triggering upload failed. Error: {}", e);
                         }
                     }
                 }
    @@ -1763,18 +1764,18 @@
                 core::with_glean_mut(|glean| {
                     let state = global_state().lock().unwrap();
     
    -                // Check if the "dirty flag" is set. That means the product was probably
    -                // force-closed. If that's the case, submit a 'baseline' ping with the
    -                // reason "dirty_startup". We only do that from the second run.
    +                // Check if the "dirty flag" is set. That means the product was probably
    +                // force-closed. If that's the case, submit a 'baseline' ping with the
    +                // reason "dirty_startup". We only do that from the second run.
                     if !is_first_run && dirty_flag {
                         // The `submit_ping_by_name_sync` function cannot be used, otherwise
                         // startup will cause a dead-lock, since that function requests a
                         // write lock on the `glean` object.
                         // Note that unwrapping below is safe: the function will return an
                         // `Ok` value for a known ping.
    -                    if glean.submit_ping_by_name("baseline", Some("dirty_startup")) {
    +                    if glean.submit_ping_by_name("baseline", Some("dirty_startup")) {
                             if let Err(e) = state.callbacks.trigger_upload() {
    -                            log::error!("Triggering upload failed. Error: {}", e);
    +                            log::error!("Triggering upload failed. Error: {}", e);
                             }
                         }
                     }
    @@ -1790,7 +1791,7 @@
     
                 // Signal Dispatcher that init is complete
                 // bug 1839433: It is important that this happens after any init tasks
    -            // that shutdown() depends on. At time of writing that's only setting up
    +            // that shutdown() depends on. At time of writing that's only setting up
                 // the global Glean, but it is probably best to flush the preinit queue
                 // as late as possible in the glean.init thread.
                 match dispatcher::flush_init() {
    @@ -1801,15 +1802,15 @@
                         });
                     }
                     Ok(_) => {}
    -                Err(err) => log::error!("Unable to flush the preinit queue: {}", err),
    +                Err(err) => log::error!("Unable to flush the preinit queue: {}", err),
                 }
     
                 let state = global_state().lock().unwrap();
                 state.callbacks.initialize_finished();
             })
    -        .expect("Failed to spawn Glean's init thread");
    +        .expect("Failed to spawn Glean's init thread");
     
    -    // For test purposes, store the glean init thread's JoinHandle.
    +    // For test purposes, store the glean init thread's JoinHandle.
         INIT_HANDLES.lock().unwrap().push(init_handle);
     
         // Mark the initialization as called: this needs to happen outside of the
    @@ -1817,14 +1818,14 @@
         INITIALIZE_CALLED.store(true, Ordering::SeqCst);
     
         // In test mode we wait for initialization to finish.
    -    // This needs to run after we set `INITIALIZE_CALLED`, so it's similar to normal behavior.
    +    // This needs to run after we set `INITIALIZE_CALLED`, so it's similar to normal behavior.
         if dispatcher::global::is_test_mode() {
             join_init();
         }
     }
     
     /// TEST ONLY FUNCTION
    -/// Waits on all the glean.init threads' join handles.
    +/// Waits on all the glean.init threads' join handles.
     pub fn join_init() {
         let mut handles = INIT_HANDLES.lock().unwrap();
         for handle in handles.drain(..) {
    @@ -1844,25 +1845,25 @@
         let (tx, rx) = unbounded();
     
         let handle = thread::Builder::new()
    -        .name("glean.shutdown".to_string())
    +        .name("glean.shutdown".to_string())
             .spawn(move || {
                 let state = global_state().lock().unwrap();
                 if let Err(e) = state.callbacks.shutdown() {
    -                log::error!("Shutdown callback failed: {e:?}");
    +                log::error!("Shutdown callback failed: {e:?}");
                 }
     
                 // Best-effort sending. The other side might have timed out already.
                 let _ = tx.send(()).ok();
             })
    -        .expect("Unable to spawn thread to wait on shutdown");
    +        .expect("Unable to spawn thread to wait on shutdown");
     
    -    // TODO: 30 seconds? What's a good default here? Should this be configurable?
    +    // TODO: 30 seconds? What's a good default here? Should this be configurable?
         // Reasoning:
         //   * If we shut down early we might still be processing pending pings.
         //     In this case we wait at most 3 times for 1s = 3s before we upload.
    -    //   * If we're rate-limited the uploader sleeps for up to 60s.
    +    //   * If we're rate-limited the uploader sleeps for up to 60s.
         //     Thus waiting 30s will rarely allow another upload.
    -    //   * We don't know how long uploads take until we get data from bug 1814592.
    +    //   * We don't know how long uploads take until we get data from bug 1814592.
         let result = rx.recv_timeout(Duration::from_secs(30));
     
         let stop_time = time::precise_time_ns();
    @@ -1874,7 +1875,7 @@
         });
     
         if result.is_err() {
    -        log::warn!("Waiting for upload failed. We're shutting down.");
    +        log::warn!("Waiting for upload failed. We're shutting down.");
         } else {
             let _ = handle.join().ok();
         }
    @@ -1886,52 +1887,52 @@
         // 1) Before init was called
         //    * (data loss, oh well. Not enough time to do squat)
         // 2) After init was called, but before it completed
    -    //    * (we're willing to wait a little bit for init to complete)
    +    //    * (we're willing to wait a little bit for init to complete)
         // 3) After init completed
         //    * (we can shut down immediately)
     
    -    // Case 1: "Before init was called"
    +    // Case 1: "Before init was called"
         if !was_initialize_called() {
    -        log::warn!("Shutdown called before Glean is initialized");
    +        log::warn!("Shutdown called before Glean is initialized");
             if let Err(e) = dispatcher::kill() {
    -            log::error!("Can't kill dispatcher thread: {:?}", e);
    +            log::error!("Can't kill dispatcher thread: {:?}", e);
             }
             return;
         }
     
    -    // Case 2: "After init was called, but before it completed"
    +    // Case 2: "After init was called, but before it completed"
         if core::global_glean().is_none() {
    -        log::warn!("Shutdown called before Glean is initialized. Waiting.");
    -        // We can't join on the `glean.init` thread because there's no (easy) way
    +        log::warn!("Shutdown called before Glean is initialized. Waiting.");
    +        // We can't join on the `glean.init` thread because there's no (easy) way
             // to do that with a timeout. Instead, we wait for the preinit queue to
             // empty, which is the last meaningful thing we do on that thread.
     
             // TODO: Make the timeout configurable?
    -        // We don't need the return value, as we're less interested in whether
    -        // this times out than we are in whether there's a Global Glean at the end.
    +        // We don't need the return value, as we're less interested in whether
    +        // this times out than we are in whether there's a Global Glean at the end.
             let _ = dispatcher::block_on_queue_timeout(Duration::from_secs(10));
         }
    -    // We can't shut down Glean if there's no Glean to shut down.
    +    // We can't shut down Glean if there's no Glean to shut down.
         if core::global_glean().is_none() {
    -        log::warn!("Waiting for Glean initialization timed out. Exiting.");
    +        log::warn!("Waiting for Glean initialization timed out. Exiting.");
             if let Err(e) = dispatcher::kill() {
    -            log::error!("Can't kill dispatcher thread: {:?}", e);
    +            log::error!("Can't kill dispatcher thread: {:?}", e);
             }
             return;
         }
     
    -    // Case 3: "After init completed"
    +    // Case 3: "After init completed"
         crate::launch_with_glean_mut(|glean| {
             glean.cancel_metrics_ping_scheduler();
             glean.set_dirty_flag(false);
         });
     
         // We need to wait for above task to finish,
    -    // but we also don't wait around forever.
    +    // but we also don't wait around forever.
         //
         // TODO: Make the timeout configurable?
         // The default hang watchdog on Firefox waits 60s,
    -    // Glean's `uploader_shutdown` further below waits up to 30s.
    +    // Glean's `uploader_shutdown` further below waits up to 30s.
         let timer_id = core::with_glean(|glean| {
             glean
                 .additional_metrics
    @@ -1950,13 +1951,13 @@
         });
         if blocked.is_err() {
             log::error!(
    -            "Timeout while blocking on the dispatcher. No further shutdown cleanup will happen."
    +            "Timeout while blocking on the dispatcher. No further shutdown cleanup will happen."
             );
             return;
         }
     
         if let Err(e) = dispatcher::shutdown() {
    -        log::error!("Can't shutdown dispatcher thread: {:?}", e);
    +        log::error!("Can't shutdown dispatcher thread: {:?}", e);
         }
     
         uploader_shutdown();
    @@ -1964,17 +1965,17 @@
         // Be sure to call this _after_ draining the dispatcher
         core::with_glean(|glean| {
             if let Err(e) = glean.persist_ping_lifetime_data() {
    -            log::error!("Can't persist ping lifetime data: {:?}", e);
    +            log::error!("Can't persist ping lifetime data: {:?}", e);
             }
         });
     }
     
     /// Asks the database to persist ping-lifetime data to disk. Probably expensive to call.
     /// Only has effect when Glean is configured with `delay_ping_lifetime_io: true`.
    -/// If Glean hasn't been initialized this will dispatch and return Ok(()),
    +/// If Glean hasn't been initialized this will dispatch and return Ok(()),
     /// otherwise it will block until the persist is done and return its Result.
     pub fn glean_persist_ping_lifetime_data() {
    -    // This is async, we can't get the Error back to the caller.
    +    // This is async, we can't get the Error back to the caller.
         crate::launch_with_glean(|glean| {
             let _ = glean.persist_ping_lifetime_data();
         });
    @@ -2022,28 +2023,28 @@
     /// Initialize the logging system based on the target platform. This ensures
     /// that logging is shown when executing the Glean SDK unit tests.
     #[no_mangle]
    -pub extern "C" fn glean_enable_logging() {
    -    #[cfg(target_os = "android")]
    +pub extern "C" fn glean_enable_logging() {
    +    #[cfg(target_os = "android")]
         {
             let _ = std::panic::catch_unwind(|| {
                 let filter = android_logger::FilterBuilder::new()
    -                .filter_module("glean_ffi", log::LevelFilter::Debug)
    -                .filter_module("glean_core", log::LevelFilter::Debug)
    -                .filter_module("glean", log::LevelFilter::Debug)
    -                .filter_module("glean_core::ffi", log::LevelFilter::Info)
    +                .filter_module("glean_ffi", log::LevelFilter::Debug)
    +                .filter_module("glean_core", log::LevelFilter::Debug)
    +                .filter_module("glean", log::LevelFilter::Debug)
    +                .filter_module("glean_core::ffi", log::LevelFilter::Info)
                     .build();
                 android_logger::init_once(
                     android_logger::Config::default()
                         .with_max_level(log::LevelFilter::Debug)
                         .with_filter(filter)
    -                    .with_tag("libglean_ffi"),
    +                    .with_tag("libglean_ffi"),
                 );
    -            log::trace!("Android logging should be hooked up!")
    +            log::trace!("Android logging should be hooked up!")
             });
         }
     
         // On iOS enable logging with a level filter.
    -    #[cfg(target_os = "ios")]
    +    #[cfg(target_os = "ios")]
         {
             // Debug logging in debug mode.
             // (Note: `debug_assertions` is the next best thing to determine if this is a debug build)
    @@ -2052,17 +2053,17 @@
             #[cfg(not(debug_assertions))]
             let level = log::LevelFilter::Info;
     
    -        let logger = oslog::OsLogger::new("org.mozilla.glean")
    +        let logger = oslog::OsLogger::new("org.mozilla.glean")
                 .level_filter(level)
                 // Filter UniFFI log messages
    -            .category_level_filter("glean_core::ffi", log::LevelFilter::Info);
    +            .category_level_filter("glean_core::ffi", log::LevelFilter::Info);
     
             match logger.init() {
    -            Ok(_) => log::trace!("os_log should be hooked up!"),
    +            Ok(_) => log::trace!("os_log should be hooked up!"),
                 // Please note that this is only expected to fail during unit tests,
                 // where the logger might have already been initialized by a previous
    -            // test. So it's fine to print with the "logger".
    -            Err(_) => log::warn!("os_log was already initialized"),
    +            // test. So it's fine to print with the "logger".
    +            Err(_) => log::warn!("os_log was already initialized"),
             };
         }
     
    @@ -2070,17 +2071,17 @@
         // Use the RUST_LOG environment variable to set the desired log level,
         // e.g. setting RUST_LOG=debug sets the log level to debug.
         #[cfg(all(
    -        not(target_os = "android"),
    -        not(target_os = "ios"),
    -        feature = "enable_env_logger"
    +        not(target_os = "android"),
    +        not(target_os = "ios"),
    +        feature = "enable_env_logger"
         ))]
         {
             match env_logger::try_init() {
    -            Ok(_) => log::trace!("stdout logging should be hooked up!"),
    +            Ok(_) => log::trace!("stdout logging should be hooked up!"),
                 // Please note that this is only expected to fail during unit tests,
                 // where the logger might have already been initialized by a previous
    -            // test. So it's fine to print with the "logger".
    -            Err(_) => log::warn!("stdout logging was already initialized"),
    +            // test. So it's fine to print with the "logger".
    +            Err(_) => log::warn!("stdout logging was already initialized"),
             };
         }
     }
    @@ -2100,7 +2101,7 @@
                 glean.cancel_metrics_ping_scheduler();
                 // Stop wrapper-controlled uploader.
                 if let Err(e) = state.callbacks.cancel_uploads() {
    -                log::error!("Canceling upload failed. Error: {}", e);
    +                log::error!("Canceling upload failed. Error: {}", e);
                 }
             }
     
    @@ -2112,7 +2113,7 @@
     
             if original_enabled && !enabled {
                 if let Err(e) = state.callbacks.trigger_upload() {
    -                log::error!("Triggering upload failed. Error: {}", e);
    +                log::error!("Triggering upload failed. Error: {}", e);
                 }
             }
         })
    @@ -2133,7 +2134,7 @@
             // We need to keep track of pings, so they get re-registered after a reset or
             // if ping registration is attempted before Glean initializes.
             // This state is kept across Glean resets, which should only ever happen in test mode.
    -        // It's a set and keeping them around forever should not have much of an impact.
    +        // It's a set and keeping them around forever should not have much of an impact.
             let m = &PRE_INIT_PING_REGISTRATION;
             let mut lock = m.lock().unwrap();
             lock.push(ping.clone());
    @@ -2162,7 +2163,7 @@
     
     /// TEST ONLY FUNCTION.
     /// Returns the [`RecordedExperiment`] for the given `experiment_id`
    -/// or `None` if the id isn't found.
    +/// or `None` if the id isn't found.
     pub fn glean_test_get_experiment_data(experiment_id: String) -> Option<RecordedExperiment> {
         block_on_dispatcher();
         core::with_glean(|glean| glean.test_get_experiment_data(experiment_id.to_owned()))
    @@ -2170,7 +2171,7 @@
     
     /// Set an experimentation identifier dynamically.
     ///
    -/// Note: it's probably a good idea to unenroll from any experiments when identifiers change.
    +/// Note: it's probably a good idea to unenroll from any experiments when identifiers change.
     pub fn glean_set_experimentation_id(experimentation_id: String) {
         launch_with_glean(move |glean| {
             glean
    @@ -2187,7 +2188,7 @@
         core::with_glean(|glean| glean.test_get_experimentation_id())
     }
     
    -/// Sets a remote configuration to override metrics' default enabled/disabled
    +/// Sets a remote configuration to override metrics' default enabled/disabled
     /// state
     ///
     /// See [`core::Glean::apply_server_knobs_config`].
    @@ -2203,7 +2204,7 @@
                 glean.apply_server_knobs_config(cfg);
             }),
             Err(e) => {
    -            log::error!("Error setting metrics feature config: {:?}", e);
    +            log::error!("Error setting metrics feature config: {:?}", e);
             }
         }
     }
    @@ -2211,11 +2212,11 @@
     /// Sets a debug view tag.
     ///
     /// When the debug view tag is set, pings are sent with a `X-Debug-ID` header with the
    -/// value of the tag and are sent to the ["Ping Debug Viewer"](https://mozilla.github.io/glean/book/dev/core/internal/debug-pings.html).
    +/// value of the tag and are sent to the ["Ping Debug Viewer"](https://mozilla.github.io/glean/book/dev/core/internal/debug-pings.html).
     ///
     /// # Arguments
     ///
    -/// * `tag` - A valid HTTP header value. Must match the regex: "[a-zA-Z0-9-]{1,20}".
    +/// * `tag` - A valid HTTP header value. Must match the regex: "[a-zA-Z0-9-]{1,20}".
     ///
     /// # Returns
     ///
    @@ -2233,7 +2234,7 @@
             let mut lock = m.lock().unwrap();
             *lock = tag;
             // When setting the debug view tag before initialization,
    -        // we don't validate the tag, thus this function always returns true.
    +        // we don't validate the tag, thus this function always returns true.
             true
         }
     }
    @@ -2248,7 +2249,7 @@
     /// # Arguments
     ///
     /// * `tags` - A vector of at most 5 valid HTTP header values. Individual
    -///   tags must match the regex: "[a-zA-Z0-9-]{1,20}".
    +///   tags must match the regex: "[a-zA-Z0-9-]{1,20}".
     pub fn glean_set_source_tags(tags: Vec<String>) -> bool {
         if was_initialize_called() {
             crate::launch_with_glean_mut(|glean| {
    @@ -2261,7 +2262,7 @@
             let mut lock = m.lock().unwrap();
             *lock = tags;
             // When setting the source tags before initialization,
    -        // we don't validate the tags, thus this function always returns true.
    +        // we don't validate the tags, thus this function always returns true.
             true
         }
     }
    @@ -2297,11 +2298,11 @@
             });
     
             // The above call may generate pings, so we need to trigger
    -        // the uploader. It's fine to trigger it if no ping was generated:
    +        // the uploader. It's fine to trigger it if no ping was generated:
             // it will bail out.
             let state = global_state().lock().unwrap();
             if let Err(e) = state.callbacks.trigger_upload() {
    -            log::error!("Triggering upload failed. Error: {}", e);
    +            log::error!("Triggering upload failed. Error: {}", e);
             }
         });
     
    @@ -2330,11 +2331,11 @@
             });
     
             // The above call may generate pings, so we need to trigger
    -        // the uploader. It's fine to trigger it if no ping was generated:
    +        // the uploader. It's fine to trigger it if no ping was generated:
             // it will bail out.
             let state = global_state().lock().unwrap();
             if let Err(e) = state.callbacks.trigger_upload() {
    -            log::error!("Triggering upload failed. Error: {}", e);
    +            log::error!("Triggering upload failed. Error: {}", e);
             }
         })
     }
    @@ -2348,7 +2349,7 @@
             if sent {
                 let state = global_state().lock().unwrap();
                 if let Err(e) = state.callbacks.trigger_upload() {
    -                log::error!("Triggering upload failed. Error: {}", e);
    +                log::error!("Triggering upload failed. Error: {}", e);
                 }
             }
         })
    @@ -2377,7 +2378,7 @@
     
     /// Unregister an event listener from recieving notifications.
     ///
    -/// Does not panic if the listener doesn't exist.
    +/// Does not panic if the listener doesn't exist.
     ///
     /// # Arguments
     ///
    @@ -2398,7 +2399,7 @@
     /// Destroy the underlying database.
     pub fn glean_test_destroy_glean(clear_stores: bool, data_path: Option<String>) {
         if was_initialize_called() {
    -        // Just because initialize was called doesn't mean it's done.
    +        // Just because initialize was called doesn't mean it's done.
             join_init();
     
             dispatcher::reset_dispatcher();
    @@ -2432,7 +2433,7 @@
             if let Some(data_path) = data_path {
                 let _ = std::fs::remove_dir_all(data_path).ok();
             } else {
    -            log::warn!("Asked to clear stores before initialization, but no data path given.");
    +            log::warn!("Asked to clear stores before initialization, but no data path given.");
             }
         }
     }
    @@ -2454,7 +2455,7 @@
         core::with_glean(|glean| glean.set_dirty_flag(new_value))
     }
     
    -#[cfg(all(not(target_os = "android"), not(target_os = "ios")))]
    +#[cfg(all(not(target_os = "android"), not(target_os = "ios")))]
     static FD_LOGGER: OnceCell<fd_logger::FdLogger> = OnceCell::new();
     
     /// Initialize the logging system to send JSON messages to a file descriptor
    @@ -2468,8 +2469,8 @@
     ///
     /// `fd` MUST be a valid open file descriptor (Unix) or file handle (Windows).
     /// This function is marked safe,
    -/// because we can't call unsafe functions from generated UniFFI code.
    -#[cfg(all(not(target_os = "android"), not(target_os = "ios")))]
    +/// because we can't call unsafe functions from generated UniFFI code.
    +#[cfg(all(not(target_os = "android"), not(target_os = "ios")))]
     pub fn glean_enable_logging_to_fd(fd: u64) {
         // SAFETY:
         // This functions is unsafe.
    @@ -2484,7 +2485,7 @@
             let logger = FD_LOGGER.get_or_init(|| fd_logger::FdLogger::new(fd));
             // Set the level so everything goes through to the language
             // binding side where it will be filtered by the language
    -        // binding's logging system.
    +        // binding's logging system.
             if log::set_logger(logger).is_ok() {
                 log::set_max_level(log::LevelFilter::Debug);
             }
    @@ -2492,7 +2493,7 @@
     }
     
     /// Unused function. Not used on Android or iOS.
    -#[cfg(any(target_os = "android", target_os = "ios"))]
    +#[cfg(any(target_os = "android", target_os = "ios"))]
     pub fn glean_enable_logging_to_fd(_fd: u64) {
         // intentionally left empty
     }
    @@ -2500,9 +2501,9 @@
     #[allow(missing_docs)]
     mod ffi {
         use super::*;
    -    uniffi::include_scaffolding!("glean");
    +    uniffi::include_scaffolding!("glean");
     
    -    type CowString = Cow<'static, str>;
    +    type CowString = Cow<'static, str>;
     
         impl UniffiCustomTypeConverter for CowString {
             type Builtin = String;
    @@ -2534,7 +2535,6 @@
     
     // Split unit tests to a separate file, to reduce the file of this one.
     #[cfg(test)]
    -#[path = "lib_unit_tests.rs"]
    +#[path = "lib_unit_tests.rs"]
     mod tests;
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/metrics/boolean.rs.html b/docs/src/glean_core/metrics/boolean.rs.html index 1f8484befd..9dac49d190 100644 --- a/docs/src/glean_core/metrics/boolean.rs.html +++ b/docs/src/glean_core/metrics/boolean.rs.html @@ -1,4 +1,5 @@ -boolean.rs - source
    1
    +boolean.rs - source
    +    
    1
     2
     3
     4
    @@ -138,7 +139,7 @@
     138
     139
     140
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -224,7 +225,7 @@
         ///
         /// Gets the currently stored value as a boolean.
         ///
    -    /// This doesn't clear the stored value.
    +    /// This doesn't clear the stored value.
         #[doc(hidden)]
         pub fn get_value(&self, glean: &Glean, ping_name: Option<&str>) -> Option<bool> {
             let queried_ping_name = ping_name.unwrap_or_else(|| &self.meta().inner.send_in_pings[0]);
    @@ -244,7 +245,7 @@
         ///
         /// Gets the currently stored value as an integer.
         ///
    -    /// This doesn't clear the stored value.
    +    /// This doesn't clear the stored value.
         ///
         /// # Arguments
         ///
    @@ -278,5 +279,4 @@
             })
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/metrics/counter.rs.html b/docs/src/glean_core/metrics/counter.rs.html index f76d9915d9..d23c7a23b0 100644 --- a/docs/src/glean_core/metrics/counter.rs.html +++ b/docs/src/glean_core/metrics/counter.rs.html @@ -1,4 +1,5 @@ -counter.rs - source
    1
    +counter.rs - source
    +    
    1
     2
     3
     4
    @@ -175,7 +176,7 @@
     175
     176
     177
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -246,7 +247,7 @@
                         glean,
                         &self.meta,
                         ErrorType::InvalidValue,
    -                    format!("Added negative value {}", amount),
    +                    format!("Added negative value {}", amount),
                         None,
                     );
                     return;
    @@ -258,10 +259,10 @@
                 Ordering::Greater => (),
             };
     
    -        // Let's be defensive here:
    +        // Let's be defensive here:
             // The uploader tries to store a counter metric,
             // but in tests that storage might be gone already.
    -        // Let's just ignore those.
    +        // Let's just ignore those.
             // This should never happen in real app usage.
             if let Some(storage) = glean.storage_opt() {
                 storage.record_with(glean, &self.meta, |old_value| match old_value {
    @@ -272,7 +273,7 @@
                 })
             } else {
                 log::warn!(
    -                "Couldn't get storage. Can't record counter '{}'.",
    +                "Couldn't get storage. Can't record counter '{}'.",
                     self.meta.base_identifier()
                 );
             }
    @@ -294,7 +295,7 @@
     
         /// Get current value
         #[doc(hidden)]
    -    pub fn get_value<'a, S: Into<Option<&'a str>>>(
    +    pub fn get_value<'a, S: Into<Option<&'a str>>>(
             &self,
             glean: &Glean,
             ping_name: S,
    @@ -318,7 +319,7 @@
         ///
         /// Gets the currently stored value as an integer.
         ///
    -    /// This doesn't clear the stored value.
    +    /// This doesn't clear the stored value.
         ///
         /// # Arguments
         ///
    @@ -352,5 +353,4 @@
             })
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/metrics/custom_distribution.rs.html b/docs/src/glean_core/metrics/custom_distribution.rs.html index b212d30533..3e0bcc253e 100644 --- a/docs/src/glean_core/metrics/custom_distribution.rs.html +++ b/docs/src/glean_core/metrics/custom_distribution.rs.html @@ -1,4 +1,5 @@ -custom_distribution.rs - source
    1
    +custom_distribution.rs - source
    +    
    1
     2
     3
     4
    @@ -270,7 +271,7 @@
     270
     271
     272
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -469,7 +470,7 @@
             });
     
             if num_negative_samples > 0 {
    -            let msg = format!("Accumulated {} negative samples", num_negative_samples);
    +            let msg = format!("Accumulated {} negative samples", num_negative_samples);
                 record_error(
                     glean,
                     &self.meta,
    @@ -482,7 +483,7 @@
     
         /// Gets the currently stored histogram.
         #[doc(hidden)]
    -    pub fn get_value<'a, S: Into<Option<&'a str>>>(
    +    pub fn get_value<'a, S: Into<Option<&'a str>>>(
             &self,
             glean: &Glean,
             ping_name: S,
    @@ -508,7 +509,7 @@
         ///
         /// Gets the currently stored value as an integer.
         ///
    -    /// This doesn't clear the stored value.
    +    /// This doesn't clear the stored value.
         ///
         /// # Arguments
         ///
    @@ -542,5 +543,4 @@
             })
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/metrics/datetime.rs.html b/docs/src/glean_core/metrics/datetime.rs.html index 2485050806..e6abb030d6 100644 --- a/docs/src/glean_core/metrics/datetime.rs.html +++ b/docs/src/glean_core/metrics/datetime.rs.html @@ -1,4 +1,5 @@ -datetime.rs - source
    1
    +datetime.rs - source
    +    
    1
     2
     3
     4
    @@ -323,7 +324,7 @@
     323
     324
     325
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -370,10 +371,10 @@
     }
     
     impl fmt::Debug for Datetime {
    -    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    +    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
             write!(
                 f,
    -            "Datetime({:04}-{:02}-{:02}T{:02}:{:02}:{:02}.{:03}{}{:02}{:02})",
    +            "Datetime({:04}-{:02}-{:02}T{:02}:{:02}:{:02}.{:03}{}{:02}{:02})",
                 self.year,
                 self.month,
                 self.day,
    @@ -381,7 +382,7 @@
                 self.minute,
                 self.second,
                 self.nanosecond,
    -            if self.offset_seconds < 0 { "-" } else { "+" },
    +            if self.offset_seconds < 0 { "-" } else { "+" },
                 self.offset_seconds / 3600,        // hour part
                 (self.offset_seconds % 3600) / 60, // minute part
             )
    @@ -477,7 +478,7 @@
                     let timezone_offset = FixedOffset::east_opt(dt.offset_seconds);
                     if timezone_offset.is_none() {
                         let msg = format!(
    -                        "Invalid timezone offset {}. Not recording.",
    +                        "Invalid timezone offset {}. Not recording.",
                             dt.offset_seconds
                         );
                         record_error(glean, &self.meta, ErrorType::InvalidValue, msg, None);
    @@ -495,7 +496,7 @@
                             glean,
                             &self.meta,
                             ErrorType::InvalidValue,
    -                        "Invalid input data. Not recording.",
    +                        "Invalid input data. Not recording.",
                             None,
                         );
                         return;
    @@ -513,7 +514,7 @@
     
         /// Gets the stored datetime value.
         #[doc(hidden)]
    -    pub fn get_value<'a, S: Into<Option<&'a str>>>(
    +    pub fn get_value<'a, S: Into<Option<&'a str>>>(
             &self,
             glean: &Glean,
             ping_name: S,
    @@ -534,7 +535,7 @@
                 ),
                 TimeUnit::Microsecond => {
                     eprintln!(
    -                    "microseconds. nanoseconds={}, nanoseconds/1000={}",
    +                    "microseconds. nanoseconds={}, nanoseconds/1000={}",
                         time.nanosecond(),
                         time.nanosecond() / 1000
                     );
    @@ -648,5 +649,4 @@
             })
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/metrics/denominator.rs.html b/docs/src/glean_core/metrics/denominator.rs.html index a46c93047b..03e85655c1 100644 --- a/docs/src/glean_core/metrics/denominator.rs.html +++ b/docs/src/glean_core/metrics/denominator.rs.html @@ -1,4 +1,5 @@ -denominator.rs - source
    1
    +denominator.rs - source
    +    
    1
     2
     3
     4
    @@ -145,7 +146,7 @@
     145
     146
     147
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -213,7 +214,7 @@
                     glean,
                     self.meta(),
                     ErrorType::InvalidValue,
    -                format!("Added negative or zero value {}", amount),
    +                format!("Added negative or zero value {}", amount),
                     None,
                 );
                 return;
    @@ -237,7 +238,7 @@
         ///
         /// Gets the currently stored value as an integer.
         ///
    -    /// This doesn't clear the stored value.
    +    /// This doesn't clear the stored value.
         ///
         /// # Arguments
         ///
    @@ -253,7 +254,7 @@
         }
     
         #[doc(hidden)]
    -    pub fn get_value<'a, S: Into<Option<&'a str>>>(
    +    pub fn get_value<'a, S: Into<Option<&'a str>>>(
             &self,
             glean: &Glean,
             ping_name: S,
    @@ -292,5 +293,4 @@
             })
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/metrics/event.rs.html b/docs/src/glean_core/metrics/event.rs.html index f1cc2ba22f..58ce42424d 100644 --- a/docs/src/glean_core/metrics/event.rs.html +++ b/docs/src/glean_core/metrics/event.rs.html @@ -1,4 +1,5 @@ -event.rs - source
    1
    +event.rs - source
    +    
    1
     2
     3
     4
    @@ -226,7 +227,7 @@
     226
     227
     228
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -248,7 +249,7 @@
     ///
     /// Events allow recording of e.g. individual occurences of user actions, say
     /// every time a view was open and from where. Each time you record an event, it
    -/// records a timestamp, the event's name and a set of custom values.
    +/// records a timestamp, the event's name and a set of custom values.
     #[derive(Clone, Debug)]
     pub struct EventMetric {
         meta: CommonMetricDataInternal,
    @@ -288,7 +289,7 @@
     
         /// Record a new event with a provided timestamp.
         ///
    -    /// It's the caller's responsibility to ensure the timestamp comes from the same clock source.
    +    /// It's the caller's responsibility to ensure the timestamp comes from the same clock source.
         ///
         /// # Arguments
         ///
    @@ -308,7 +309,7 @@
                 if sent {
                     let state = crate::global_state().lock().unwrap();
                     if let Err(e) = state.callbacks.trigger_upload() {
    -                    log::error!("Triggering upload failed. Error: {}", e);
    +                    log::error!("Triggering upload failed. Error: {}", e);
                     }
                 }
             });
    @@ -337,7 +338,7 @@
             let mut extra_strings = HashMap::new();
             for (k, v) in extra.into_iter() {
                 if !self.allowed_extra_keys.contains(&k) {
    -                let msg = format!("Invalid key index {}", k);
    +                let msg = format!("Invalid key index {}", k);
                     record_error(glean, &self.meta, ErrorType::InvalidValue, msg, None);
                     return Err(());
                 }
    @@ -382,7 +383,7 @@
                     extra_strings.replace(Default::default());
                 }
                 let map = extra_strings.get_or_insert(Default::default());
    -            map.insert("glean_timestamp".to_string(), precise_timestamp.to_string());
    +            map.insert("glean_timestamp".to_string(), precise_timestamp.to_string());
             }
     
             glean
    @@ -394,7 +395,7 @@
         ///
         /// Get the vector of currently stored events for this event metric.
         #[doc(hidden)]
    -    pub fn get_value<'a, S: Into<Option<&'a str>>>(
    +    pub fn get_value<'a, S: Into<Option<&'a str>>>(
             &self,
             glean: &Glean,
             ping_name: S,
    @@ -410,7 +411,7 @@
             events.map(|mut evts| {
                 for ev in &mut evts {
                     let Some(extra) = &mut ev.extra else { continue };
    -                extra.remove("glean_timestamp");
    +                extra.remove("glean_timestamp");
                     if extra.is_empty() {
                         ev.extra = None;
                     }
    @@ -424,7 +425,7 @@
         ///
         /// Get the vector of currently stored events for this event metric.
         ///
    -    /// This doesn't clear the stored value.
    +    /// This doesn't clear the stored value.
         ///
         /// # Arguments
         ///
    @@ -454,5 +455,4 @@
             })
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/metrics/experiment.rs.html b/docs/src/glean_core/metrics/experiment.rs.html index e346200cad..6bb79e306e 100644 --- a/docs/src/glean_core/metrics/experiment.rs.html +++ b/docs/src/glean_core/metrics/experiment.rs.html @@ -1,4 +1,5 @@ -experiment.rs - source
    1
    +experiment.rs - source
    +    
    1
     2
     3
     4
    @@ -273,7 +274,7 @@
     273
     274
     275
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -332,7 +333,7 @@
             // Make sure that experiment id is within the expected limit.
             let truncated_id = if id.len() > MAX_EXPERIMENTS_IDS_LEN {
                 let msg = format!(
    -                "Value length {} for experiment id exceeds maximum of {}",
    +                "Value length {} for experiment id exceeds maximum of {}",
                     id.len(),
                     MAX_EXPERIMENTS_IDS_LEN
                 );
    @@ -345,9 +346,9 @@
             let new_experiment = Self {
                 meta: CommonMetricDataInternal {
                     inner: CommonMetricData {
    -                    name: format!("{}#experiment", truncated_id),
    -                    // We don't need a category, the name is already unique
    -                    category: "".into(),
    +                    name: format!("{}#experiment", truncated_id),
    +                    // We don't need a category, the name is already unique
    +                    category: "".into(),
                         send_in_pings: vec![INTERNAL_STORAGE.into()],
                         lifetime: Lifetime::Application,
                         ..Default::default()
    @@ -399,7 +400,7 @@
             // Apply limits to extras
             if extra.len() > MAX_EXPERIMENTS_EXTRAS_SIZE {
                 let msg = format!(
    -                "Extra hash map length {} exceeds maximum of {}",
    +                "Extra hash map length {} exceeds maximum of {}",
                     extra.len(),
                     MAX_EXPERIMENTS_EXTRAS_SIZE
                 );
    @@ -460,7 +461,7 @@
                 INTERNAL_STORAGE,
                 &self.meta.inner.name,
             ) {
    -            log::error!("Failed to set experiment as inactive: {:?}", e);
    +            log::error!("Failed to set experiment as inactive: {:?}", e);
             }
         }
     
    @@ -469,7 +470,7 @@
         /// Gets the currently stored experiment data as a JSON representation of
         /// the RecordedExperiment.
         ///
    -    /// This doesn't clear the stored value.
    +    /// This doesn't clear the stored value.
         ///
         /// # Arguments
         ///
    @@ -499,14 +500,14 @@
         #[test]
         fn stable_serialization() {
             let experiment_empty = RecordedExperiment {
    -            branch: "branch".into(),
    +            branch: "branch".into(),
                 extra: Default::default(),
             };
     
             let mut data = HashMap::new();
    -        data.insert("a key".to_string(), "a value".to_string());
    +        data.insert("a key".to_string(), "a value".to_string());
             let experiment_data = RecordedExperiment {
    -            branch: "branch".into(),
    +            branch: "branch".into(),
                 extra: Some(data),
             };
     
    @@ -524,12 +525,12 @@
         }
     
         #[test]
    -    #[rustfmt::skip] // Let's not add newlines unnecessary
    +    #[rustfmt::skip] // Let's not add newlines unnecessary
         fn deserialize_old_encoding() {
             // generated by `bincode::serialize` as of Glean commit ac27fceb7c0d5a7288d7d569e8c5c5399a53afb2
    -        // empty was generated from: `RecordedExperiment { branch: "branch".into(), extra: None, }`
    +        // empty was generated from: `RecordedExperiment { branch: "branch".into(), extra: None, }`
             let empty_bin = vec![6, 0, 0, 0, 0, 0, 0, 0, 98, 114, 97, 110, 99, 104];
    -        // data was generated from: RecordedExperiment { branch: "branch".into(), extra: Some({"a key": "a value"}), };
    +        // data was generated from: RecordedExperiment { branch: "branch".into(), extra: Some({"a key": "a value"}), };
             let data_bin  = vec![6, 0, 0, 0, 0, 0, 0, 0, 98, 114, 97, 110, 99, 104,
                                  1, 1, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,
                                  97, 32, 107, 101, 121, 7, 0, 0, 0, 0, 0, 0, 0, 97,
    @@ -537,10 +538,10 @@
     
     
             let mut data = HashMap::new();
    -        data.insert("a key".to_string(), "a value".to_string());
    -        let experiment_data = RecordedExperiment { branch: "branch".into(), extra: Some(data), };
    +        data.insert("a key".to_string(), "a value".to_string());
    +        let experiment_data = RecordedExperiment { branch: "branch".into(), extra: Some(data), };
     
    -        // We can't actually decode old experiment data.
    +        // We can't actually decode old experiment data.
             // Luckily Glean did store experiments in the database before commit ac27fceb7c0d5a7288d7d569e8c5c5399a53afb2.
             let experiment_empty: Result<RecordedExperiment, _> = bincode::deserialize(&empty_bin);
             assert!(experiment_empty.is_err());
    @@ -548,5 +549,4 @@
             assert_eq!(experiment_data, bincode::deserialize(&data_bin).unwrap());
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/metrics/labeled.rs.html b/docs/src/glean_core/metrics/labeled.rs.html index 0a2f388aa8..cd2a621994 100644 --- a/docs/src/glean_core/metrics/labeled.rs.html +++ b/docs/src/glean_core/metrics/labeled.rs.html @@ -1,4 +1,5 @@ -labeled.rs - source
    1
    +labeled.rs - source
    +    
    1
     2
     3
     4
    @@ -381,7 +382,7 @@
     381
     382
     383
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -399,7 +400,7 @@
     use crate::Glean;
     
     const MAX_LABELS: usize = 16;
    -const OTHER_LABEL: &str = "__other__";
    +const OTHER_LABEL: &str = "__other__";
     const MAX_LABEL_LENGTH: usize = 71;
     
     /// A labeled counter.
    @@ -456,7 +457,7 @@
     /// Labeled metrics allow to record multiple sub-metrics of the same type under different string labels.
     #[derive(Debug)]
     pub struct LabeledMetric<T> {
    -    labels: Option<Vec<Cow<'static, str>>>,
    +    labels: Option<Vec<Cow<'static, str>>>,
         /// Type of the underlying metric
         /// We hold on to an instance of it, which is cloned to create new modified instances.
         submetric: T,
    @@ -490,7 +491,7 @@
             fn new_inner(meta: LabeledMetricData) -> Self {
                 match meta {
                     LabeledMetricData::Common { cmd } => Self::new(cmd),
    -                _ => panic!("Incorrect construction of Labeled<CounterMetric>"),
    +                _ => panic!("Incorrect construction of Labeled<CounterMetric>"),
                 }
             }
         }
    @@ -499,7 +500,7 @@
             fn new_inner(meta: LabeledMetricData) -> Self {
                 match meta {
                     LabeledMetricData::Common { cmd } => Self::new(cmd),
    -                _ => panic!("Incorrect construction of Labeled<BooleanMetric>"),
    +                _ => panic!("Incorrect construction of Labeled<BooleanMetric>"),
                 }
             }
         }
    @@ -508,7 +509,7 @@
             fn new_inner(meta: LabeledMetricData) -> Self {
                 match meta {
                     LabeledMetricData::Common { cmd } => Self::new(cmd),
    -                _ => panic!("Incorrect construction of Labeled<StringMetric>"),
    +                _ => panic!("Incorrect construction of Labeled<StringMetric>"),
                 }
             }
         }
    @@ -523,7 +524,7 @@
                         bucket_count,
                         histogram_type,
                     } => Self::new(cmd, range_min, range_max, bucket_count, histogram_type),
    -                _ => panic!("Incorrect construction of Labeled<CustomDistributionMetric>"),
    +                _ => panic!("Incorrect construction of Labeled<CustomDistributionMetric>"),
                 }
             }
         }
    @@ -532,7 +533,7 @@
             fn new_inner(meta: LabeledMetricData) -> Self {
                 match meta {
                     LabeledMetricData::MemoryDistribution { cmd, unit } => Self::new(cmd, unit),
    -                _ => panic!("Incorrect construction of Labeled<MemoryDistributionMetric>"),
    +                _ => panic!("Incorrect construction of Labeled<MemoryDistributionMetric>"),
                 }
             }
         }
    @@ -541,7 +542,7 @@
             fn new_inner(meta: LabeledMetricData) -> Self {
                 match meta {
                     LabeledMetricData::TimingDistribution { cmd, unit } => Self::new(cmd, unit),
    -                _ => panic!("Incorrect construction of Labeled<TimingDistributionMetric>"),
    +                _ => panic!("Incorrect construction of Labeled<TimingDistributionMetric>"),
                 }
             }
         }
    @@ -573,13 +574,13 @@
         /// See [`get`](LabeledMetric::get) for information on how static or dynamic labels are handled.
         pub fn new(
             meta: LabeledMetricData,
    -        labels: Option<Vec<Cow<'static, str>>>,
    +        labels: Option<Vec<Cow<'static, str>>>,
         ) -> LabeledMetric<T> {
             let submetric = T::new_labeled(meta);
             LabeledMetric::new_inner(submetric, labels)
         }
     
    -    fn new_inner(submetric: T, labels: Option<Vec<Cow<'static, str>>>) -> LabeledMetric<T> {
    +    fn new_inner(submetric: T, labels: Option<Vec<Cow<'static, str>>>) -> LabeledMetric<T> {
             let label_map = Default::default();
             LabeledMetric {
                 labels,
    @@ -617,7 +618,7 @@
         ///
         /// The requested label if it is in the list of allowed labels.
         /// Otherwise `OTHER_LABEL` is returned.
    -    fn static_label<'a>(&self, label: &'a str) -> &'a str {
    +    fn static_label<'a>(&self, label: &'a str) -> &'a str {
             debug_assert!(self.labels.is_some());
             let labels = self.labels.as_ref().unwrap();
             if labels.iter().any(|l| l == label) {
    @@ -643,7 +644,7 @@
     
             // The handle is a unique number per metric.
             // The label identifies the submetric.
    -        let id = format!("{}/{}", self.submetric.meta().base_identifier(), label);
    +        let id = format!("{}/{}", self.submetric.meta().base_identifier(), label);
     
             let mut map = self.label_map.lock().unwrap();
             match map.entry(id) {
    @@ -691,17 +692,17 @@
         }
     }
     
    -/// Combines a metric's base identifier and label
    +/// Combines a metric's base identifier and label
     pub fn combine_base_identifier_and_label(base_identifer: &str, label: &str) -> String {
    -    format!("{}/{}", base_identifer, label)
    +    format!("{}/{}", base_identifer, label)
     }
     
     /// Strips the label off of a complete identifier
     pub fn strip_label(identifier: &str) -> &str {
    -    identifier.split_once('/').map_or(identifier, |s| s.0)
    +    identifier.split_once('/').map_or(identifier, |s| s.0)
     }
     
    -/// Validates a dynamic label, changing it to `OTHER_LABEL` if it's invalid.
    +/// Validates a dynamic label, changing it to `OTHER_LABEL` if it's invalid.
     ///
     /// Checks the requested label against limitations, such as the label length and allowed
     /// characters.
    @@ -744,14 +745,14 @@
             true
         } else if label.len() > MAX_LABEL_LENGTH {
             let msg = format!(
    -            "label length {} exceeds maximum of {}",
    +            "label length {} exceeds maximum of {}",
                 label.len(),
                 MAX_LABEL_LENGTH
             );
             record_error(glean, meta, ErrorType::InvalidLabel, msg, None);
             true
         } else if label.chars().any(|c| !c.is_ascii() || c.is_ascii_control()) {
    -        let msg = format!("label must be printable ascii, got '{}'", label);
    +        let msg = format!("label must be printable ascii, got '{}'", label);
             record_error(glean, meta, ErrorType::InvalidLabel, msg, None);
             true
         } else {
    @@ -764,5 +765,4 @@
             key
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/metrics/memory_distribution.rs.html b/docs/src/glean_core/metrics/memory_distribution.rs.html index 9d963d80b9..3111eb56f8 100644 --- a/docs/src/glean_core/metrics/memory_distribution.rs.html +++ b/docs/src/glean_core/metrics/memory_distribution.rs.html @@ -1,4 +1,5 @@ -memory_distribution.rs - source
    1
    +memory_distribution.rs - source
    +    
    1
     2
     3
     4
    @@ -305,7 +306,7 @@
     305
     306
     307
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -326,7 +327,7 @@
     // The buckets per each order of magnitude of the logarithm.
     const BUCKETS_PER_MAGNITUDE: f64 = 16.0;
     
    -// Set a maximum recordable value of 1 terabyte so the buckets aren't
    +// Set a maximum recordable value of 1 terabyte so the buckets aren't
     // completely unbounded.
     const MAX_BYTES: u64 = 1 << 40;
     
    @@ -423,7 +424,7 @@
                     glean,
                     &self.meta,
                     ErrorType::InvalidValue,
    -                "Accumulated a negative sample",
    +                "Accumulated a negative sample",
                     None,
                 );
                 return;
    @@ -432,15 +433,15 @@
             let mut sample = self.memory_unit.as_bytes(sample as u64);
     
             if sample > MAX_BYTES {
    -            let msg = "Sample is bigger than 1 terabyte";
    +            let msg = "Sample is bigger than 1 terabyte";
                 record_error(glean, &self.meta, ErrorType::InvalidValue, msg, None);
                 sample = MAX_BYTES;
             }
     
    -        // Let's be defensive here:
    +        // Let's be defensive here:
             // The uploader tries to store some memory distribution metrics,
             // but in tests that storage might be gone already.
    -        // Let's just ignore those.
    +        // Let's just ignore those.
             // We do the same for counters and timing distributions.
             // This should never happen in real app usage.
             if let Some(storage) = glean.storage_opt() {
    @@ -457,7 +458,7 @@
                 });
             } else {
                 log::warn!(
    -                "Couldn't get storage. Can't record memory distribution '{}'.",
    +                "Couldn't get storage. Can't record memory distribution '{}'.",
                     self.meta.base_identifier()
                 );
             }
    @@ -471,7 +472,7 @@
         /// sample.
         ///
         /// Please note that this assumes that the provided samples are already in
    -    /// the "unit" declared by the instance of the metric type (e.g. if the the
    +    /// the "unit" declared by the instance of the metric type (e.g. if the the
         /// instance this method was called on is using [`MemoryUnit::Kilobyte`], then
         /// `samples` are assumed to be in that unit).
         ///
    @@ -527,7 +528,7 @@
             });
     
             if num_negative_samples > 0 {
    -            let msg = format!("Accumulated {} negative samples", num_negative_samples);
    +            let msg = format!("Accumulated {} negative samples", num_negative_samples);
                 record_error(
                     glean,
                     &self.meta,
    @@ -539,7 +540,7 @@
     
             if num_too_log_samples > 0 {
                 let msg = format!(
    -                "Accumulated {} samples larger than 1TB",
    +                "Accumulated {} samples larger than 1TB",
                     num_too_log_samples
                 );
                 record_error(
    @@ -554,7 +555,7 @@
     
         /// Gets the currently stored value synchronously.
         #[doc(hidden)]
    -    pub fn get_value<'a, S: Into<Option<&'a str>>>(
    +    pub fn get_value<'a, S: Into<Option<&'a str>>>(
             &self,
             glean: &Glean,
             ping_name: S,
    @@ -578,7 +579,7 @@
         ///
         /// Gets the currently stored value.
         ///
    -    /// This doesn't clear the stored value.
    +    /// This doesn't clear the stored value.
         ///
         /// # Arguments
         ///
    @@ -612,5 +613,4 @@
             })
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/metrics/memory_unit.rs.html b/docs/src/glean_core/metrics/memory_unit.rs.html index 279a1929fb..19f9bd79b9 100644 --- a/docs/src/glean_core/metrics/memory_unit.rs.html +++ b/docs/src/glean_core/metrics/memory_unit.rs.html @@ -1,4 +1,5 @@ -memory_unit.rs - source
    1
    +memory_unit.rs - source
    +    
    1
     2
     3
     4
    @@ -60,7 +61,7 @@
     60
     61
     62
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -71,7 +72,7 @@
     /// Different resolutions supported by the memory related metric types (e.g.
     /// MemoryDistributionMetric).
     #[derive(Copy, Clone, Debug, Deserialize, Serialize)]
    -#[serde(rename_all = "lowercase")]
    +#[serde(rename_all = "lowercase")]
     #[repr(i32)] // use i32 to be compatible with our JNA definition
     pub enum MemoryUnit {
         /// 1 byte
    @@ -122,5 +123,4 @@
             }
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/metrics/mod.rs.html b/docs/src/glean_core/metrics/mod.rs.html index d94a76c255..cb3643382c 100644 --- a/docs/src/glean_core/metrics/mod.rs.html +++ b/docs/src/glean_core/metrics/mod.rs.html @@ -1,4 +1,5 @@ -mod.rs - source
    1
    +mod.rs - source
    +    
    1
     2
     3
     4
    @@ -296,7 +297,7 @@
     296
     297
     298
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -499,14 +500,14 @@
             if epoch == remote_settings_epoch {
                 return disabled == 0;
             }
    -        // The epoch's didn't match so we need to look up the disabled flag
    +        // The epoch's didn't match so we need to look up the disabled flag
             // by the base_identifier from the in-memory HashMap
             let remote_settings_config = &glean.remote_settings_config.lock().unwrap();
             // Get the value from the remote configuration if it is there, otherwise return the default value.
             let current_disabled = {
                 let base_id = self.meta().base_identifier();
                 let identifier = base_id
    -                .split_once('/')
    +                .split_once('/')
                     .map(|split| split.0)
                     .unwrap_or(&base_id);
                 // NOTE: The `!` preceding the `*is_enabled` is important for inverting the logic since the
    @@ -538,31 +539,31 @@
         ///
         /// This determines the section of the ping to place the metric data in when
         /// assembling the ping payload.
    -    pub fn ping_section(&self) -> &'static str {
    +    pub fn ping_section(&self) -> &'static str {
             match self {
    -            Metric::Boolean(_) => "boolean",
    -            Metric::Counter(_) => "counter",
    +            Metric::Boolean(_) => "boolean",
    +            Metric::Counter(_) => "counter",
                 // Custom distributions are in the same section, no matter what bucketing.
    -            Metric::CustomDistributionExponential(_) => "custom_distribution",
    -            Metric::CustomDistributionLinear(_) => "custom_distribution",
    -            Metric::Datetime(_, _) => "datetime",
    -            Metric::Experiment(_) => panic!("Experiments should not be serialized through this"),
    -            Metric::Quantity(_) => "quantity",
    -            Metric::Rate(..) => "rate",
    -            Metric::String(_) => "string",
    -            Metric::StringList(_) => "string_list",
    -            Metric::Timespan(..) => "timespan",
    -            Metric::TimingDistribution(_) => "timing_distribution",
    -            Metric::Url(_) => "url",
    -            Metric::Uuid(_) => "uuid",
    -            Metric::MemoryDistribution(_) => "memory_distribution",
    -            Metric::Jwe(_) => "jwe",
    -            Metric::Text(_) => "text",
    -            Metric::Object(_) => "object",
    +            Metric::CustomDistributionExponential(_) => "custom_distribution",
    +            Metric::CustomDistributionLinear(_) => "custom_distribution",
    +            Metric::Datetime(_, _) => "datetime",
    +            Metric::Experiment(_) => panic!("Experiments should not be serialized through this"),
    +            Metric::Quantity(_) => "quantity",
    +            Metric::Rate(..) => "rate",
    +            Metric::String(_) => "string",
    +            Metric::StringList(_) => "string_list",
    +            Metric::Timespan(..) => "timespan",
    +            Metric::TimingDistribution(_) => "timing_distribution",
    +            Metric::Url(_) => "url",
    +            Metric::Uuid(_) => "uuid",
    +            Metric::MemoryDistribution(_) => "memory_distribution",
    +            Metric::Jwe(_) => "jwe",
    +            Metric::Text(_) => "text",
    +            Metric::Object(_) => "object",
             }
         }
     
    -    /// The JSON representation of the metric's data
    +    /// The JSON representation of the metric's data
         pub fn as_json(&self) -> JsonValue {
             match self {
                 Metric::Boolean(b) => json!(b),
    @@ -575,12 +576,12 @@
                 Metric::Experiment(e) => e.as_json(),
                 Metric::Quantity(q) => json!(q),
                 Metric::Rate(num, den) => {
    -                json!({"numerator": num, "denominator": den})
    +                json!({"numerator": num, "denominator": den})
                 }
                 Metric::String(s) => json!(s),
                 Metric::StringList(v) => json!(v),
                 Metric::Timespan(time, time_unit) => {
    -                json!({"value": time_unit.duration_convert(*time), "time_unit": time_unit})
    +                json!({"value": time_unit.duration_convert(*time), "time_unit": time_unit})
                 }
                 Metric::TimingDistribution(hist) => json!(timing_distribution::snapshot(hist)),
                 Metric::Url(s) => json!(s),
    @@ -589,10 +590,9 @@
                 Metric::Jwe(s) => json!(s),
                 Metric::Text(s) => json!(s),
                 Metric::Object(s) => {
    -                serde_json::from_str(s).expect("object storage should have been json")
    +                serde_json::from_str(s).expect("object storage should have been json")
                 }
             }
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/metrics/numerator.rs.html b/docs/src/glean_core/metrics/numerator.rs.html index 2aa2a65f32..9689b275cb 100644 --- a/docs/src/glean_core/metrics/numerator.rs.html +++ b/docs/src/glean_core/metrics/numerator.rs.html @@ -1,4 +1,5 @@ -numerator.rs - source
    1
    +numerator.rs - source
    +    
    1
     2
     3
     4
    @@ -94,7 +95,7 @@
     94
     95
     96
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -151,7 +152,7 @@
         ///
         /// Gets the currently stored value as a pair of integers.
         ///
    -    /// This doesn't clear the stored value.
    +    /// This doesn't clear the stored value.
         ///
         /// # Arguments
         ///
    @@ -167,7 +168,7 @@
         }
     
         #[doc(hidden)]
    -    pub fn get_value<'a, S: Into<Option<&'a str>>>(
    +    pub fn get_value<'a, S: Into<Option<&'a str>>>(
             &self,
             glean: &Glean,
             ping_name: S,
    @@ -190,5 +191,4 @@
             self.0.test_get_num_recorded_errors(error)
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/metrics/object.rs.html b/docs/src/glean_core/metrics/object.rs.html index 5e6ffc441b..b0358487c6 100644 --- a/docs/src/glean_core/metrics/object.rs.html +++ b/docs/src/glean_core/metrics/object.rs.html @@ -1,4 +1,5 @@ -object.rs - source
    1
    +object.rs - source
    +    
    1
     2
     3
     4
    @@ -162,7 +163,7 @@
     162
     163
     164
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -236,7 +237,7 @@
         /// Sets to the specified structure.
         ///
         /// Parses the passed JSON string.
    -    /// If it can't be parsed into a valid object it records an invalid value error.
    +    /// If it can't be parsed into a valid object it records an invalid value error.
         ///
         /// Note: This does not check the structure. This needs to be done by the wrapper.
         ///
    @@ -249,7 +250,7 @@
                 let object = match serde_json::from_str(&object) {
                     Ok(object) => object,
                     Err(_) => {
    -                    let msg = "Value did not match predefined schema";
    +                    let msg = "Value did not match predefined schema";
                         record_error(glean, &metric.meta, ErrorType::InvalidValue, msg, None);
                         return;
                     }
    @@ -266,14 +267,14 @@
         pub fn record_schema_error(&self) {
             let metric = self.clone();
             crate::launch_with_glean(move |glean| {
    -            let msg = "Value did not match predefined schema";
    +            let msg = "Value did not match predefined schema";
                 record_error(glean, &metric.meta, ErrorType::InvalidValue, msg, None);
             });
         }
     
         /// Get current value
         #[doc(hidden)]
    -    pub fn get_value<'a, S: Into<Option<&'a str>>>(
    +    pub fn get_value<'a, S: Into<Option<&'a str>>>(
             &self,
             glean: &Glean,
             ping_name: S,
    @@ -297,7 +298,7 @@
         ///
         /// Gets the currently stored value as JSON.
         ///
    -    /// This doesn't clear the stored value.
    +    /// This doesn't clear the stored value.
         pub fn test_get_value(&self, ping_name: Option<String>) -> Option<JsonValue> {
             crate::block_on_dispatcher();
             let value = crate::core::with_glean(|glean| self.get_value(glean, ping_name.as_deref()));
    @@ -326,5 +327,4 @@
             })
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/metrics/ping.rs.html b/docs/src/glean_core/metrics/ping.rs.html index 56e1120e76..637b072a6c 100644 --- a/docs/src/glean_core/metrics/ping.rs.html +++ b/docs/src/glean_core/metrics/ping.rs.html @@ -1,4 +1,5 @@ -ping.rs - source
    1
    +ping.rs - source
    +    
    1
     2
     3
     4
    @@ -317,7 +318,7 @@
     317
     318
     319
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -352,21 +353,21 @@
         pub enabled: bool,
         /// Other pings that should be scheduled when this ping is sent.
         pub schedules_pings: Vec<String>,
    -    /// The "reason" codes that this ping can send
    +    /// The "reason" codes that this ping can send
         pub reason_codes: Vec<String>,
     }
     
     impl fmt::Debug for PingType {
    -    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    -        f.debug_struct("PingType")
    -            .field("name", &self.0.name)
    -            .field("include_client_id", &self.0.include_client_id)
    -            .field("send_if_empty", &self.0.send_if_empty)
    -            .field("precise_timestamps", &self.0.precise_timestamps)
    -            .field("include_info_sections", &self.0.include_info_sections)
    -            .field("enabled", &self.0.enabled)
    -            .field("schedules_pings", &self.0.schedules_pings)
    -            .field("reason_codes", &self.0.reason_codes)
    +    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    +        f.debug_struct("PingType")
    +            .field("name", &self.0.name)
    +            .field("include_client_id", &self.0.include_client_id)
    +            .field("send_if_empty", &self.0.send_if_empty)
    +            .field("precise_timestamps", &self.0.precise_timestamps)
    +            .field("include_info_sections", &self.0.include_info_sections)
    +            .field("enabled", &self.0.enabled)
    +            .field("schedules_pings", &self.0.schedules_pings)
    +            .field("reason_codes", &self.0.reason_codes)
                 .finish()
         }
     }
    @@ -500,7 +501,7 @@
                 if sent {
                     let state = crate::global_state().lock().unwrap();
                     if let Err(e) = state.callbacks.trigger_upload() {
    -                    log::error!("Triggering upload failed. Error: {}", e);
    +                    log::error!("Triggering upload failed. Error: {}", e);
                     }
                 }
             })
    @@ -514,7 +515,7 @@
         #[doc(hidden)]
         pub fn submit_sync(&self, glean: &Glean, reason: Option<&str>) -> bool {
             if !glean.is_upload_enabled() {
    -            log::info!("Glean disabled: not submitting any pings.");
    +            log::info!("Glean disabled: not submitting any pings.");
                 return false;
             }
     
    @@ -523,7 +524,7 @@
             // Allowing `clippy::manual_filter`.
             // This causes a false positive.
             // We have a side-effect in the `else` branch,
    -        // so shouldn't delete it.
    +        // so shouldn't delete it.
             #[allow(unknown_lints)]
             #[allow(clippy::manual_filter)]
             let corrected_reason = match reason {
    @@ -531,7 +532,7 @@
                     if ping.reason_codes.contains(&reason.to_string()) {
                         Some(reason)
                     } else {
    -                    log::error!("Invalid reason code {} for ping {}", reason, ping.name);
    +                    log::error!("Invalid reason code {} for ping {}", reason, ping.name);
                         None
                     }
                 }
    @@ -544,7 +545,7 @@
             match ping_maker.collect(glean, self, corrected_reason, &doc_id, &url_path) {
                 None => {
                     log::info!(
    -                    "No content for ping '{}', therefore no ping queued.",
    +                    "No content for ping '{}', therefore no ping queued.",
                         ping.name
                     );
                     false
    @@ -552,7 +553,7 @@
                 Some(ping) => {
                     if !self.enabled(glean) {
                         log::info!(
    -                        "The ping '{}' is disabled and will be discarded and not submitted",
    +                        "The ping '{}' is disabled and will be discarded and not submitted",
                             ping.name
                         );
     
    @@ -571,7 +572,7 @@
     
                     if let Err(e) = ping_maker.store_ping(glean.get_data_path(), &ping) {
                         log::warn!(
    -                        "IO error while writing ping to file: {}. Enqueuing upload of what we have in memory.",
    +                        "IO error while writing ping to file: {}. Enqueuing upload of what we have in memory.",
                             e
                         );
                         glean.additional_metrics.io_errors.add_sync(glean, 1);
    @@ -580,8 +581,8 @@
                         // However `ping.content` is already a `JsonValue`,
                         // so both scenarios should be impossible.
                         let content =
    -                        ::serde_json::to_string(&ping.content).expect("ping serialization failed");
    -                    // TODO: Shouldn't we consolidate on a single collected Ping representation?
    +                        ::serde_json::to_string(&ping.content).expect("ping serialization failed");
    +                    // TODO: Shouldn't we consolidate on a single collected Ping representation?
                         let ping = PingPayload {
                             document_id: ping.doc_id.to_string(),
                             upload_path: ping.url_path.to_string(),
    @@ -598,7 +599,7 @@
                     glean.upload_manager.enqueue_ping_from_file(glean, &doc_id);
     
                     log::info!(
    -                    "The ping '{}' was submitted and will be sent as soon as possible",
    +                    "The ping '{}' was submitted and will be sent as soon as possible",
                         ping.name
                     );
     
    @@ -611,7 +612,7 @@
     
                         if !ping_schedule.is_empty() {
                             log::info!(
    -                            "The ping '{}' is being used to schedule other pings: {:?}",
    +                            "The ping '{}' is being used to schedule other pings: {:?}",
                                 ping.name,
                                 ping_schedule
                             );
    @@ -622,7 +623,7 @@
                         }
                     } else {
                         log::info!(
    -                        "The ping '{}' is being used to schedule other pings: {:?}",
    +                        "The ping '{}' is being used to schedule other pings: {:?}",
                             ping.name,
                             ping.schedules_pings
                         );
    @@ -636,5 +637,4 @@
             }
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/metrics/quantity.rs.html b/docs/src/glean_core/metrics/quantity.rs.html index 667fc2f1ae..bbc5fdf8dc 100644 --- a/docs/src/glean_core/metrics/quantity.rs.html +++ b/docs/src/glean_core/metrics/quantity.rs.html @@ -1,4 +1,5 @@ -quantity.rs - source
    1
    +quantity.rs - source
    +    
    1
     2
     3
     4
    @@ -131,7 +132,7 @@
     131
     132
     133
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -193,7 +194,7 @@
                     glean,
                     &self.meta,
                     ErrorType::InvalidValue,
    -                format!("Set negative value {}", value),
    +                format!("Set negative value {}", value),
                     None,
                 );
                 return;
    @@ -206,7 +207,7 @@
     
         /// Get current value.
         #[doc(hidden)]
    -    pub fn get_value<'a, S: Into<Option<&'a str>>>(
    +    pub fn get_value<'a, S: Into<Option<&'a str>>>(
             &self,
             glean: &Glean,
             ping_name: S,
    @@ -230,7 +231,7 @@
         ///
         /// Gets the currently stored value as an integer.
         ///
    -    /// This doesn't clear the stored value.
    +    /// This doesn't clear the stored value.
         ///
         /// # Arguments
         ///
    @@ -264,5 +265,4 @@
             })
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/metrics/rate.rs.html b/docs/src/glean_core/metrics/rate.rs.html index bbc2362cce..45066ed266 100644 --- a/docs/src/glean_core/metrics/rate.rs.html +++ b/docs/src/glean_core/metrics/rate.rs.html @@ -1,4 +1,5 @@ -rate.rs - source
    1
    +rate.rs - source
    +    
    1
     2
     3
     4
    @@ -196,7 +197,7 @@
     196
     197
     198
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -211,9 +212,9 @@
     /// A rate value as given by its numerator and denominator.
     #[derive(Debug, Clone, Eq, PartialEq)]
     pub struct Rate {
    -    /// A rate's numerator
    +    /// A rate's numerator
         pub numerator: i32,
    -    /// A rate's denominator
    +    /// A rate's denominator
         pub denominator: i32,
     }
     
    @@ -280,7 +281,7 @@
                     glean,
                     &self.meta,
                     ErrorType::InvalidValue,
    -                format!("Added negative value {} to numerator", amount),
    +                format!("Added negative value {} to numerator", amount),
                     None,
                 );
                 return;
    @@ -320,7 +321,7 @@
                     glean,
                     &self.meta,
                     ErrorType::InvalidValue,
    -                format!("Added negative value {} to denominator", amount),
    +                format!("Added negative value {} to denominator", amount),
                     None,
                 );
                 return;
    @@ -338,7 +339,7 @@
         ///
         /// Gets the currently stored value as a pair of integers.
         ///
    -    /// This doesn't clear the stored value.
    +    /// This doesn't clear the stored value.
         ///
         /// # Arguments
         ///
    @@ -355,7 +356,7 @@
     
         /// Get current value
         #[doc(hidden)]
    -    pub fn get_value<'a, S: Into<Option<&'a str>>>(
    +    pub fn get_value<'a, S: Into<Option<&'a str>>>(
             &self,
             glean: &Glean,
             ping_name: S,
    @@ -394,5 +395,4 @@
             })
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/metrics/recorded_experiment.rs.html b/docs/src/glean_core/metrics/recorded_experiment.rs.html index 5dd701a3fa..a92971be58 100644 --- a/docs/src/glean_core/metrics/recorded_experiment.rs.html +++ b/docs/src/glean_core/metrics/recorded_experiment.rs.html @@ -1,4 +1,5 @@ -recorded_experiment.rs - source
    1
    +recorded_experiment.rs - source
    +    
    1
     2
     3
     4
    @@ -33,7 +34,7 @@
     33
     34
     35
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -45,7 +46,7 @@
     /// Deserialized experiment data.
     #[derive(Clone, Serialize, Deserialize, Debug, PartialEq, Eq)]
     pub struct RecordedExperiment {
    -    /// The experiment's branch as set through [`set_experiment_active`](crate::glean_set_experiment_active).
    +    /// The experiment's branch as set through [`set_experiment_active`](crate::glean_set_experiment_active).
         pub branch: String,
         /// Any extra data associated with this experiment through [`set_experiment_active`](crate::glean_set_experiment_active).
         /// Note: `Option` required to keep backwards-compatibility.
    @@ -55,18 +56,17 @@
     impl RecordedExperiment {
         /// Gets the recorded experiment data as a JSON value.
         ///
    -    /// For JSON, we don't want to include `{"extra": null}` -- we just want to skip
    -    /// `extra` entirely. Unfortunately, we can't use a serde field annotation for this,
    -    /// since that would break bincode serialization, which doesn't support skipping
    +    /// For JSON, we don't want to include `{"extra": null}` -- we just want to skip
    +    /// `extra` entirely. Unfortunately, we can't use a serde field annotation for this,
    +    /// since that would break bincode serialization, which doesn't support skipping
         /// fields. Therefore, we use a custom serialization function just for JSON here.
         pub fn as_json(&self) -> JsonValue {
             let mut value = JsonMap::new();
    -        value.insert("branch".to_string(), json!(self.branch));
    +        value.insert("branch".to_string(), json!(self.branch));
             if self.extra.is_some() {
    -            value.insert("extra".to_string(), json!(self.extra));
    +            value.insert("extra".to_string(), json!(self.extra));
             }
             JsonValue::Object(value)
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/metrics/remote_settings_config.rs.html b/docs/src/glean_core/metrics/remote_settings_config.rs.html index bbe7c73ab2..48287a9977 100644 --- a/docs/src/glean_core/metrics/remote_settings_config.rs.html +++ b/docs/src/glean_core/metrics/remote_settings_config.rs.html @@ -1,4 +1,5 @@ -remote_settings_config.rs - source
    1
    +remote_settings_config.rs - source
    +    
    1
     2
     3
     4
    @@ -56,7 +57,7 @@
     56
     57
     58
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -70,7 +71,7 @@
     /// in the following format:
     /// ```json
     /// {
    -///     "category.metric_name": true
    +///     "category.metric_name": true
     /// }
     /// ```
     #[derive(Serialize, Deserialize, Debug, Clone, Default)]
    @@ -114,5 +115,4 @@
             }
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/metrics/string.rs.html b/docs/src/glean_core/metrics/string.rs.html index 4512929811..f5b2824fa4 100644 --- a/docs/src/glean_core/metrics/string.rs.html +++ b/docs/src/glean_core/metrics/string.rs.html @@ -1,4 +1,5 @@ -string.rs - source
    1
    +string.rs - source
    +    
    1
     2
     3
     4
    @@ -179,7 +180,7 @@
     179
     180
     181
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -268,7 +269,7 @@
     
         /// Gets the current-stored value as a string, or None if there is no value.
         #[doc(hidden)]
    -    pub fn get_value<'a, S: Into<Option<&'a str>>>(
    +    pub fn get_value<'a, S: Into<Option<&'a str>>>(
             &self,
             glean: &Glean,
             ping_name: S,
    @@ -292,7 +293,7 @@
         ///
         /// Gets the currently stored value as a string.
         ///
    -    /// This doesn't clear the stored value.
    +    /// This doesn't clear the stored value.
         ///
         /// # Arguments
         ///
    @@ -339,19 +340,19 @@
             let (glean, _t) = new_glean(None);
     
             let metric = StringMetric::new(CommonMetricData {
    -            name: "string_metric".into(),
    -            category: "test".into(),
    -            send_in_pings: vec!["store1".into()],
    +            name: "string_metric".into(),
    +            category: "test".into(),
    +            send_in_pings: vec!["store1".into()],
                 lifetime: Lifetime::Application,
                 disabled: false,
                 dynamic_label: None,
             });
     
    -        let sample_string = "0123456789".repeat(26);
    +        let sample_string = "0123456789".repeat(26);
             metric.set_sync(&glean, sample_string.clone());
     
             let truncated = truncate_string_at_boundary(sample_string, MAX_LENGTH_VALUE);
    -        assert_eq!(truncated, metric.get_value(&glean, "store1").unwrap());
    +        assert_eq!(truncated, metric.get_value(&glean, "store1").unwrap());
     
             assert_eq!(
                 1,
    @@ -360,5 +361,4 @@
             );
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/metrics/string_list.rs.html b/docs/src/glean_core/metrics/string_list.rs.html index 14b0fef3ce..410c09957d 100644 --- a/docs/src/glean_core/metrics/string_list.rs.html +++ b/docs/src/glean_core/metrics/string_list.rs.html @@ -1,4 +1,5 @@ -string_list.rs - source
    1
    +string_list.rs - source
    +    
    1
     2
     3
     4
    @@ -204,7 +205,7 @@
     204
     205
     206
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -280,7 +281,7 @@
                     Some(Metric::StringList(mut old_value)) => {
                         if old_value.len() == MAX_LIST_LENGTH {
                             let msg = format!(
    -                            "String list length of {} exceeds maximum of {}",
    +                            "String list length of {} exceeds maximum of {}",
                                 old_value.len() + 1,
                                 MAX_LIST_LENGTH
                             );
    @@ -325,7 +326,7 @@
     
             let value = if value.len() > MAX_LIST_LENGTH {
                 let msg = format!(
    -                "StringList length {} exceeds maximum of {}",
    +                "StringList length {} exceeds maximum of {}",
                     value.len(),
                     MAX_LIST_LENGTH
                 );
    @@ -350,9 +351,9 @@
         ///
         /// Gets the currently-stored values.
         ///
    -    /// This doesn't clear the stored value.
    +    /// This doesn't clear the stored value.
         #[doc(hidden)]
    -    pub fn get_value<'a, S: Into<Option<&'a str>>>(
    +    pub fn get_value<'a, S: Into<Option<&'a str>>>(
             &self,
             glean: &Glean,
             ping_name: S,
    @@ -376,7 +377,7 @@
         ///
         /// Gets the currently-stored values.
         ///
    -    /// This doesn't clear the stored value.
    +    /// This doesn't clear the stored value.
         ///
         /// # Arguments
         ///
    @@ -410,5 +411,4 @@
             })
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/metrics/text.rs.html b/docs/src/glean_core/metrics/text.rs.html index 6700af7f49..a3bee26ccf 100644 --- a/docs/src/glean_core/metrics/text.rs.html +++ b/docs/src/glean_core/metrics/text.rs.html @@ -1,4 +1,5 @@ -text.rs - source
    1
    +text.rs - source
    +    
    1
     2
     3
     4
    @@ -183,7 +184,7 @@
     183
     184
     185
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -276,7 +277,7 @@
     
         /// Gets the currently-stored value as a string, or None if there is no value.
         #[doc(hidden)]
    -    pub fn get_value<'a, S: Into<Option<&'a str>>>(
    +    pub fn get_value<'a, S: Into<Option<&'a str>>>(
             &self,
             glean: &Glean,
             ping_name: S,
    @@ -300,7 +301,7 @@
         ///
         /// Gets the currently stored value as a string.
         ///
    -    /// This doesn't clear the stored value.
    +    /// This doesn't clear the stored value.
         ///
         /// # Arguments
         ///
    @@ -347,19 +348,19 @@
             let (glean, _t) = new_glean(None);
     
             let metric = TextMetric::new(CommonMetricData {
    -            name: "text_metric".into(),
    -            category: "test".into(),
    -            send_in_pings: vec!["store1".into()],
    +            name: "text_metric".into(),
    +            category: "test".into(),
    +            send_in_pings: vec!["store1".into()],
                 lifetime: Lifetime::Application,
                 disabled: false,
                 dynamic_label: None,
             });
     
    -        let sample_string = "0123456789".repeat(200 * 1024);
    +        let sample_string = "0123456789".repeat(200 * 1024);
             metric.set_sync(&glean, sample_string.clone());
     
             let truncated = truncate_string_at_boundary(sample_string, MAX_LENGTH_VALUE);
    -        assert_eq!(truncated, metric.get_value(&glean, "store1").unwrap());
    +        assert_eq!(truncated, metric.get_value(&glean, "store1").unwrap());
     
             assert_eq!(
                 1,
    @@ -368,5 +369,4 @@
             );
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/metrics/time_unit.rs.html b/docs/src/glean_core/metrics/time_unit.rs.html index 7977107f0a..ac6c19ae7b 100644 --- a/docs/src/glean_core/metrics/time_unit.rs.html +++ b/docs/src/glean_core/metrics/time_unit.rs.html @@ -1,4 +1,5 @@ -time_unit.rs - source
    1
    +time_unit.rs - source
    +    
    1
     2
     3
     4
    @@ -114,7 +115,7 @@
     114
     115
     116
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -127,7 +128,7 @@
     /// Different resolutions supported by the time related
     /// metric types (e.g. DatetimeMetric).
     #[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
    -#[serde(rename_all = "lowercase")]
    +#[serde(rename_all = "lowercase")]
     #[repr(i32)] // use i32 to be compatible with our JNA definition
     pub enum TimeUnit {
         /// Truncate to nanosecond precision.
    @@ -148,16 +149,16 @@
     
     impl TimeUnit {
         /// Formats the given time unit, truncating the time if needed.
    -    pub fn format_pattern(self) -> &'static str {
    +    pub fn format_pattern(self) -> &'static str {
             use TimeUnit::*;
             match self {
    -            Nanosecond => "%Y-%m-%dT%H:%M:%S%.f%:z",
    -            Microsecond => "%Y-%m-%dT%H:%M:%S%.6f%:z",
    -            Millisecond => "%Y-%m-%dT%H:%M:%S%.3f%:z",
    -            Second => "%Y-%m-%dT%H:%M:%S%:z",
    -            Minute => "%Y-%m-%dT%H:%M%:z",
    -            Hour => "%Y-%m-%dT%H%:z",
    -            Day => "%Y-%m-%d%:z",
    +            Nanosecond => "%Y-%m-%dT%H:%M:%S%.f%:z",
    +            Microsecond => "%Y-%m-%dT%H:%M:%S%.6f%:z",
    +            Millisecond => "%Y-%m-%dT%H:%M:%S%.3f%:z",
    +            Second => "%Y-%m-%dT%H:%M:%S%:z",
    +            Minute => "%Y-%m-%dT%H:%M%:z",
    +            Hour => "%Y-%m-%dT%H%:z",
    +            Day => "%Y-%m-%d%:z",
             }
         }
     
    @@ -230,5 +231,4 @@
             }
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/metrics/timespan.rs.html b/docs/src/glean_core/metrics/timespan.rs.html index 2c58effb30..1a7547a097 100644 --- a/docs/src/glean_core/metrics/timespan.rs.html +++ b/docs/src/glean_core/metrics/timespan.rs.html @@ -1,4 +1,5 @@ -timespan.rs - source
    1
    +timespan.rs - source
    +    
    1
     2
     3
     4
    @@ -312,7 +313,7 @@
     312
     313
     314
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -334,7 +335,7 @@
     ///
     // Implementation note:
     // Because we dispatch this, we handle this with interior mutability.
    -// The whole struct is clonable, but that's comparable cheap, as it does not clone the data.
    +// The whole struct is clonable, but that's comparable cheap, as it does not clone the data.
     // Cloning `CommonMetricData` is not free, as it contains strings, so we also wrap that in an Arc.
     #[derive(Clone, Debug)]
     pub struct TimespanMetric {
    @@ -365,7 +366,7 @@
     
         /// Starts tracking time for the provided metric.
         ///
    -    /// This records an error if it's already tracking time (i.e. start was
    +    /// This records an error if it's already tracking time (i.e. start was
         /// already called with no corresponding
         /// [`set_stop`](TimespanMetric::set_stop)): in that case the original start
         /// time will be preserved.
    @@ -386,14 +387,14 @@
             let mut lock = self
                 .start_time
                 .write()
    -            .expect("Lock poisoned for timespan metric on start.");
    +            .expect("Lock poisoned for timespan metric on start.");
     
             if lock.is_some() {
                 record_error(
                     glean,
                     &self.meta,
                     ErrorType::InvalidState,
    -                "Timespan already started",
    +                "Timespan already started",
                     None,
                 );
                 return;
    @@ -419,10 +420,10 @@
             let mut lock = self
                 .start_time
                 .write()
    -            .expect("Lock poisoned for timespan metric on stop.");
    +            .expect("Lock poisoned for timespan metric on stop.");
     
             if !self.should_record(glean) {
    -            // Reset timer when disabled, so that we don't record timespans across
    +            // Reset timer when disabled, so that we don't record timespans across
                 // disabled/enabled toggling.
                 *lock = None;
                 return;
    @@ -433,7 +434,7 @@
                     glean,
                     &self.meta,
                     ErrorType::InvalidState,
    -                "Timespan not running",
    +                "Timespan not running",
                     None,
                 );
                 return;
    @@ -447,7 +448,7 @@
                         glean,
                         &self.meta,
                         ErrorType::InvalidValue,
    -                    "Timespan was negative",
    +                    "Timespan was negative",
                         None,
                     );
                     return;
    @@ -466,7 +467,7 @@
                 let mut lock = metric
                     .start_time
                     .write()
    -                .expect("Lock poisoned for timespan metric on cancel.");
    +                .expect("Lock poisoned for timespan metric on cancel.");
                 *lock = None;
             });
         }
    @@ -519,14 +520,14 @@
             let lock = self
                 .start_time
                 .read()
    -            .expect("Lock poisoned for timespan metric on set_raw.");
    +            .expect("Lock poisoned for timespan metric on set_raw.");
     
             if lock.is_some() {
                 record_error(
                     glean,
                     &self.meta,
                     ErrorType::InvalidState,
    -                "Timespan already running. Raw value not recorded.",
    +                "Timespan already running. Raw value not recorded.",
                     None,
                 );
                 return;
    @@ -555,7 +556,7 @@
                     glean,
                     &self.meta,
                     ErrorType::InvalidState,
    -                "Timespan value already recorded. New value discarded.",
    +                "Timespan value already recorded. New value discarded.",
                     None,
                 );
             };
    @@ -565,7 +566,7 @@
         ///
         /// Gets the currently stored value as an integer.
         ///
    -    /// This doesn't clear the stored value.
    +    /// This doesn't clear the stored value.
         ///
         /// # Arguments
         ///
    @@ -580,14 +581,14 @@
             crate::core::with_glean(|glean| {
                 self.get_value(glean, ping_name.as_deref()).map(|val| {
                     val.try_into()
    -                    .expect("Timespan can't be represented as i64")
    +                    .expect("Timespan can't be represented as i64")
                 })
             })
         }
     
         /// Get the current value
         #[doc(hidden)]
    -    pub fn get_value<'a, S: Into<Option<&'a str>>>(
    +    pub fn get_value<'a, S: Into<Option<&'a str>>>(
             &self,
             glean: &Glean,
             ping_name: S,
    @@ -626,5 +627,4 @@
             })
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/metrics/timing_distribution.rs.html b/docs/src/glean_core/metrics/timing_distribution.rs.html index 1aea36177e..8822635add 100644 --- a/docs/src/glean_core/metrics/timing_distribution.rs.html +++ b/docs/src/glean_core/metrics/timing_distribution.rs.html @@ -1,4 +1,5 @@ -timing_distribution.rs - source
    1
    +timing_distribution.rs - source
    +    
    1
     2
     3
     4
    @@ -642,7 +643,7 @@
     642
     643
     644
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -678,10 +679,10 @@
     /// Identifier for a running timer.
     ///
     /// Its internals are considered private,
    -/// but due to UniFFI's behavior we expose its field for now.
    +/// but due to UniFFI's behavior we expose its field for now.
     #[derive(Copy, Clone, Debug, Eq, PartialEq, Hash)]
     pub struct TimerId {
    -    /// This timer's id.
    +    /// This timer's id.
         pub id: u64,
     }
     
    @@ -805,7 +806,7 @@
         /// Use [`start`](Self::start) instead.
         #[doc(hidden)]
         pub fn set_start(&self, id: TimerId, start_time: u64) {
    -        let mut map = self.start_times.lock().expect("can't lock timings map");
    +        let mut map = self.start_times.lock().expect("can't lock timings map");
             map.insert(id, start_time);
         }
     
    @@ -828,10 +829,10 @@
         }
     
         fn set_stop(&self, id: TimerId, stop_time: u64) -> Result<u64, (ErrorType, &str)> {
    -        let mut start_times = self.start_times.lock().expect("can't lock timings map");
    +        let mut start_times = self.start_times.lock().expect("can't lock timings map");
             let start_time = match start_times.remove(&id) {
                 Some(start_time) => start_time,
    -            None => return Err((ErrorType::InvalidState, "Timing not running")),
    +            None => return Err((ErrorType::InvalidState, "Timing not running")),
             };
     
             let duration = match stop_time.checked_sub(start_time) {
    @@ -839,7 +840,7 @@
                 None => {
                     return Err((
                         ErrorType::InvalidValue,
    -                    "Timer stopped with negative duration",
    +                    "Timer stopped with negative duration",
                     ))
                 }
             };
    @@ -855,7 +856,7 @@
         #[doc(hidden)]
         pub fn set_stop_and_accumulate(&self, glean: &Glean, id: TimerId, stop_time: u64) {
             if !self.should_record(glean) {
    -            let mut start_times = self.start_times.lock().expect("can't lock timings map");
    +            let mut start_times = self.start_times.lock().expect("can't lock timings map");
                 start_times.remove(&id);
                 return;
             }
    @@ -878,7 +879,7 @@
                 min_sample_time
             } else if duration > max_sample_time {
                 let msg = format!(
    -                "Sample is longer than the max for a time_unit of {:?} ({} ns)",
    +                "Sample is longer than the max for a time_unit of {:?} ({} ns)",
                     self.time_unit, max_sample_time
                 );
                 record_error(glean, &self.meta, ErrorType::InvalidOverflow, msg, None);
    @@ -891,10 +892,10 @@
                 return;
             }
     
    -        // Let's be defensive here:
    +        // Let's be defensive here:
             // The uploader tries to store some timing distribution metrics,
             // but in tests that storage might be gone already.
    -        // Let's just ignore those.
    +        // Let's just ignore those.
             // We do the same for counters.
             // This should never happen in real app usage.
             if let Some(storage) = glean.storage_opt() {
    @@ -911,7 +912,7 @@
                 });
             } else {
                 log::warn!(
    -                "Couldn't get storage. Can't record timing distribution '{}'.",
    +                "Couldn't get storage. Can't record timing distribution '{}'.",
                     self.meta.base_identifier()
                 );
             }
    @@ -933,7 +934,7 @@
     
         /// Aborts a previous [`start`](Self::start) call synchronously.
         pub(crate) fn cancel_sync(&self, id: TimerId) {
    -        let mut map = self.start_times.lock().expect("can't lock timings map");
    +        let mut map = self.start_times.lock().expect("can't lock timings map");
             map.remove(&id);
         }
     
    @@ -945,7 +946,7 @@
         /// sample.
         ///
         /// Please note that this assumes that the provided samples are already in
    -    /// the "unit" declared by the instance of the metric type (e.g. if the
    +    /// the "unit" declared by the instance of the metric type (e.g. if the
         /// instance this method was called on is using [`TimeUnit::Second`], then
         /// `samples` are assumed to be in that unit).
         ///
    @@ -973,7 +974,7 @@
         /// sample.
         ///
         /// Please note that this assumes that the provided sample is already in
    -    /// the "unit" declared by the instance of the metric type (e.g. if the
    +    /// the "unit" declared by the instance of the metric type (e.g. if the
         /// instance this method was called on is using [`crate::TimeUnit::Second`], then
         /// `sample` is assumed to be in that unit).
         ///
    @@ -1037,7 +1038,7 @@
             });
     
             if num_negative_samples > 0 {
    -            let msg = format!("Accumulated {} negative samples", num_negative_samples);
    +            let msg = format!("Accumulated {} negative samples", num_negative_samples);
                 record_error(
                     glean,
                     &self.meta,
    @@ -1049,7 +1050,7 @@
     
             if num_too_long_samples > 0 {
                 let msg = format!(
    -                "{} samples are longer than the maximum of {}",
    +                "{} samples are longer than the maximum of {}",
                     num_too_long_samples, max_sample_time
                 );
                 record_error(
    @@ -1085,7 +1086,7 @@
         /// duration is:
         ///
         ///  * measured externally, or
    -    ///  * is in a unit different from the timing_distribution's internal TimeUnit.
    +    ///  * is in a unit different from the timing_distribution's internal TimeUnit.
         ///
         /// # Arguments
         ///
    @@ -1098,8 +1099,8 @@
         ///
         /// The API client is responsible for ensuring that `duration` is derived from a
         /// monotonic clock source that behaves consistently over computer sleep across
    -    /// the application's platforms. Otherwise the resulting data may not share the same
    -    /// guarantees that other `timing_distribution` metrics' data do.
    +    /// the application's platforms. Otherwise the resulting data may not share the same
    +    /// guarantees that other `timing_distribution` metrics' data do.
         pub fn accumulate_raw_duration(&self, duration: Duration) {
             let duration_ns = duration.as_nanos().try_into().unwrap_or(u64::MAX);
             let metric = self.clone();
    @@ -1148,7 +1149,7 @@
     
             if num_too_long_samples > 0 {
                 let msg = format!(
    -                "{} samples are longer than the maximum of {}",
    +                "{} samples are longer than the maximum of {}",
                     num_too_long_samples, max_sample_time
                 );
                 record_error(
    @@ -1163,7 +1164,7 @@
     
         /// Gets the currently stored value as an integer.
         #[doc(hidden)]
    -    pub fn get_value<'a, S: Into<Option<&'a str>>>(
    +    pub fn get_value<'a, S: Into<Option<&'a str>>>(
             &self,
             glean: &Glean,
             ping_name: S,
    @@ -1187,7 +1188,7 @@
         ///
         /// Gets the currently stored value as an integer.
         ///
    -    /// This doesn't clear the stored value.
    +    /// This doesn't clear the stored value.
         ///
         /// # Arguments
         ///
    @@ -1239,19 +1240,19 @@
             let snap = snapshot(&hist);
     
             let expected_json = json!({
    -            "sum": 55,
    -            "values": {
    -                "1": 1,
    -                "2": 1,
    -                "3": 1,
    -                "4": 1,
    -                "5": 1,
    -                "6": 1,
    -                "7": 1,
    -                "8": 1,
    -                "9": 1,
    -                "10": 1,
    -                "11": 0,
    +            "sum": 55,
    +            "values": {
    +                "1": 1,
    +                "2": 1,
    +                "3": 1,
    +                "4": 1,
    +                "5": 1,
    +                "6": 1,
    +                "7": 1,
    +                "8": 1,
    +                "9": 1,
    +                "10": 1,
    +                "11": 0,
                 },
             });
     
    @@ -1272,19 +1273,18 @@
             let snap = snapshot(&hist);
     
             let expected_json = json!({
    -            "sum": 4612,
    -            "values": {
    -                "1024": 2,
    -                "1116": 1,
    -                "1217": 0,
    -                "1327": 0,
    -                "1448": 1,
    -                "1579": 0,
    +            "sum": 4612,
    +            "values": {
    +                "1024": 2,
    +                "1116": 1,
    +                "1217": 0,
    +                "1327": 0,
    +                "1448": 1,
    +                "1579": 0,
                 },
             });
     
             assert_eq!(expected_json, json!(snap));
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/metrics/url.rs.html b/docs/src/glean_core/metrics/url.rs.html index 4142ffe226..671c712e40 100644 --- a/docs/src/glean_core/metrics/url.rs.html +++ b/docs/src/glean_core/metrics/url.rs.html @@ -1,4 +1,5 @@ -url.rs - source
    1
    +url.rs - source
    +    
    1
     2
     3
     4
    @@ -315,7 +316,7 @@
     315
     316
     317
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -361,7 +362,7 @@
         }
     
         fn is_valid_url_scheme(&self, value: String) -> bool {
    -        let mut splits = value.split(':');
    +        let mut splits = value.split(':');
             if let Some(scheme) = splits.next() {
                 if scheme.is_empty() {
                     return false;
    @@ -370,10 +371,10 @@
                 // The list of characters allowed in the scheme is on
                 // the spec here: https://url.spec.whatwg.org/#url-scheme-string
                 return chars.next().unwrap().is_ascii_alphabetic()
    -                && chars.all(|c| c.is_ascii_alphanumeric() || ['+', '-', '.'].contains(&c));
    +                && chars.all(|c| c.is_ascii_alphanumeric() || ['+', '-', '.'].contains(&c));
             }
     
    -        // No ':' found, this is not valid :)
    +        // No ':' found, this is not valid :)
             false
         }
     
    @@ -401,19 +402,19 @@
     
             let s = truncate_string_at_boundary_with_error(glean, &self.meta, value, MAX_URL_LENGTH);
     
    -        if s.starts_with("data:") {
    +        if s.starts_with("data:") {
                 record_error(
                     glean,
                     &self.meta,
                     ErrorType::InvalidValue,
    -                "URL metric does not support data URLs.",
    +                "URL metric does not support data URLs.",
                     None,
                 );
                 return;
             }
     
             if !self.is_valid_url_scheme(s.clone()) {
    -            let msg = format!("\"{}\" does not start with a valid URL scheme.", s);
    +            let msg = format!("\"{}\" does not start with a valid URL scheme.", s);
                 record_error(glean, &self.meta, ErrorType::InvalidValue, msg, None);
                 return;
             }
    @@ -423,7 +424,7 @@
         }
     
         #[doc(hidden)]
    -    pub(crate) fn get_value<'a, S: Into<Option<&'a str>>>(
    +    pub(crate) fn get_value<'a, S: Into<Option<&'a str>>>(
             &self,
             glean: &Glean,
             ping_name: S,
    @@ -447,7 +448,7 @@
         ///
         /// Gets the currently stored value as a string.
         ///
    -    /// This doesn't clear the stored value.
    +    /// This doesn't clear the stored value.
         ///
         /// # Arguments
         ///
    @@ -493,17 +494,17 @@
             let (glean, _t) = new_glean(None);
     
             let metric = UrlMetric::new(CommonMetricData {
    -            name: "url_metric".into(),
    -            category: "test".into(),
    -            send_in_pings: vec!["store1".into()],
    +            name: "url_metric".into(),
    +            category: "test".into(),
    +            send_in_pings: vec!["store1".into()],
                 lifetime: Lifetime::Application,
                 disabled: false,
                 dynamic_label: None,
             });
     
    -        let sample_url = "glean://test".to_string();
    +        let sample_url = "glean://test".to_string();
             metric.set_sync(&glean, sample_url.clone());
    -        assert_eq!(sample_url, metric.get_value(&glean, "store1").unwrap());
    +        assert_eq!(sample_url, metric.get_value(&glean, "store1").unwrap());
         }
     
         #[test]
    @@ -511,9 +512,9 @@
             let (glean, _t) = new_glean(None);
     
             let metric = UrlMetric::new(CommonMetricData {
    -            name: "url_metric".into(),
    -            category: "test".into(),
    -            send_in_pings: vec!["store1".into()],
    +            name: "url_metric".into(),
    +            category: "test".into(),
    +            send_in_pings: vec!["store1".into()],
                 lifetime: Lifetime::Application,
                 disabled: false,
                 dynamic_label: None,
    @@ -524,19 +525,19 @@
             //
             // This 8-character string was chosen so we could have an even number that is
             // a divisor of our MAX_URL_LENGTH.
    -        let long_path_base = "abcdefgh";
    +        let long_path_base = "abcdefgh";
     
             // Using 2000 creates a string > 16000 characters, well over MAX_URL_LENGTH.
    -        let test_url = format!("glean://{}", long_path_base.repeat(2000));
    +        let test_url = format!("glean://{}", long_path_base.repeat(2000));
             metric.set_sync(&glean, test_url);
     
    -        // "glean://" is 8 characters
    -        // "abcdefgh" (long_path_base) is 8 characters
    +        // "glean://" is 8 characters
    +        // "abcdefgh" (long_path_base) is 8 characters
             // `long_path_base` is repeated 1023 times (8184)
             // 8 + 8184 = 8192 (MAX_URL_LENGTH)
    -        let expected = format!("glean://{}", long_path_base.repeat(1023));
    +        let expected = format!("glean://{}", long_path_base.repeat(1023));
     
    -        assert_eq!(metric.get_value(&glean, "store1").unwrap(), expected);
    +        assert_eq!(metric.get_value(&glean, "store1").unwrap(), expected);
             assert_eq!(
                 1,
                 test_get_num_recorded_errors(&glean, metric.meta(), ErrorType::InvalidOverflow)
    @@ -549,18 +550,18 @@
             let (glean, _t) = new_glean(None);
     
             let metric = UrlMetric::new(CommonMetricData {
    -            name: "url_metric".into(),
    -            category: "test".into(),
    -            send_in_pings: vec!["store1".into()],
    +            name: "url_metric".into(),
    +            category: "test".into(),
    +            send_in_pings: vec!["store1".into()],
                 lifetime: Lifetime::Application,
                 disabled: false,
                 dynamic_label: None,
             });
     
    -        let test_url = "data:application/json";
    +        let test_url = "data:application/json";
             metric.set_sync(&glean, test_url);
     
    -        assert!(metric.get_value(&glean, "store1").is_none());
    +        assert!(metric.get_value(&glean, "store1").is_none());
     
             assert_eq!(
                 1,
    @@ -573,51 +574,51 @@
             let (glean, _t) = new_glean(None);
     
             let metric = UrlMetric::new(CommonMetricData {
    -            name: "url_metric".into(),
    -            category: "test".into(),
    -            send_in_pings: vec!["store1".into()],
    +            name: "url_metric".into(),
    +            category: "test".into(),
    +            send_in_pings: vec!["store1".into()],
                 lifetime: Lifetime::Application,
                 disabled: false,
                 dynamic_label: None,
             });
     
             let incorrects = vec![
    -            "",
    +            "",
                 // Scheme may only start with upper or lowercase ASCII alpha[^1] character.
                 // [1]: https://infra.spec.whatwg.org/#ascii-alpha
    -            "1glean://test",
    -            "-glean://test",
    +            "1glean://test",
    +            "-glean://test",
                 // Scheme may only have ASCII alphanumeric characters or the `-`, `.`, `+` characters.
    -            "шеллы://test",
    -            "g!lean://test",
    -            "g=lean://test",
    +            "шеллы://test",
    +            "g!lean://test",
    +            "g=lean://test",
                 // Scheme must be followed by `:` character.
    -            "glean//test",
    +            "glean//test",
             ];
     
             let corrects = vec![
                 // The minimum URL
    -            "g:",
    +            "g:",
                 // Empty body is fine
    -            "glean://",
    -            // "//" is actually not even necessary
    -            "glean:",
    -            "glean:test",
    -            "glean:test.com",
    +            "glean://",
    +            // "//" is actually not even necessary
    +            "glean:",
    +            "glean:test",
    +            "glean:test.com",
                 // Scheme may only have ASCII alphanumeric characters or the `-`, `.`, `+` characters.
    -            "g-lean://test",
    -            "g+lean://test",
    -            "g.lean://test",
    +            "g-lean://test",
    +            "g+lean://test",
    +            "g.lean://test",
                 // Query parameters are fine
    -            "glean://test?hello=world",
    +            "glean://test?hello=world",
                 // Finally, some actual real world URLs
    -            "https://infra.spec.whatwg.org/#ascii-alpha",
    -            "https://infra.spec.whatwg.org/#ascii-alpha?test=for-glean",
    +            "https://infra.spec.whatwg.org/#ascii-alpha",
    +            "https://infra.spec.whatwg.org/#ascii-alpha?test=for-glean",
             ];
     
             for incorrect in incorrects.clone().into_iter() {
                 metric.set_sync(&glean, incorrect);
    -            assert!(metric.get_value(&glean, "store1").is_none());
    +            assert!(metric.get_value(&glean, "store1").is_none());
             }
     
             assert_eq!(
    @@ -628,9 +629,8 @@
     
             for correct in corrects.into_iter() {
                 metric.set_sync(&glean, correct);
    -            assert_eq!(metric.get_value(&glean, "store1").unwrap(), correct);
    +            assert_eq!(metric.get_value(&glean, "store1").unwrap(), correct);
             }
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/metrics/uuid.rs.html b/docs/src/glean_core/metrics/uuid.rs.html index bf995eabf0..943b878fa0 100644 --- a/docs/src/glean_core/metrics/uuid.rs.html +++ b/docs/src/glean_core/metrics/uuid.rs.html @@ -1,4 +1,5 @@ -uuid.rs - source
    1
    +uuid.rs - source
    +    
    1
     2
     3
     4
    @@ -164,7 +165,7 @@
     164
     165
     166
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -229,7 +230,7 @@
                 let value = Metric::Uuid(uuid.as_hyphenated().to_string());
                 glean.storage().record(glean, &self.meta, &value)
             } else {
    -            let msg = format!("Unexpected UUID value '{}'", value);
    +            let msg = format!("Unexpected UUID value '{}'", value);
                 record_error(glean, &self.meta, ErrorType::InvalidValue, msg, None);
             }
         }
    @@ -248,7 +249,7 @@
             self.set_sync(glean, value.to_string())
         }
     
    -    /// Generates a new random [`Uuid`'] and sets the metric to it.
    +    /// Generates a new random [`Uuid`'] and sets the metric to it.
         pub fn generate_and_set(&self) -> String {
             let uuid = Uuid::new_v4();
     
    @@ -259,7 +260,7 @@
             uuid.to_string()
         }
     
    -    /// Generates a new random [`Uuid`'] and sets the metric to it synchronously.
    +    /// Generates a new random [`Uuid`'] and sets the metric to it synchronously.
         #[doc(hidden)]
         pub fn generate_and_set_sync(&self, storage: &Glean) -> Uuid {
             let uuid = Uuid::new_v4();
    @@ -269,7 +270,7 @@
     
         /// Gets the current-stored value as a string, or None if there is no value.
         #[doc(hidden)]
    -    pub fn get_value<'a, S: Into<Option<&'a str>>>(
    +    pub fn get_value<'a, S: Into<Option<&'a str>>>(
             &self,
             glean: &Glean,
             ping_name: S,
    @@ -293,7 +294,7 @@
         ///
         /// Gets the currently stored value as a string.
         ///
    -    /// This doesn't clear the stored value.
    +    /// This doesn't clear the stored value.
         ///
         /// # Arguments
         ///
    @@ -330,5 +331,4 @@
             })
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/ping/mod.rs.html b/docs/src/glean_core/ping/mod.rs.html index bcde3b3607..763d37af6c 100644 --- a/docs/src/glean_core/ping/mod.rs.html +++ b/docs/src/glean_core/ping/mod.rs.html @@ -1,4 +1,5 @@ -mod.rs - source
    1
    +mod.rs - source
    +    
    1
     2
     3
     4
    @@ -438,7 +439,7 @@
     438
     439
     440
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -459,13 +460,13 @@
     use crate::{Glean, Result, DELETION_REQUEST_PINGS_DIRECTORY, PENDING_PINGS_DIRECTORY};
     
     /// Holds everything you need to store or send a ping.
    -pub struct Ping<'a> {
    +pub struct Ping<'a> {
         /// The unique document id.
    -    pub doc_id: &'a str,
    -    /// The ping's name.
    -    pub name: &'a str,
    +    pub doc_id: &'a str,
    +    /// The ping's name.
    +    pub name: &'a str,
         /// The path on the server to use when uplaoding this ping.
    -    pub url_path: &'a str,
    +    pub url_path: &'a str,
         /// The payload, including `*_info` fields.
         pub content: JsonValue,
         /// The headers to upload with the payload.
    @@ -476,7 +477,7 @@
         pub schedules_pings: Vec<String>,
     }
     
    -/// Collect a ping's data, assemble it into its full payload and store it on disk.
    +/// Collect a ping's data, assemble it into its full payload and store it on disk.
     pub struct PingMaker;
     
     fn merge(a: &mut JsonValue, b: &JsonValue) {
    @@ -508,9 +509,9 @@
         fn get_ping_seq(&self, glean: &Glean, storage_name: &str) -> usize {
             // Sequence numbers are stored as a counter under a name that includes the storage name
             let seq = CounterMetric::new(CommonMetricData {
    -            name: format!("{}#sequence", storage_name),
    -            // We don't need a category, the name is already unique
    -            category: "".into(),
    +            name: format!("{}#sequence", storage_name),
    +            // We don't need a category, the name is already unique
    +            category: "".into(),
                 send_in_pings: vec![INTERNAL_STORAGE.into()],
                 lifetime: Lifetime::User,
                 ..Default::default()
    @@ -541,8 +542,8 @@
         ) -> (String, String) {
             let start_time = DatetimeMetric::new(
                 CommonMetricData {
    -                name: format!("{}#start", storage_name),
    -                category: "".into(),
    +                name: format!("{}#start", storage_name),
    +                category: "".into(),
                     send_in_pings: vec![INTERNAL_STORAGE.into()],
                     lifetime: Lifetime::User,
                     ..Default::default()
    @@ -550,7 +551,7 @@
                 time_unit,
             );
     
    -        // "start_time" is the time the ping was generated the last time.
    +        // "start_time" is the time the ping was generated the last time.
             // If not available, we use the date the Glean object was initialized.
             let start_time_data = start_time
                 .get_value(glean, INTERNAL_STORAGE)
    @@ -575,15 +576,15 @@
         ) -> JsonValue {
             let (start_time, end_time) = self.get_start_end_times(glean, storage_name, precision);
             let mut map = json!({
    -            "seq": self.get_ping_seq(glean, storage_name),
    -            "start_time": start_time,
    -            "end_time": end_time,
    +            "seq": self.get_ping_seq(glean, storage_name),
    +            "start_time": start_time,
    +            "end_time": end_time,
             });
     
             if let Some(reason) = reason {
                 map.as_object_mut()
                     .unwrap() // safe unwrap, we created the object above
    -                .insert("reason".to_string(), JsonValue::String(reason.to_string()));
    +                .insert("reason".to_string(), JsonValue::String(reason.to_string()));
             };
     
             // Get the experiment data, if available.
    @@ -592,33 +593,33 @@
             {
                 map.as_object_mut()
                     .unwrap() // safe unwrap, we created the object above
    -                .insert("experiments".to_string(), experiment_data);
    +                .insert("experiments".to_string(), experiment_data);
             };
     
             map
         }
     
         fn get_client_info(&self, glean: &Glean, include_client_id: bool) -> JsonValue {
    -        // Add the "telemetry_sdk_build", which is the glean-core version.
    +        // Add the "telemetry_sdk_build", which is the glean-core version.
             let mut map = json!({
    -            "telemetry_sdk_build": crate::GLEAN_VERSION,
    +            "telemetry_sdk_build": crate::GLEAN_VERSION,
             });
     
             // Flatten the whole thing.
             if let Some(client_info) =
    -            StorageManager.snapshot_as_json(glean.storage(), "glean_client_info", true)
    +            StorageManager.snapshot_as_json(glean.storage(), "glean_client_info", true)
             {
                 let client_info_obj = client_info.as_object().unwrap(); // safe unwrap, snapshot always returns an object.
                 for (_key, value) in client_info_obj {
                     merge(&mut map, value);
                 }
             } else {
    -            log::warn!("Empty client info data.");
    +            log::warn!("Empty client info data.");
             }
     
             if !include_client_id {
                 // safe unwrap, we created the object above
    -            map.as_object_mut().unwrap().remove("client_id");
    +            map.as_object_mut().unwrap().remove("client_id");
             }
     
             json!(map)
    @@ -641,11 +642,11 @@
             let mut headers_map = HeaderMap::new();
     
             if let Some(debug_view_tag) = glean.debug_view_tag() {
    -            headers_map.insert("X-Debug-ID".to_string(), debug_view_tag.to_string());
    +            headers_map.insert("X-Debug-ID".to_string(), debug_view_tag.to_string());
             }
     
             if let Some(source_tags) = glean.source_tags() {
    -            headers_map.insert("X-Source-Tags".to_string(), source_tags.join(","));
    +            headers_map.insert("X-Source-Tags".to_string(), source_tags.join(","));
             }
     
             headers_map
    @@ -658,22 +659,22 @@
         /// * `glean` - the [`Glean`] instance to collect data from.
         /// * `ping` - the ping to collect for.
         /// * `reason` - an optional reason code to include in the ping.
    -    /// * `doc_id` - the ping's unique document identifier.
    +    /// * `doc_id` - the ping's unique document identifier.
         /// * `url_path` - the path on the server to upload this ping to.
         ///
         /// # Returns
         ///
         /// A fully assembled representation of the ping payload and associated metadata.
         /// If there is no data stored for the ping, `None` is returned.
    -    pub fn collect<'a>(
    +    pub fn collect<'a>(
             &self,
             glean: &Glean,
    -        ping: &'a PingType,
    +        ping: &'a PingType,
             reason: Option<&str>,
    -        doc_id: &'a str,
    -        url_path: &'a str,
    -    ) -> Option<Ping<'a>> {
    -        info!("Collecting {}", ping.name());
    +        doc_id: &'a str,
    +        url_path: &'a str,
    +    ) -> Option<Ping<'a>> {
    +        info!("Collecting {}", ping.name());
             let database = glean.storage();
     
             // HACK: Only for metrics pings we add the ping timings.
    @@ -699,21 +700,21 @@
                 && glean.test_get_experimentation_id().is_some()
                 && metrics_data.is_some()
             {
    -            // There is a lot of unwrapping here, but that's fine because the `if` conditions above mean that the
    +            // There is a lot of unwrapping here, but that's fine because the `if` conditions above mean that the
                 // experimentation id is present in the metrics.
                 let metrics = metrics_data.as_mut().unwrap().as_object_mut().unwrap();
                 let metrics_count = metrics.len();
    -            let strings = metrics.get_mut("string").unwrap().as_object_mut().unwrap();
    +            let strings = metrics.get_mut("string").unwrap().as_object_mut().unwrap();
                 let string_count = strings.len();
     
                 // Handle the send_if_empty case by checking if the experimentation id is the only metric in the data.
                 let empty_payload = events_data.is_none() && metrics_count == 1 && string_count == 1;
                 if !ping.include_client_id() || (!ping.send_if_empty() && empty_payload) {
    -                strings.remove("glean.client.annotation.experimentation_id");
    +                strings.remove("glean.client.annotation.experimentation_id");
                 }
     
                 if strings.is_empty() {
    -                metrics.remove("string");
    +                metrics.remove("string");
                 }
     
                 if metrics.is_empty() {
    @@ -723,14 +724,14 @@
     
             let is_empty = metrics_data.is_none() && events_data.is_none();
             if !ping.send_if_empty() && is_empty {
    -            info!("Storage for {} empty. Bailing out.", ping.name());
    +            info!("Storage for {} empty. Bailing out.", ping.name());
                 return None;
    -        } else if ping.name() == "events" && events_data.is_none() {
    -            info!("No events for 'events' ping. Bailing out.");
    +        } else if ping.name() == "events" && events_data.is_none() {
    +            info!("No events for 'events' ping. Bailing out.");
                 return None;
             } else if is_empty {
                 info!(
    -                "Storage for {} empty. Ping will still be sent.",
    +                "Storage for {} empty. Ping will still be sent.",
                     ping.name()
                 );
             }
    @@ -746,8 +747,8 @@
                 let client_info = self.get_client_info(glean, ping.include_client_id());
     
                 json!({
    -                "ping_info": ping_info,
    -                "client_info": client_info
    +                "ping_info": ping_info,
    +                "client_info": client_info
                 })
             } else {
                 json!({})
    @@ -755,10 +756,10 @@
     
             let json_obj = json.as_object_mut()?;
             if let Some(metrics_data) = metrics_data {
    -            json_obj.insert("metrics".to_string(), metrics_data);
    +            json_obj.insert("metrics".to_string(), metrics_data);
             }
             if let Some(events_data) = events_data {
    -            json_obj.insert("events".to_string(), events_data);
    +            json_obj.insert("events".to_string(), events_data);
             }
     
             Some(Ping {
    @@ -779,7 +780,7 @@
         fn get_pings_dir(&self, data_path: &Path, ping_type: Option<&str>) -> std::io::Result<PathBuf> {
             // Use a special directory for deletion-request pings
             let pings_dir = match ping_type {
    -            Some("deletion-request") => data_path.join(DELETION_REQUEST_PINGS_DIRECTORY),
    +            Some("deletion-request") => data_path.join(DELETION_REQUEST_PINGS_DIRECTORY),
                 _ => data_path.join(PENDING_PINGS_DIRECTORY),
             };
     
    @@ -792,7 +793,7 @@
         /// The directory will be created inside the `data_path`.
         /// The `tmp` directory (and its parents) is created if it does not exist.
         fn get_tmp_dir(&self, data_path: &Path) -> std::io::Result<PathBuf> {
    -        let pings_dir = data_path.join("tmp");
    +        let pings_dir = data_path.join("tmp");
             create_dir_all(&pings_dir)?;
             Ok(pings_dir)
         }
    @@ -808,7 +809,7 @@
             let ping_path = pings_dir.join(ping.doc_id);
     
             log::debug!(
    -            "Storing ping '{}' at '{}'",
    +            "Storing ping '{}' at '{}'",
                 ping.doc_id,
                 ping_path.display()
             );
    @@ -816,12 +817,12 @@
             {
                 let mut file = File::create(&temp_ping_path)?;
                 file.write_all(ping.url_path.as_bytes())?;
    -            file.write_all(b"\n")?;
    +            file.write_all(b"\n")?;
                 file.write_all(::serde_json::to_string(&ping.content)?.as_bytes())?;
    -            file.write_all(b"\n")?;
    +            file.write_all(b"\n")?;
                 let metadata = PingMetadata {
    -                // We don't actually need to clone the headers except to match PingMetadata's ownership.
    -                // But since we're going to write a file to disk in a sec,
    +                // We don't actually need to clone the headers except to match PingMetadata's ownership.
    +                // But since we're going to write a file to disk in a sec,
                     // and HeaderMaps tend to have only like two things in them, tops,
                     // the cost is bearable.
                     headers: Some(ping.headers.clone()),
    @@ -833,7 +834,7 @@
     
             if let Err(e) = std::fs::rename(&temp_ping_path, &ping_path) {
                 log::warn!(
    -                "Unable to move '{}' to '{}",
    +                "Unable to move '{}' to '{}",
                     temp_ping_path.display(),
                     ping_path.display()
                 );
    @@ -850,7 +851,7 @@
             std::fs::remove_dir_all(&pings_dir)?;
             create_dir_all(&pings_dir)?;
     
    -        log::debug!("All pending pings deleted");
    +        log::debug!("All pending pings deleted");
     
             Ok(())
         }
    @@ -866,17 +867,16 @@
             let (mut glean, _t) = new_glean(None);
             let ping_maker = PingMaker::new();
     
    -        assert_eq!(0, ping_maker.get_ping_seq(&glean, "custom"));
    -        assert_eq!(1, ping_maker.get_ping_seq(&glean, "custom"));
    +        assert_eq!(0, ping_maker.get_ping_seq(&glean, "custom"));
    +        assert_eq!(1, ping_maker.get_ping_seq(&glean, "custom"));
     
             glean.set_upload_enabled(false);
    -        assert_eq!(0, ping_maker.get_ping_seq(&glean, "custom"));
    -        assert_eq!(0, ping_maker.get_ping_seq(&glean, "custom"));
    +        assert_eq!(0, ping_maker.get_ping_seq(&glean, "custom"));
    +        assert_eq!(0, ping_maker.get_ping_seq(&glean, "custom"));
     
             glean.set_upload_enabled(true);
    -        assert_eq!(0, ping_maker.get_ping_seq(&glean, "custom"));
    -        assert_eq!(1, ping_maker.get_ping_seq(&glean, "custom"));
    +        assert_eq!(0, ping_maker.get_ping_seq(&glean, "custom"));
    +        assert_eq!(1, ping_maker.get_ping_seq(&glean, "custom"));
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/scheduler.rs.html b/docs/src/glean_core/scheduler.rs.html index d04a557d4f..ebba3a7677 100644 --- a/docs/src/glean_core/scheduler.rs.html +++ b/docs/src/glean_core/scheduler.rs.html @@ -1,4 +1,5 @@ -scheduler.rs - source
    1
    +scheduler.rs - source
    +    
    1
     2
     3
     4
    @@ -558,13 +559,13 @@
     558
     559
     560
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
     //! # Metrics Ping Scheduler
     //!
    -//! The Metrics Ping Scheduler (MPS) is responsible for scheduling "metrics" pings.
    +//! The Metrics Ping Scheduler (MPS) is responsible for scheduling "metrics" pings.
     //! It implements the spec described in
     //! [the docs](https://mozilla.github.io/glean/book/user/pings/metrics.html#scheduling)
     
    @@ -586,7 +587,7 @@
     static TASK_CONDVAR: Lazy<Arc<(Mutex<bool>, Condvar)>> =
         Lazy::new(|| Arc::new((Mutex::new(false), Condvar::new())));
     
    -/// Describes the interface for a submitter of "metrics" pings.
    +/// Describes the interface for a submitter of "metrics" pings.
     /// Used to decouple the implementation so we can test it.
     trait MetricsPingSubmitter {
         /// Submits a metrics ping, updating the last sent time to `now`
    @@ -594,36 +595,36 @@
         fn submit_metrics_ping(&self, glean: &Glean, reason: Option<&str>, now: DateTime<FixedOffset>);
     }
     
    -/// Describes the interface for a scheduler of "metrics" pings.
    +/// Describes the interface for a scheduler of "metrics" pings.
     /// Used to decouple the implementation so we can test it.
     trait MetricsPingScheduler {
    -    /// Begins a recurring schedule of "metrics" ping submissions, on another thread.
    +    /// Begins a recurring schedule of "metrics" ping submissions, on another thread.
         /// `now` is used with `when` to determine the first schedule interval and
         /// may not be _right now_ due to processing delays (or in tests).
         fn start_scheduler(
             &self,
    -        submitter: impl MetricsPingSubmitter + Send + 'static,
    +        submitter: impl MetricsPingSubmitter + Send + 'static,
             now: DateTime<FixedOffset>,
             when: When,
         );
     }
     
    -/// Uses Glean to submit "metrics" pings directly.
    +/// Uses Glean to submit "metrics" pings directly.
     struct GleanMetricsPingSubmitter {}
     impl MetricsPingSubmitter for GleanMetricsPingSubmitter {
         fn submit_metrics_ping(&self, glean: &Glean, reason: Option<&str>, now: DateTime<FixedOffset>) {
    -        glean.submit_ping_by_name("metrics", reason);
    +        glean.submit_ping_by_name("metrics", reason);
             // Always update the collection date, irrespective of the ping being sent.
             get_last_sent_time_metric().set_sync_chrono(glean, now);
         }
     }
     
    -/// Schedule "metrics" pings directly using the default behaviour.
    +/// Schedule "metrics" pings directly using the default behaviour.
     struct GleanMetricsPingScheduler {}
     impl MetricsPingScheduler for GleanMetricsPingScheduler {
         fn start_scheduler(
             &self,
    -        submitter: impl MetricsPingSubmitter + Send + 'static,
    +        submitter: impl MetricsPingSubmitter + Send + 'static,
             now: DateTime<FixedOffset>,
             when: When,
         ) {
    @@ -631,15 +632,15 @@
         }
     }
     
    -/// Performs startup checks to decide when to schedule the next "metrics" ping collection.
    +/// Performs startup checks to decide when to schedule the next "metrics" ping collection.
     /// **Must** be called before draining the preinit queue.
    -/// (We're at the Language Bindings' mercy for that)
    +/// (We're at the Language Bindings' mercy for that)
     pub fn schedule(glean: &Glean) {
         let now = local_now_with_offset();
     
         let (cancelled_lock, _condvar) = &**TASK_CONDVAR;
         if *cancelled_lock.lock().unwrap() {
    -        log::debug!("Told to schedule, but already cancelled. Are we in a test?");
    +        log::debug!("Told to schedule, but already cancelled. Are we in a test?");
         }
         *cancelled_lock.lock().unwrap() = false; // Uncancel the thread.
     
    @@ -658,20 +659,20 @@
     
     fn schedule_internal(
         glean: &Glean,
    -    submitter: impl MetricsPingSubmitter + Send + 'static,
    +    submitter: impl MetricsPingSubmitter + Send + 'static,
         scheduler: impl MetricsPingScheduler,
         now: DateTime<FixedOffset>,
     ) {
         let last_sent_build_metric = get_last_sent_build_metric();
         if let Some(last_sent_build) = last_sent_build_metric.get_value(glean, Some(INTERNAL_STORAGE)) {
    -        // If `app_build` is longer than StringMetric's max length, we will always
    -        // treat it as a changed build when really it isn't.
    +        // If `app_build` is longer than StringMetric's max length, we will always
    +        // treat it as a changed build when really it isn't.
             // This will be externally-observable as InvalidOverflow errors on both the core
    -        // `client_info.app_build` metric and the scheduler's internal metric.
    +        // `client_info.app_build` metric and the scheduler's internal metric.
             if last_sent_build != glean.app_build {
                 last_sent_build_metric.set_sync(glean, &glean.app_build);
    -            log::info!("App build changed. Sending 'metrics' ping");
    -            submitter.submit_metrics_ping(glean, Some("upgrade"), now);
    +            log::info!("App build changed. Sending 'metrics' ping");
    +            submitter.submit_metrics_ping(glean, Some("upgrade"), now);
                 scheduler.start_scheduler(submitter, now, When::Reschedule);
                 return;
             }
    @@ -682,36 +683,36 @@
     
         let last_sent_time = get_last_sent_time_metric().get_value(glean, INTERNAL_STORAGE);
         if let Some(last_sent) = last_sent_time {
    -        log::info!("The 'metrics' ping was last sent on {}", last_sent);
    +        log::info!("The 'metrics' ping was last sent on {}", last_sent);
         }
     
         // We aim to cover 3 cases here:
         //
         // 1. The ping was already collected on the current calendar day;
         //    only schedule one for collection on the next calendar day at the due time.
    -    // 2. The ping was NOT collected on the current calendar day AND we're later
    -    //    than today's due time; collect the ping immediately.
    +    // 2. The ping was NOT collected on the current calendar day AND we're later
    +    //    than today's due time; collect the ping immediately.
         // 3. The ping was NOT collected on the current calendar day BUT we still have
         //    some time to the due time; schedule for submitting the current calendar day.
     
         let already_sent_today = last_sent_time.map_or(false, |d| d.date() == now.date());
         if already_sent_today {
             // Case #1
    -        log::info!("The 'metrics' ping was already sent today, {}", now);
    +        log::info!("The 'metrics' ping was already sent today, {}", now);
             scheduler.start_scheduler(submitter, now, When::Tomorrow);
         } else if now > now.date().and_hms(SCHEDULED_HOUR, 0, 0) {
             // Case #2
    -        log::info!("Sending the 'metrics' ping immediately, {}", now);
    -        submitter.submit_metrics_ping(glean, Some("overdue"), now);
    +        log::info!("Sending the 'metrics' ping immediately, {}", now);
    +        submitter.submit_metrics_ping(glean, Some("overdue"), now);
             scheduler.start_scheduler(submitter, now, When::Reschedule);
         } else {
             // Case #3
    -        log::info!("The 'metrics' collection is scheduled for today, {}", now);
    +        log::info!("The 'metrics' collection is scheduled for today, {}", now);
             scheduler.start_scheduler(submitter, now, When::Today);
         }
     }
     
    -/// "metrics" ping scheduling deadlines.
    +/// "metrics" ping scheduling deadlines.
     #[derive(Debug, PartialEq)]
     enum When {
         Today,
    @@ -721,13 +722,13 @@
     
     impl When {
         /// Returns the duration from now until our deadline.
    -    /// Note that std::time::Duration doesn't do negative time spans, so if
    +    /// Note that std::time::Duration doesn't do negative time spans, so if
         /// our deadline has passed, this will return zero.
         fn until(&self, now: DateTime<FixedOffset>) -> std::time::Duration {
             let fire_date = match self {
                 Self::Today => now.date().and_hms(SCHEDULED_HOUR, 0, 0),
    -            // Doesn't actually save us from being an hour off on DST because
    -            // chrono doesn't know when DST changes. : (
    +            // Doesn't actually save us from being an hour off on DST because
    +            // chrono doesn't know when DST changes. : (
                 Self::Tomorrow | Self::Reschedule => {
                     (now.date() + Duration::days(1)).and_hms(SCHEDULED_HOUR, 0, 0)
                 }
    @@ -738,76 +739,76 @@
                 .unwrap_or_else(|_| std::time::Duration::from_millis(0))
         }
     
    -    /// The "metrics" ping reason corresponding to our deadline.
    -    fn reason(&self) -> &'static str {
    +    /// The "metrics" ping reason corresponding to our deadline.
    +    fn reason(&self) -> &'static str {
             match self {
    -            Self::Today => "today",
    -            Self::Tomorrow => "tomorrow",
    -            Self::Reschedule => "reschedule",
    +            Self::Today => "today",
    +            Self::Tomorrow => "tomorrow",
    +            Self::Reschedule => "reschedule",
             }
         }
     }
     
     fn start_scheduler(
    -    submitter: impl MetricsPingSubmitter + Send + 'static,
    +    submitter: impl MetricsPingSubmitter + Send + 'static,
         now: DateTime<FixedOffset>,
         when: When,
     ) -> JoinHandle<()> {
         let pair = Arc::clone(&TASK_CONDVAR);
         std::thread::Builder::new()
    -        .name("glean.mps".into())
    +        .name("glean.mps".into())
             .spawn(move || {
                 let (cancelled_lock, condvar) = &*pair;
                 let mut when = when;
                 let mut now = now;
                 loop {
                     let dur = when.until(now);
    -                log::info!("Scheduling for {} after {:?}, reason {:?}", now, dur, when);
    +                log::info!("Scheduling for {} after {:?}, reason {:?}", now, dur, when);
                     let mut timed_out = false;
                     {
                         match condvar.wait_timeout_while(cancelled_lock.lock().unwrap(), dur, |cancelled| !*cancelled) {
                             Err(err) => {
    -                            log::warn!("Condvar wait failure. MPS exiting. {}", err);
    +                            log::warn!("Condvar wait failure. MPS exiting. {}", err);
                                 break;
                             }
                             Ok((cancelled, wait_result)) => {
                                 if *cancelled {
    -                                log::info!("Metrics Ping Scheduler cancelled. Exiting.");
    +                                log::info!("Metrics Ping Scheduler cancelled. Exiting.");
                                     break;
                                 } else if wait_result.timed_out() {
    -                                // Can't get the global glean while holding cancelled's lock.
    +                                // Can't get the global glean while holding cancelled's lock.
                                     timed_out = true;
                                 } else {
                                     // This should be impossible. `cancelled_lock` is acquired, and
                                     // `!*cancelled` is checked by the condvar before it is allowed
                                     // to return from `wait_timeout_while` (I checked).
                                     // So `Ok(_)` implies `*cancelled || wait_result.timed_out`.
    -                                log::warn!("Spurious wakeup of the MPS condvar should be impossible.");
    +                                log::warn!("Spurious wakeup of the MPS condvar should be impossible.");
                                 }
                             }
                         }
                     }
                     // Safety:
    -                // We are okay dropping the condvar's cancelled lock here because it only guards
    -                // whether we're cancelled, and we've established that we weren't when we timed out.
    +                // We are okay dropping the condvar's cancelled lock here because it only guards
    +                // whether we're cancelled, and we've established that we weren't when we timed out.
                     // We might _now_ be cancelled at any time, in which case when we loop back over
    -                // we'll immediately exit. But first we need to submit our "metrics" ping.
    +                // we'll immediately exit. But first we need to submit our "metrics" ping.
                     if timed_out {
    -                    log::info!("Time to submit our metrics ping, {:?}", when);
    -                    let glean = crate::core::global_glean().expect("Global Glean not present when trying to send scheduled 'metrics' ping?!").lock().unwrap();
    +                    log::info!("Time to submit our metrics ping, {:?}", when);
    +                    let glean = crate::core::global_glean().expect("Global Glean not present when trying to send scheduled 'metrics' ping?!").lock().unwrap();
                         submitter.submit_metrics_ping(&glean, Some(when.reason()), now);
                         when = When::Reschedule;
                     }
                     now = local_now_with_offset();
                 }
    -        }).expect("Unable to spawn Metrics Ping Scheduler thread.")
    +        }).expect("Unable to spawn Metrics Ping Scheduler thread.")
     }
     
     fn get_last_sent_time_metric() -> DatetimeMetric {
         DatetimeMetric::new(
             CommonMetricData {
    -            name: "last_sent_time".into(),
    -            category: "mps".into(),
    +            name: "last_sent_time".into(),
    +            category: "mps".into(),
                 send_in_pings: vec![INTERNAL_STORAGE.into()],
                 lifetime: Lifetime::User,
                 ..Default::default()
    @@ -818,8 +819,8 @@
     
     fn get_last_sent_build_metric() -> StringMetric {
         StringMetric::new(CommonMetricData {
    -        name: "last_sent_build".into(),
    -        category: "mps".into(),
    +        name: "last_sent_build".into(),
    +        category: "mps".into(),
             send_in_pings: vec![INTERNAL_STORAGE.into()],
             lifetime: Lifetime::User,
             ..Default::default()
    @@ -854,7 +855,7 @@
         impl<F: Fn(DateTime<FixedOffset>, When)> MetricsPingScheduler for ValidatingScheduler<F> {
             fn start_scheduler(
                 &self,
    -            _submitter: impl MetricsPingSubmitter + Send + 'static,
    +            _submitter: impl MetricsPingSubmitter + Send + 'static,
                 now: DateTime<FixedOffset>,
                 when: When,
             ) {
    @@ -889,12 +890,12 @@
         }
     
         // Ensure on first run that we actually set the last sent build metric.
    -    // (and that we send an "overdue" ping if it's after the scheduled hour)
    +    // (and that we send an "overdue" ping if it's after the scheduled hour)
         #[test]
         fn first_run_last_sent_build() {
             let (mut glean, _t) = new_glean(None);
     
    -        glean.app_build = "a build".into();
    +        glean.app_build = "a build".into();
             let lsb_metric = get_last_sent_build_metric();
             assert_eq!(None, lsb_metric.get_value(&glean, Some(INTERNAL_STORAGE)));
     
    @@ -903,7 +904,7 @@
                 .and_hms(SCHEDULED_HOUR, 0, 1);
     
             let (submitter, submitter_count, scheduler, scheduler_count) = new_proxies(
    -            |_, reason| assert_eq!(reason, Some("overdue")),
    +            |_, reason| assert_eq!(reason, Some("overdue")),
                 |_, when| assert_eq!(when, When::Reschedule),
             );
     
    @@ -917,17 +918,17 @@
             );
         }
     
    -    // Ensure that if we have a different build, we immediately submit an "upgrade" ping
    -    // and schedule a "reschedule" ping for tomorrow.
    +    // Ensure that if we have a different build, we immediately submit an "upgrade" ping
    +    // and schedule a "reschedule" ping for tomorrow.
         #[test]
         fn different_app_builds_submit_and_reschedule() {
             let (mut glean, _t) = new_glean(None);
     
    -        glean.app_build = "a build".into();
    -        get_last_sent_build_metric().set_sync(&glean, "a different build");
    +        glean.app_build = "a build".into();
    +        get_last_sent_build_metric().set_sync(&glean, "a different build");
     
             let (submitter, submitter_count, scheduler, scheduler_count) = new_proxies(
    -            |_, reason| assert_eq!(reason, Some("upgrade")),
    +            |_, reason| assert_eq!(reason, Some("upgrade")),
                 |_, when| assert_eq!(when, When::Reschedule),
             );
     
    @@ -936,8 +937,8 @@
             assert_eq!(1, scheduler_count.swap(0, Ordering::Relaxed));
         }
     
    -    // If we've already sent a ping today, ensure we don't send a ping but we
    -    // do schedule a ping for tomorrow. ("Case #1" in schedule_internal)
    +    // If we've already sent a ping today, ensure we don't send a ping but we
    +    // do schedule a ping for tomorrow. ("Case #1" in schedule_internal)
         #[test]
         fn case_1_no_submit_but_schedule_tomorrow() {
             let (glean, _t) = new_glean(None);
    @@ -946,7 +947,7 @@
             get_last_sent_time_metric().set_sync_chrono(&glean, fake_now);
     
             let (submitter, submitter_count, scheduler, scheduler_count) = new_proxies(
    -            |_, reason| panic!("Case #1 shouldn't submit a ping! reason: {:?}", reason),
    +            |_, reason| panic!("Case #1 shouldn't submit a ping! reason: {:?}", reason),
                 |_, when| assert_eq!(when, When::Tomorrow),
             );
             schedule_internal(&glean, submitter, scheduler, fake_now);
    @@ -954,9 +955,9 @@
             assert_eq!(1, scheduler_count.swap(0, Ordering::Relaxed));
         }
     
    -    // If we haven't sent a ping today and we're after the scheduled time,
    -    // ensure we send a ping and then schedule a "reschedule" ping for tomorrow.
    -    // ("Case #2" in schedule_internal)
    +    // If we haven't sent a ping today and we're after the scheduled time,
    +    // ensure we send a ping and then schedule a "reschedule" ping for tomorrow.
    +    // ("Case #2" in schedule_internal)
         #[test]
         fn case_2_submit_ping_and_reschedule() {
             let (glean, _t) = new_glean(None);
    @@ -968,7 +969,7 @@
             let fake_now = fake_yesterday + Duration::days(1);
     
             let (submitter, submitter_count, scheduler, scheduler_count) = new_proxies(
    -            |_, reason| assert_eq!(reason, Some("overdue")),
    +            |_, reason| assert_eq!(reason, Some("overdue")),
                 |_, when| assert_eq!(when, When::Reschedule),
             );
             schedule_internal(&glean, submitter, scheduler, fake_now);
    @@ -976,9 +977,9 @@
             assert_eq!(1, scheduler_count.swap(0, Ordering::Relaxed));
         }
     
    -    // If we haven't sent a ping today and we're before the scheduled time,
    -    // ensure we don't send a ping but schedule a "today" ping for today.
    -    // ("Case #3" in schedule_internal)
    +    // If we haven't sent a ping today and we're before the scheduled time,
    +    // ensure we don't send a ping but schedule a "today" ping for today.
    +    // ("Case #3" in schedule_internal)
         #[test]
         fn case_3_no_submit_but_schedule_today() {
             let (glean, _t) = new_glean(None);
    @@ -991,7 +992,7 @@
             let fake_now = fake_yesterday + Duration::days(1);
     
             let (submitter, submitter_count, scheduler, scheduler_count) = new_proxies(
    -            |_, reason| panic!("Case #3 shouldn't submit a ping! reason: {:?}", reason),
    +            |_, reason| panic!("Case #3 shouldn't submit a ping! reason: {:?}", reason),
                 |_, when| assert_eq!(when, When::Today),
             );
             schedule_internal(&glean, submitter, scheduler, fake_now);
    @@ -999,7 +1000,7 @@
             assert_eq!(1, scheduler_count.swap(0, Ordering::Relaxed));
         }
     
    -    // `When` is responsible for date math. Let's make sure it's correct.
    +    // `When` is responsible for date math. Let's make sure it's correct.
         #[test]
         fn when_gets_at_least_some_date_math_correct() {
             let now = FixedOffset::east(0).ymd(2021, 4, 30).and_hms(15, 2, 10);
    @@ -1014,7 +1015,7 @@
     
             // `Tomorrow` and `Reschedule` should differ only in their `reason()`
             // 46670s is 12h57m10s (aka, the time from 15:02:10 to 04:00:00
    -        // (when the timezone doesn't change between them)).
    +        // (when the timezone doesn't change between them)).
             assert_eq!(
                 std::time::Duration::from_secs(46670),
                 When::Tomorrow.until(now)
    @@ -1051,11 +1052,11 @@
                 new_proxies(
                     |_, reason| {
                         panic!(
    -                        "Shouldn't submit when testing scheduler. reason: {:?}",
    +                        "Shouldn't submit when testing scheduler. reason: {:?}",
                             reason
                         )
                     },
    -                |_, _| panic!("Not even using the scheduler this time."),
    +                |_, _| panic!("Not even using the scheduler this time."),
                 )
             };
     
    @@ -1083,7 +1084,7 @@
             assert_eq!(0, submitter_count.swap(0, Ordering::Relaxed));
         }
     
    -    // We're not keen to wait like the scheduler is, but we can test a quick schedule.
    +    // We're not keen to wait like the scheduler is, but we can test a quick schedule.
         #[test]
         fn immediate_task_runs_immediately() {
             // First and foremost, all scheduler tests must ensure they start uncancelled.
    @@ -1092,25 +1093,25 @@
             let (cancelled_lock, _condvar) = &**TASK_CONDVAR; // One `*` for Lazy, the second for Arc
             *cancelled_lock.lock().unwrap() = false;
     
    -        // We're actually going to submit a ping from the scheduler, which requires a global glean.
    +        // We're actually going to submit a ping from the scheduler, which requires a global glean.
             let (glean, _t) = new_glean(None);
             assert!(
                 !glean.schedule_metrics_pings,
    -            "Real schedulers not allowed in tests!"
    +            "Real schedulers not allowed in tests!"
             );
             assert!(crate::core::setup_glean(glean).is_ok());
     
    -        // We're choosing a time after SCHEDULED_HOUR so `When::Today` will give us a duration of 0.
    +        // We're choosing a time after SCHEDULED_HOUR so `When::Today` will give us a duration of 0.
             let now = FixedOffset::east(0).ymd(2021, 4, 20).and_hms(15, 42, 0);
     
             let (submitter, submitter_count, _, _) = new_proxies(
                 move |_, reason| {
    -                assert_eq!(reason, Some("today"));
    -                // After submitting the ping we expect, let's cancel this scheduler so the thread exits.
    -                // (But do it on another thread because the condvar loop is currently holding `cancelled`'s mutex)
    +                assert_eq!(reason, Some("today"));
    +                // After submitting the ping we expect, let's cancel this scheduler so the thread exits.
    +                // (But do it on another thread because the condvar loop is currently holding `cancelled`'s mutex)
                     std::thread::spawn(super::cancel);
                 },
    -            |_, _| panic!("Not using the scheduler this time."),
    +            |_, _| panic!("Not using the scheduler this time."),
             );
     
             let handle = start_scheduler(submitter, now, When::Today);
    @@ -1118,5 +1119,4 @@
             assert_eq!(1, submitter_count.swap(0, Ordering::Relaxed));
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/storage/mod.rs.html b/docs/src/glean_core/storage/mod.rs.html index 1a029f5727..19550fdf16 100644 --- a/docs/src/glean_core/storage/mod.rs.html +++ b/docs/src/glean_core/storage/mod.rs.html @@ -1,4 +1,5 @@ -mod.rs - source
    1
    +mod.rs - source
    +    
    1
     2
     3
     4
    @@ -284,7 +285,7 @@
     284
     285
     286
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -302,7 +303,7 @@
     use crate::Lifetime;
     
     // An internal ping name, not to be touched by anything else
    -pub(crate) const INTERNAL_STORAGE: &str = "glean_internal_info";
    +pub(crate) const INTERNAL_STORAGE: &str = "glean_internal_info";
     
     /// Snapshot metrics from the underlying database.
     pub struct StorageManager;
    @@ -317,11 +318,11 @@
         metric_id: &str,
         metric: &Metric,
     ) {
    -    let ping_section = format!("labeled_{}", metric.ping_section());
    +    let ping_section = format!("labeled_{}", metric.ping_section());
         let map = snapshot.entry(ping_section).or_default();
     
    -    // Safe unwrap, the function is only called when the id does contain a '/'
    -    let (metric_id, label) = metric_id.split_once('/').unwrap();
    +    // Safe unwrap, the function is only called when the id does contain a '/'
    +    let (metric_id, label) = metric_id.split_once('/').unwrap();
     
         let obj = map.entry(metric_id.into()).or_insert_with(|| json!({}));
         let obj = obj.as_object_mut().unwrap(); // safe unwrap, we constructed the object above
    @@ -373,7 +374,7 @@
     
             let mut snapshotter = |metric_id: &[u8], metric: &Metric| {
                 let metric_id = String::from_utf8_lossy(metric_id).into_owned();
    -            if metric_id.contains('/') {
    +            if metric_id.contains('/') {
                     snapshot_labeled_metrics(&mut snapshot, &metric_id, metric);
                 } else {
                     let map = snapshot.entry(metric.ping_section().into()).or_default();
    @@ -386,13 +387,13 @@
             storage.iter_store_from(Lifetime::User, store_name, None, &mut snapshotter);
     
             // Add send in all pings client.annotations
    -        if store_name != "glean_client_info" {
    -            storage.iter_store_from(Lifetime::Application, "all-pings", None, snapshotter);
    +        if store_name != "glean_client_info" {
    +            storage.iter_store_from(Lifetime::Application, "all-pings", None, snapshotter);
             }
     
             if clear_store {
                 if let Err(e) = storage.clear_ping_lifetime_storage(store_name) {
    -                log::warn!("Failed to clear lifetime storage: {:?}", e);
    +                log::warn!("Failed to clear lifetime storage: {:?}", e);
                 }
             }
     
    @@ -473,10 +474,10 @@
         ///
         /// ```json
         /// {
    -    ///  "experiment-id": {
    -    ///    "branch": "branch-id",
    -    ///    "extra": {
    -    ///      "additional": "property",
    +    ///  "experiment-id": {
    +    ///    "branch": "branch-id",
    +    ///    "extra": {
    +    ///      "additional": "property",
         ///      // ...
         ///    }
         ///  }
    @@ -493,8 +494,8 @@
     
             let mut snapshotter = |metric_id: &[u8], metric: &Metric| {
                 let metric_id = String::from_utf8_lossy(metric_id).into_owned();
    -            if metric_id.ends_with("#experiment") {
    -                let (name, _) = metric_id.split_once('#').unwrap(); // safe unwrap, we ensured there's a `#` in the string
    +            if metric_id.ends_with("#experiment") {
    +                let (name, _) = metric_id.split_once('#').unwrap(); // safe unwrap, we ensured there's a `#` in the string
                     snapshot.insert(name.to_string(), metric.as_json());
                 }
             };
    @@ -515,34 +516,34 @@
         use crate::metrics::ExperimentMetric;
         use crate::Glean;
     
    -    // Experiment's API tests: the next test comes from glean-ac's
    +    // Experiment's API tests: the next test comes from glean-ac's
         // ExperimentsStorageEngineTest.kt.
         #[test]
         fn test_experiments_json_serialization() {
             let t = tempfile::tempdir().unwrap();
             let name = t.path().display().to_string();
    -        let glean = Glean::with_options(&name, "org.mozilla.glean", true, true);
    +        let glean = Glean::with_options(&name, "org.mozilla.glean", true, true);
     
    -        let extra: HashMap<String, String> = [("test-key".into(), "test-value".into())]
    +        let extra: HashMap<String, String> = [("test-key".into(), "test-value".into())]
                 .iter()
                 .cloned()
                 .collect();
     
    -        let metric = ExperimentMetric::new(&glean, "some-experiment".to_string());
    +        let metric = ExperimentMetric::new(&glean, "some-experiment".to_string());
     
    -        metric.set_active_sync(&glean, "test-branch".to_string(), extra);
    +        metric.set_active_sync(&glean, "test-branch".to_string(), extra);
             let snapshot = StorageManager
    -            .snapshot_experiments_as_json(glean.storage(), "glean_internal_info")
    +            .snapshot_experiments_as_json(glean.storage(), "glean_internal_info")
                 .unwrap();
             assert_eq!(
    -            json!({"some-experiment": {"branch": "test-branch", "extra": {"test-key": "test-value"}}}),
    +            json!({"some-experiment": {"branch": "test-branch", "extra": {"test-key": "test-value"}}}),
                 snapshot
             );
     
             metric.set_inactive_sync(&glean);
     
             let empty_snapshot =
    -            StorageManager.snapshot_experiments_as_json(glean.storage(), "glean_internal_info");
    +            StorageManager.snapshot_experiments_as_json(glean.storage(), "glean_internal_info");
             assert!(empty_snapshot.is_none());
         }
     
    @@ -550,25 +551,24 @@
         fn test_experiments_json_serialization_empty() {
             let t = tempfile::tempdir().unwrap();
             let name = t.path().display().to_string();
    -        let glean = Glean::with_options(&name, "org.mozilla.glean", true, true);
    +        let glean = Glean::with_options(&name, "org.mozilla.glean", true, true);
     
    -        let metric = ExperimentMetric::new(&glean, "some-experiment".to_string());
    +        let metric = ExperimentMetric::new(&glean, "some-experiment".to_string());
     
    -        metric.set_active_sync(&glean, "test-branch".to_string(), HashMap::new());
    +        metric.set_active_sync(&glean, "test-branch".to_string(), HashMap::new());
             let snapshot = StorageManager
    -            .snapshot_experiments_as_json(glean.storage(), "glean_internal_info")
    +            .snapshot_experiments_as_json(glean.storage(), "glean_internal_info")
                 .unwrap();
             assert_eq!(
    -            json!({"some-experiment": {"branch": "test-branch"}}),
    +            json!({"some-experiment": {"branch": "test-branch"}}),
                 snapshot
             );
     
             metric.set_inactive_sync(&glean);
     
             let empty_snapshot =
    -            StorageManager.snapshot_experiments_as_json(glean.storage(), "glean_internal_info");
    +            StorageManager.snapshot_experiments_as_json(glean.storage(), "glean_internal_info");
             assert!(empty_snapshot.is_none());
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/system.rs.html b/docs/src/glean_core/system.rs.html index 771e40043f..84b5708c7d 100644 --- a/docs/src/glean_core/system.rs.html +++ b/docs/src/glean_core/system.rs.html @@ -1,4 +1,5 @@ -system.rs - source
    1
    +system.rs - source
    +    
    1
     2
     3
     4
    @@ -80,7 +81,7 @@
     80
     81
     82
    -
    // Copyright (c) 2017 The Rust Project Developers
    +
    // Copyright (c) 2017 The Rust Project Developers
     // Copyright (c) 2018-2020 The Rust Secure Code Working Group
     // Licensed under the MIT License.
     // Original license:
    @@ -88,7 +89,7 @@
     //
     // Permission is hereby granted, free of charge, to any
     // person obtaining a copy of this software and associated
    -// documentation files (the "Software"), to deal in the
    +// documentation files (the "Software"), to deal in the
     // Software without restriction, including without
     // limitation the rights to use, copy, modify, merge,
     // publish, distribute, sublicense, and/or sell copies of
    @@ -100,7 +101,7 @@
     // shall be included in all copies or substantial portions
     // of the Software.
     //
    -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
    +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
     // ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
     // TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
     // PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
    @@ -112,55 +113,54 @@
     
     //! Detect and expose `target_os` as a constant.
     //!
    -//! Code adopted from the "platforms" crate: <https://github.com/rustsec/rustsec/tree/2a080f173ad9d8ac7fa260f0a3a6aebf0000de06/platforms>.
    +//! Code adopted from the "platforms" crate: <https://github.com/rustsec/rustsec/tree/2a080f173ad9d8ac7fa260f0a3a6aebf0000de06/platforms>.
     
    -#[cfg(target_os = "android")]
    +#[cfg(target_os = "android")]
     /// `target_os` when building this crate: `android`
    -pub const OS: &str = "Android";
    +pub const OS: &str = "Android";
     
    -#[cfg(target_os = "ios")]
    +#[cfg(target_os = "ios")]
     /// `target_os` when building this crate: `ios`
    -pub const OS: &str = "iOS";
    +pub const OS: &str = "iOS";
     
    -#[cfg(target_os = "linux")]
    +#[cfg(target_os = "linux")]
     /// `target_os` when building this crate: `linux`
    -pub const OS: &str = "Linux";
    +pub const OS: &str = "Linux";
     
    -#[cfg(target_os = "macos")]
    +#[cfg(target_os = "macos")]
     /// `target_os` when building this crate: `macos`
    -pub const OS: &str = "Darwin";
    +pub const OS: &str = "Darwin";
     
    -#[cfg(target_os = "windows")]
    +#[cfg(target_os = "windows")]
     /// `target_os` when building this crate: `windows`
    -pub const OS: &str = "Windows";
    +pub const OS: &str = "Windows";
     
    -#[cfg(target_os = "freebsd")]
    +#[cfg(target_os = "freebsd")]
     /// `target_os` when building this crate: `freebsd`
    -pub const OS: &str = "FreeBSD";
    +pub const OS: &str = "FreeBSD";
     
    -#[cfg(target_os = "netbsd")]
    +#[cfg(target_os = "netbsd")]
     /// `target_os` when building this crate: `netbsd`
    -pub const OS: &str = "NetBSD";
    +pub const OS: &str = "NetBSD";
     
    -#[cfg(target_os = "openbsd")]
    +#[cfg(target_os = "openbsd")]
     /// `target_os` when building this crate: `openbsd`
    -pub const OS: &str = "OpenBSD";
    +pub const OS: &str = "OpenBSD";
     
    -#[cfg(target_os = "solaris")]
    +#[cfg(target_os = "solaris")]
     /// `target_os` when building this crate: `solaris`
    -pub const OS: &str = "Solaris";
    +pub const OS: &str = "Solaris";
     
     #[cfg(not(any(
    -    target_os = "android",
    -    target_os = "ios",
    -    target_os = "linux",
    -    target_os = "macos",
    -    target_os = "windows",
    -    target_os = "freebsd",
    -    target_os = "netbsd",
    -    target_os = "openbsd",
    -    target_os = "solaris",
    +    target_os = "android",
    +    target_os = "ios",
    +    target_os = "linux",
    +    target_os = "macos",
    +    target_os = "windows",
    +    target_os = "freebsd",
    +    target_os = "netbsd",
    +    target_os = "openbsd",
    +    target_os = "solaris",
     )))]
    -pub const OS: &str = "Unknown";
    -
    -
    \ No newline at end of file +pub const OS: &str = "Unknown"; + \ No newline at end of file diff --git a/docs/src/glean_core/traits/boolean.rs.html b/docs/src/glean_core/traits/boolean.rs.html index 6d82192af6..05b76a06a6 100644 --- a/docs/src/glean_core/traits/boolean.rs.html +++ b/docs/src/glean_core/traits/boolean.rs.html @@ -1,4 +1,5 @@ -boolean.rs - source
    1
    +boolean.rs - source
    +    
    1
     2
     3
     4
    @@ -41,7 +42,7 @@
     41
     42
     43
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -63,13 +64,13 @@
         ///
         /// Gets the currently stored value as a boolean.
         ///
    -    /// This doesn't clear the stored value.
    +    /// This doesn't clear the stored value.
         ///
         /// # Arguments
         ///
         /// * `ping_name` - represents the optional name of the ping to retrieve the
         ///   metric for. Defaults to the first value in `send_in_pings`.
    -    fn test_get_value<'a, S: Into<Option<&'a str>>>(&self, ping_name: S) -> Option<bool>;
    +    fn test_get_value<'a, S: Into<Option<&'a str>>>(&self, ping_name: S) -> Option<bool>;
     
         /// **Exported for test purposes.**
         ///
    @@ -84,5 +85,4 @@
         /// The number of errors reported.
         fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32;
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/traits/counter.rs.html b/docs/src/glean_core/traits/counter.rs.html index d12617b4bc..ffc8a55540 100644 --- a/docs/src/glean_core/traits/counter.rs.html +++ b/docs/src/glean_core/traits/counter.rs.html @@ -1,4 +1,5 @@ -counter.rs - source
    1
    +counter.rs - source
    +    
    1
     2
     3
     4
    @@ -45,7 +46,7 @@
     45
     46
     47
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -71,13 +72,13 @@
         ///
         /// Gets the currently stored value as an integer.
         ///
    -    /// This doesn't clear the stored value.
    +    /// This doesn't clear the stored value.
         ///
         /// # Arguments
         ///
         /// * `ping_name` - represents the optional name of the ping to retrieve the
         ///   metric for. Defaults to the first value in `send_in_pings`.
    -    fn test_get_value<'a, S: Into<Option<&'a str>>>(&self, ping_name: S) -> Option<i32>;
    +    fn test_get_value<'a, S: Into<Option<&'a str>>>(&self, ping_name: S) -> Option<i32>;
     
         /// **Exported for test purposes.**
         ///
    @@ -92,5 +93,4 @@
         /// The number of errors reported.
         fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32;
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/traits/custom_distribution.rs.html b/docs/src/glean_core/traits/custom_distribution.rs.html index d745aefb51..91dfb47b2e 100644 --- a/docs/src/glean_core/traits/custom_distribution.rs.html +++ b/docs/src/glean_core/traits/custom_distribution.rs.html @@ -1,4 +1,5 @@ -custom_distribution.rs - source
    1
    +custom_distribution.rs - source
    +    
    1
     2
     3
     4
    @@ -72,7 +73,7 @@
     72
     73
     74
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -122,13 +123,13 @@
         ///
         /// Gets the currently stored histogram.
         ///
    -    /// This doesn't clear the stored value.
    +    /// This doesn't clear the stored value.
         ///
         /// # Arguments
         ///
         /// * `ping_name` - represents the optional name of the ping to retrieve the
         ///   metric for. Defaults to the first value in `send_in_pings`.
    -    fn test_get_value<'a, S: Into<Option<&'a str>>>(
    +    fn test_get_value<'a, S: Into<Option<&'a str>>>(
             &self,
             ping_name: S,
         ) -> Option<crate::metrics::DistributionData>;
    @@ -146,5 +147,4 @@
         /// The number of errors recorded.
         fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32;
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/traits/datetime.rs.html b/docs/src/glean_core/traits/datetime.rs.html index 1e8615936f..cc5fee9230 100644 --- a/docs/src/glean_core/traits/datetime.rs.html +++ b/docs/src/glean_core/traits/datetime.rs.html @@ -1,4 +1,5 @@ -datetime.rs - source
    1
    +datetime.rs - source
    +    
    1
     2
     3
     4
    @@ -50,7 +51,7 @@
     50
     51
     52
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -78,13 +79,13 @@
         ///
         /// The precision of this value is truncated to the `time_unit` precision.
         ///
    -    /// This doesn't clear the stored value.
    +    /// This doesn't clear the stored value.
         ///
         /// # Arguments
         ///
         /// * `ping_name` - represents the optional name of the ping to retrieve the
         ///   metric for. Defaults to the first value in `send_in_pings`.
    -    fn test_get_value<'a, S: Into<Option<&'a str>>>(
    +    fn test_get_value<'a, S: Into<Option<&'a str>>>(
             &self,
             ping_name: S,
         ) -> Option<crate::metrics::Datetime>;
    @@ -102,5 +103,4 @@
         /// The number of errors reported.
         fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32;
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/traits/event.rs.html b/docs/src/glean_core/traits/event.rs.html index 191be04ea1..5a9e144134 100644 --- a/docs/src/glean_core/traits/event.rs.html +++ b/docs/src/glean_core/traits/event.rs.html @@ -1,4 +1,5 @@ -event.rs - source
    1
    +event.rs - source
    +    
    1
     2
     3
     4
    @@ -115,7 +116,7 @@
     115
     116
     117
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -137,7 +138,7 @@
     /// (e.g. to avoid typos or misuse of the API).
     pub trait ExtraKeys {
         /// List of allowed extra keys as strings.
    -    const ALLOWED_KEYS: &'static [&'static str];
    +    const ALLOWED_KEYS: &'static [&'static str];
     
         /// Convert the event extras into 2 lists:
         ///
    @@ -158,18 +159,18 @@
     pub enum NoExtraKeys {}
     
     impl ExtraKeys for NoExtraKeys {
    -    const ALLOWED_KEYS: &'static [&'static str] = &[];
    +    const ALLOWED_KEYS: &'static [&'static str] = &[];
     
         fn into_ffi_extra(self) -> HashMap<String, String> {
    -        unimplemented!("non-existing extra keys can't be turned into a list")
    +        unimplemented!("non-existing extra keys can't be turned into a list")
         }
     }
     
     /// The possible errors when parsing to an extra key.
     pub enum EventRecordingError {
    -    /// The id doesn't correspond to a valid extra key
    +    /// The id doesn't correspond to a valid extra key
         InvalidId,
    -    /// The value doesn't correspond to a valid extra key
    +    /// The value doesn't correspond to a valid extra key
         InvalidExtraKey,
     }
     
    @@ -208,13 +209,13 @@
         ///
         /// Get the vector of currently stored events for this event metric.
         ///
    -    /// This doesn't clear the stored value.
    +    /// This doesn't clear the stored value.
         ///
         /// # Arguments
         ///
         /// * `ping_name` - represents the optional name of the ping to retrieve the
         ///   metric for. Defaults to the first value in `send_in_pings`.
    -    fn test_get_value<'a, S: Into<Option<&'a str>>>(
    +    fn test_get_value<'a, S: Into<Option<&'a str>>>(
             &self,
             ping_name: S,
         ) -> Option<Vec<RecordedEvent>>;
    @@ -232,5 +233,4 @@
         /// The number of errors reported.
         fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32;
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/traits/labeled.rs.html b/docs/src/glean_core/traits/labeled.rs.html index 14b3d33c5e..177859652a 100644 --- a/docs/src/glean_core/traits/labeled.rs.html +++ b/docs/src/glean_core/traits/labeled.rs.html @@ -1,4 +1,5 @@ -labeled.rs - source
    1
    +labeled.rs - source
    +    
    1
     2
     3
     4
    @@ -38,7 +39,7 @@
     38
     39
     40
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -78,5 +79,4 @@
         /// The number of errors reported.
         fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32;
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/traits/memory_distribution.rs.html b/docs/src/glean_core/traits/memory_distribution.rs.html index ea088962c5..30d083f9d3 100644 --- a/docs/src/glean_core/traits/memory_distribution.rs.html +++ b/docs/src/glean_core/traits/memory_distribution.rs.html @@ -1,4 +1,5 @@ -memory_distribution.rs - source
    1
    +memory_distribution.rs - source
    +    
    1
     2
     3
     4
    @@ -52,7 +53,7 @@
     52
     53
     54
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -82,13 +83,13 @@
         ///
         /// Gets the currently stored value as a DistributionData of the serialized value.
         ///
    -    /// This doesn't clear the stored value.
    +    /// This doesn't clear the stored value.
         ///
         /// # Arguments
         ///
         /// * `ping_name` - represents the optional name of the ping to retrieve the
         ///   metric for. Defaults to the first value in `send_in_pings`.
    -    fn test_get_value<'a, S: Into<Option<&'a str>>>(
    +    fn test_get_value<'a, S: Into<Option<&'a str>>>(
             &self,
             ping_name: S,
         ) -> Option<DistributionData>;
    @@ -106,5 +107,4 @@
         /// The number of errors recorded.
         fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32;
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/traits/mod.rs.html b/docs/src/glean_core/traits/mod.rs.html index f4e0ea108a..4fde080daa 100644 --- a/docs/src/glean_core/traits/mod.rs.html +++ b/docs/src/glean_core/traits/mod.rs.html @@ -1,4 +1,5 @@ -mod.rs - source
    1
    +mod.rs - source
    +    
    1
     2
     3
     4
    @@ -67,7 +68,7 @@
     67
     68
     69
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -129,12 +130,11 @@
         /// Deserialize value to a `Vec<T>`.
         ///
         /// If the value was `null`  return an empty vector.
    -    pub fn vec_null<'de, D: serde::Deserializer<'de>, T: serde::Deserialize<'de>>(
    +    pub fn vec_null<'de, D: serde::Deserializer<'de>, T: serde::Deserialize<'de>>(
             d: D,
         ) -> Result<Vec<T>, D::Error> {
             let res: Option<Vec<T>> = serde::Deserialize::deserialize(d)?;
             Ok(res.unwrap_or_default())
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/traits/numerator.rs.html b/docs/src/glean_core/traits/numerator.rs.html index 60080a40d4..1aa7f85517 100644 --- a/docs/src/glean_core/traits/numerator.rs.html +++ b/docs/src/glean_core/traits/numerator.rs.html @@ -1,4 +1,5 @@ -numerator.rs - source
    1
    +numerator.rs - source
    +    
    1
     2
     3
     4
    @@ -45,7 +46,7 @@
     45
     46
     47
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -76,8 +77,8 @@
         /// * `ping_name` - the optional name of the ping to retrieve the metric
         ///                 for. Defaults to the first value in `send_in_pings`.
         ///
    -    /// This doesn't clear the stored value.
    -    fn test_get_value<'a, S: Into<Option<&'a str>>>(&self, ping_name: S) -> Option<Rate>;
    +    /// This doesn't clear the stored value.
    +    fn test_get_value<'a, S: Into<Option<&'a str>>>(&self, ping_name: S) -> Option<Rate>;
     
         /// **Exported for test purposes.**
         ///
    @@ -92,5 +93,4 @@
         /// The number of errors reported.
         fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32;
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/traits/object.rs.html b/docs/src/glean_core/traits/object.rs.html index 3117be8008..6ce97fae3f 100644 --- a/docs/src/glean_core/traits/object.rs.html +++ b/docs/src/glean_core/traits/object.rs.html @@ -1,4 +1,5 @@ -object.rs - source
    1
    +object.rs - source
    +    
    1
     2
     3
     4
    @@ -51,7 +52,7 @@
     51
     52
     53
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -65,7 +66,7 @@
     pub struct ObjectError(serde_json::Error);
     
     impl Display for ObjectError {
    -    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
    +    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
             Display::fmt(&self.0, f)
         }
     }
    @@ -76,7 +77,7 @@
     ///
     /// Objects are defined by their structure in the metrics definition.
     ///
    -/// This is essentially a wrapper around serde's `Serialize`/`Deserialize`,
    +/// This is essentially a wrapper around serde's `Serialize`/`Deserialize`,
     /// but in a way we can name it for our JSON (de)serialization.
     pub trait ObjectSerialize {
         /// Deserialize the object from its JSON representation.
    @@ -94,7 +95,7 @@
     impl<V> ObjectSerialize for V
     where
         V: Serialize,
    -    V: for<'de> Deserialize<'de>,
    +    V: for<'de> Deserialize<'de>,
     {
         fn from_str(obj: &str) -> Result<Self, ObjectError> {
             serde_json::from_str(obj).map_err(ObjectError)
    @@ -104,5 +105,4 @@
             serde_json::to_value(self).map_err(ObjectError)
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/traits/ping.rs.html b/docs/src/glean_core/traits/ping.rs.html index b7b119cc31..0218d58863 100644 --- a/docs/src/glean_core/traits/ping.rs.html +++ b/docs/src/glean_core/traits/ping.rs.html @@ -1,4 +1,5 @@ -ping.rs - source
    1
    +ping.rs - source
    +    
    1
     2
     3
     4
    @@ -15,7 +16,7 @@
     15
     16
     17
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -32,5 +33,4 @@
         ///   `ping_info.reason` part of the payload.
         fn submit(&self, reason: Option<&str>);
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/traits/quantity.rs.html b/docs/src/glean_core/traits/quantity.rs.html index 000c792140..7bd020ecf2 100644 --- a/docs/src/glean_core/traits/quantity.rs.html +++ b/docs/src/glean_core/traits/quantity.rs.html @@ -1,4 +1,5 @@ -quantity.rs - source
    1
    +quantity.rs - source
    +    
    1
     2
     3
     4
    @@ -45,7 +46,7 @@
     45
     46
     47
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -71,13 +72,13 @@
         ///
         /// Gets the currently stored value as an integer.
         ///
    -    /// This doesn't clear the stored value.
    +    /// This doesn't clear the stored value.
         ///
         /// # Arguments
         ///
         /// * `ping_name` - represents the optional name of the ping to retrieve the
         ///   metric for. Defaults to the first value in `send_in_pings`.
    -    fn test_get_value<'a, S: Into<Option<&'a str>>>(&self, ping_name: S) -> Option<i64>;
    +    fn test_get_value<'a, S: Into<Option<&'a str>>>(&self, ping_name: S) -> Option<i64>;
     
         /// **Exported for test purposes.**
         ///
    @@ -92,5 +93,4 @@
         /// The number of errors reported.
         fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32;
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/traits/rate.rs.html b/docs/src/glean_core/traits/rate.rs.html index ac4787b0a1..7a26eb0fe5 100644 --- a/docs/src/glean_core/traits/rate.rs.html +++ b/docs/src/glean_core/traits/rate.rs.html @@ -1,4 +1,5 @@ -rate.rs - source
    1
    +rate.rs - source
    +    
    1
     2
     3
     4
    @@ -55,7 +56,7 @@
     55
     56
     57
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -96,8 +97,8 @@
         /// * `ping_name` - the optional name of the ping to retrieve the metric
         ///                 for. Defaults to the first value in `send_in_pings`.
         ///
    -    /// This doesn't clear the stored value.
    -    fn test_get_value<'a, S: Into<Option<&'a str>>>(&self, ping_name: S) -> Option<crate::Rate>;
    +    /// This doesn't clear the stored value.
    +    fn test_get_value<'a, S: Into<Option<&'a str>>>(&self, ping_name: S) -> Option<crate::Rate>;
     
         /// **Exported for test purposes.**
         ///
    @@ -112,5 +113,4 @@
         /// The number of errors reported.
         fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32;
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/traits/string.rs.html b/docs/src/glean_core/traits/string.rs.html index 27f6a05eee..6299d4c10b 100644 --- a/docs/src/glean_core/traits/string.rs.html +++ b/docs/src/glean_core/traits/string.rs.html @@ -1,4 +1,5 @@ -string.rs - source
    1
    +string.rs - source
    +    
    1
     2
     3
     4
    @@ -48,7 +49,7 @@
     48
     49
     50
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -74,13 +75,13 @@
         ///
         /// Gets the currently stored value as a string.
         ///
    -    /// This doesn't clear the stored value.
    +    /// This doesn't clear the stored value.
         ///
         /// # Arguments
         ///
         /// * `ping_name` - represents the optional name of the ping to retrieve the
         ///   metric for. Defaults to the first value in `send_in_pings`.
    -    fn test_get_value<'a, S: Into<Option<&'a str>>>(
    +    fn test_get_value<'a, S: Into<Option<&'a str>>>(
             &self,
             ping_name: S,
         ) -> Option<std::string::String>;
    @@ -98,5 +99,4 @@
         /// The number of errors reported.
         fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32;
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/traits/string_list.rs.html b/docs/src/glean_core/traits/string_list.rs.html index c74f72e07a..f6236be855 100644 --- a/docs/src/glean_core/traits/string_list.rs.html +++ b/docs/src/glean_core/traits/string_list.rs.html @@ -1,4 +1,5 @@ -string_list.rs - source
    1
    +string_list.rs - source
    +    
    1
     2
     3
     4
    @@ -58,7 +59,7 @@
     58
     59
     60
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -97,13 +98,13 @@
         ///
         /// Gets the currently-stored values.
         ///
    -    /// This doesn't clear the stored value.
    +    /// This doesn't clear the stored value.
         ///
         /// # Arguments
         ///
         /// * `ping_name` - represents the optional name of the ping to retrieve the
         ///   metric for. Defaults to the first value in `send_in_pings`.
    -    fn test_get_value<'a, S: Into<Option<&'a str>>>(&self, ping_name: S) -> Option<Vec<String>>;
    +    fn test_get_value<'a, S: Into<Option<&'a str>>>(&self, ping_name: S) -> Option<Vec<String>>;
     
         /// **Exported for test purposes.**
         ///
    @@ -118,5 +119,4 @@
         /// The number of errors recorded.
         fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32;
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/traits/text.rs.html b/docs/src/glean_core/traits/text.rs.html index cadf893b6f..2c742222f7 100644 --- a/docs/src/glean_core/traits/text.rs.html +++ b/docs/src/glean_core/traits/text.rs.html @@ -1,4 +1,5 @@ -text.rs - source
    1
    +text.rs - source
    +    
    1
     2
     3
     4
    @@ -48,7 +49,7 @@
     48
     49
     50
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -74,13 +75,13 @@
         ///
         /// Gets the currently stored value as a string.
         ///
    -    /// This doesn't clear the stored value.
    +    /// This doesn't clear the stored value.
         ///
         /// # Arguments
         ///
         /// * `ping_name` - represents the optional name of the ping to retrieve the
         ///   metric for. Defaults to the first value in `send_in_pings`.
    -    fn test_get_value<'a, S: Into<Option<&'a str>>>(
    +    fn test_get_value<'a, S: Into<Option<&'a str>>>(
             &self,
             ping_name: S,
         ) -> Option<std::string::String>;
    @@ -98,5 +99,4 @@
         /// The number of errors reported.
         fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32;
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/traits/timespan.rs.html b/docs/src/glean_core/traits/timespan.rs.html index 78c3907241..4edfd2cbbc 100644 --- a/docs/src/glean_core/traits/timespan.rs.html +++ b/docs/src/glean_core/traits/timespan.rs.html @@ -1,4 +1,5 @@ -timespan.rs - source
    1
    +timespan.rs - source
    +    
    1
     2
     3
     4
    @@ -65,7 +66,7 @@
     65
     66
     67
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -81,7 +82,7 @@
         ///
         /// This uses an internal monotonic timer.
         ///
    -    /// This records an error if it's already tracking time (i.e.
    +    /// This records an error if it's already tracking time (i.e.
         /// [`start`](Timespan::start) was already called with no corresponding
         /// [`stop`](Timespan::stop)): in that case the original start time will be
         /// preserved.
    @@ -111,13 +112,13 @@
         ///
         /// Gets the currently stored value as an integer.
         ///
    -    /// This doesn't clear the stored value.
    +    /// This doesn't clear the stored value.
         ///
         /// # Arguments
         ///
         /// * `ping_name` - represents the optional name of the ping to retrieve the
         ///   metric for. Defaults to the first value in `send_in_pings`.
    -    fn test_get_value<'a, S: Into<Option<&'a str>>>(&self, ping_name: S) -> Option<u64>;
    +    fn test_get_value<'a, S: Into<Option<&'a str>>>(&self, ping_name: S) -> Option<u64>;
     
         /// **Exported for test purposes.**
         ///
    @@ -132,5 +133,4 @@
         /// The number of errors reported.
         fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32;
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/traits/timing_distribution.rs.html b/docs/src/glean_core/traits/timing_distribution.rs.html index 7e1603e51d..5d260f6c8e 100644 --- a/docs/src/glean_core/traits/timing_distribution.rs.html +++ b/docs/src/glean_core/traits/timing_distribution.rs.html @@ -1,4 +1,5 @@ -timing_distribution.rs - source
    1
    +timing_distribution.rs - source
    +    
    1
     2
     3
     4
    @@ -156,7 +157,7 @@
     156
     157
     158
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -211,7 +212,7 @@
         /// sample.
         ///
         /// Please note that this assumes that the provided samples are already in
    -    /// the "unit" declared by the instance of the metric type (e.g. if the
    +    /// the "unit" declared by the instance of the metric type (e.g. if the
         /// instance this method was called on is using [`crate::TimeUnit::Second`], then
         /// `samples` are assumed to be in that unit).
         ///
    @@ -236,7 +237,7 @@
         /// sample.
         ///
         /// Please note that this assumes that the provided sample is already in
    -    /// the "unit" declared by the instance of the metric type (e.g. if the
    +    /// the "unit" declared by the instance of the metric type (e.g. if the
         /// instance this method was called on is using [`crate::TimeUnit::Second`], then
         /// `sample` is assumed to be in that unit).
         ///
    @@ -269,7 +270,7 @@
         /// duration is:
         ///
         ///  * measured externally, or
    -    ///  * is in a unit different from the timing_distribution's internal TimeUnit.
    +    ///  * is in a unit different from the timing_distribution's internal TimeUnit.
         ///
         /// # Arguments
         ///
    @@ -282,21 +283,21 @@
         ///
         /// The API client is responsible for ensuring that `duration` is derived from a
         /// monotonic clock source that behaves consistently over computer sleep across
    -    /// the application's platforms. Otherwise the resulting data may not share the same
    -    /// guarantees that other `timing_distribution` metrics' data do.
    +    /// the application's platforms. Otherwise the resulting data may not share the same
    +    /// guarantees that other `timing_distribution` metrics' data do.
         fn accumulate_raw_duration(&self, duration: Duration);
     
         /// **Exported for test purposes.**
         ///
         /// Gets the currently stored value of the metric.
         ///
    -    /// This doesn't clear the stored value.
    +    /// This doesn't clear the stored value.
         ///
         /// # Arguments
         ///
         /// * `ping_name` - represents the optional name of the ping to retrieve the
         ///   metric for. Defaults to the first value in `send_in_pings`.
    -    fn test_get_value<'a, S: Into<Option<&'a str>>>(
    +    fn test_get_value<'a, S: Into<Option<&'a str>>>(
             &self,
             ping_name: S,
         ) -> Option<DistributionData>;
    @@ -314,5 +315,4 @@
         /// The number of errors recorded.
         fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32;
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/traits/url.rs.html b/docs/src/glean_core/traits/url.rs.html index 2e84ea6f15..f5bdc145d0 100644 --- a/docs/src/glean_core/traits/url.rs.html +++ b/docs/src/glean_core/traits/url.rs.html @@ -1,4 +1,5 @@ -url.rs - source
    1
    +url.rs - source
    +    
    1
     2
     3
     4
    @@ -49,7 +50,7 @@
     49
     50
     51
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -76,13 +77,13 @@
         ///
         /// Gets the currently stored value as a string.
         ///
    -    /// This doesn't clear the stored value.
    +    /// This doesn't clear the stored value.
         ///
         /// # Arguments
         ///
         /// * `ping_name` - represents the optional name of the ping to retrieve the
         ///   metric for. Defaults to the first value in `send_in_pings`.
    -    fn test_get_value<'a, S: Into<Option<&'a str>>>(
    +    fn test_get_value<'a, S: Into<Option<&'a str>>>(
             &self,
             ping_name: S,
         ) -> Option<std::string::String>;
    @@ -100,5 +101,4 @@
         /// The number of errors reported.
         fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32;
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/traits/uuid.rs.html b/docs/src/glean_core/traits/uuid.rs.html index efcb4ca545..f31a2af637 100644 --- a/docs/src/glean_core/traits/uuid.rs.html +++ b/docs/src/glean_core/traits/uuid.rs.html @@ -1,4 +1,5 @@ -uuid.rs - source
    1
    +uuid.rs - source
    +    
    1
     2
     3
     4
    @@ -44,7 +45,7 @@
     44
     45
     46
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -69,13 +70,13 @@
         ///
         /// Gets the currently stored value as a string.
         ///
    -    /// This doesn't clear the stored value.
    +    /// This doesn't clear the stored value.
         ///
         /// # Arguments
         ///
         /// * `ping_name` - represents the optional name of the ping to retrieve the
         ///   metric for. Defaults to the first value in `send_in_pings`.
    -    fn test_get_value<'a, S: Into<Option<&'a str>>>(&self, ping_name: S) -> Option<uuid::Uuid>;
    +    fn test_get_value<'a, S: Into<Option<&'a str>>>(&self, ping_name: S) -> Option<uuid::Uuid>;
     
         /// **Exported for test purposes.**
         ///
    @@ -90,5 +91,4 @@
         /// The number of errors reported.
         fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32;
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/upload/directory.rs.html b/docs/src/glean_core/upload/directory.rs.html index b2a655de77..ab32b0a68c 100644 --- a/docs/src/glean_core/upload/directory.rs.html +++ b/docs/src/glean_core/upload/directory.rs.html @@ -1,4 +1,5 @@ -directory.rs - source
    1
    +directory.rs - source
    +    
    1
     2
     3
     4
    @@ -456,7 +457,7 @@
     456
     457
     458
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -476,7 +477,7 @@
     /// A representation of the data extracted from a ping file,
     #[derive(Clone, Debug, Default)]
     pub struct PingPayload {
    -    /// The ping's doc_id.
    +    /// The ping's doc_id.
         pub document_id: String,
         /// The path to upload the ping to.
         pub upload_path: String,
    @@ -486,7 +487,7 @@
         pub headers: Option<HeaderMap>,
         /// Whether the ping body contains {client|ping}_info
         pub body_has_info_sections: bool,
    -    /// The ping's name. (Also likely in the upload_path.)
    +    /// The ping's name. (Also likely in the upload_path.)
         pub ping_name: String,
     }
     
    @@ -516,26 +517,26 @@
     ///
     /// # Panics
     ///
    -/// Won't panic if not able to get file name.
    +/// Won't panic if not able to get file name.
     fn get_file_name_as_str(path: &Path) -> Option<&str> {
         match path.file_name() {
             None => {
    -            log::warn!("Error getting file name from path: {}", path.display());
    +            log::warn!("Error getting file name from path: {}", path.display());
                 None
             }
             Some(file_name) => {
                 let file_name = file_name.to_str();
                 if file_name.is_none() {
    -                log::warn!("File name is not valid unicode: {}", path.display());
    +                log::warn!("File name is not valid unicode: {}", path.display());
                 }
                 file_name
             }
         }
     }
     
    -/// A ping's metadata, as (optionally) represented on disk.
    +/// A ping's metadata, as (optionally) represented on disk.
     ///
    -/// Anything that isn't the upload path or the ping body.
    +/// Anything that isn't the upload path or the ping body.
     #[derive(Default, Deserialize, Serialize)]
     pub struct PingMetadata {
         /// HTTP headers to include when uploading the ping.
    @@ -546,7 +547,7 @@
         pub ping_name: Option<String>,
     }
     
    -/// Processes a ping's metadata.
    +/// Processes a ping's metadata.
     ///
     /// The metadata is an optional third line in the ping file,
     /// currently it contains only additonal headers to be added to each ping request.
    @@ -556,7 +557,7 @@
         if let Ok(metadata) = serde_json::from_str::<PingMetadata>(metadata) {
             return Some(metadata);
         } else {
    -        log::warn!("Error while parsing ping metadata: {}", path);
    +        log::warn!("Error while parsing ping metadata: {}", path);
         }
         None
     }
    @@ -596,22 +597,22 @@
         ///
         /// # Panics
         ///
    -    /// Won't panic if unable to delete the file.
    +    /// Won't panic if unable to delete the file.
         pub fn delete_file(&self, uuid: &str) -> bool {
             let path = match self.get_file_path(uuid) {
                 Some(path) => path,
                 None => {
    -                log::warn!("Cannot find ping file to delete {}", uuid);
    +                log::warn!("Cannot find ping file to delete {}", uuid);
                     return false;
                 }
             };
     
             match fs::remove_file(&path) {
                 Err(e) => {
    -                log::warn!("Error deleting file {}. {}", path.display(), e);
    +                log::warn!("Error deleting file {}. {}", path.display(), e);
                     return false;
                 }
    -            _ => log::info!("File was deleted {}", path.display()),
    +            _ => log::info!("File was deleted {}", path.display()),
             };
     
             true
    @@ -628,19 +629,19 @@
             let path = match self.get_file_path(document_id) {
                 Some(path) => path,
                 None => {
    -                log::warn!("Cannot find ping file to process {}", document_id);
    +                log::warn!("Cannot find ping file to process {}", document_id);
                     return None;
                 }
             };
             let file = match File::open(&path) {
                 Ok(file) => file,
                 Err(e) => {
    -                log::warn!("Error reading ping file {}. {}", path.display(), e);
    +                log::warn!("Error reading ping file {}. {}", path.display(), e);
                     return None;
                 }
             };
     
    -        log::info!("Processing ping at: {}", path.display());
    +        log::info!("Processing ping at: {}", path.display());
     
             // The way the ping file is structured:
             // first line should always have the path,
    @@ -658,7 +659,7 @@
                     .and_then(|m| process_metadata(&path, &m))
                     .unwrap_or_default();
                 let ping_name =
    -                ping_name.unwrap_or_else(|| path.split('/').nth(3).unwrap_or("").into());
    +                ping_name.unwrap_or_else(|| path.split('/').nth(3).unwrap_or("").into());
                 return Some(PingPayload {
                     document_id: document_id.into(),
                     upload_path: path,
    @@ -669,7 +670,7 @@
                 });
             } else {
                 log::warn!(
    -                "Error processing ping file: {}. Ping file is not formatted as expected.",
    +                "Error processing ping file: {}. Ping file is not formatted as expected.",
                     document_id
                 );
             }
    @@ -689,19 +690,19 @@
         /// corresponding to each valid ping file in the directory.
         /// This vector will be ordered by file `modified_date`.
         ///
    -    /// Any files that don't match the UUID regex will be deleted
    +    /// Any files that don't match the UUID regex will be deleted
         /// to prevent files from polluting the pings directory.
         ///
         /// # Returns
         ///
         /// A vector of tuples with the file size and payload of each ping file in the directory.
         fn process_dir(&self, dir: &Path) -> Vec<(u64, PingPayload)> {
    -        log::trace!("Processing persisted pings.");
    +        log::trace!("Processing persisted pings.");
     
             let entries = match dir.read_dir() {
                 Ok(entries) => entries,
                 Err(_) => {
    -                // This may error simply because the directory doesn't exist,
    +                // This may error simply because the directory doesn't exist,
                     // which is expected if no pings were stored yet.
                     return Vec::new();
                 }
    @@ -712,9 +713,9 @@
                 .filter_map(|entry| {
                     let path = entry.path();
                     if let Some(file_name) = get_file_name_as_str(&path) {
    -                    // Delete file if it doesn't match the pattern.
    +                    // Delete file if it doesn't match the pattern.
                         if Uuid::parse_str(file_name).is_err() {
    -                        log::warn!("Pattern mismatch. Deleting {}", path.display());
    +                        log::warn!("Pattern mismatch. Deleting {}", path.display());
                             self.delete_file(file_name);
                             return None;
                         }
    @@ -722,12 +723,12 @@
                             let metadata = match fs::metadata(&path) {
                                 Ok(metadata) => metadata,
                                 Err(e) => {
    -                                // There's a rare case where this races against a parallel deletion
    +                                // There's a rare case where this races against a parallel deletion
                                     // of all pending ping files.
    -                                // This could therefore fail, in which case we don't care about the
    -                                // result and can ignore the ping, it's already been deleted.
    +                                // This could therefore fail, in which case we don't care about the
    +                                // result and can ignore the ping, it's already been deleted.
                                     log::warn!(
    -                                    "Unable to read metadata for file: {}, error: {:?}",
    +                                    "Unable to read metadata for file: {}, error: {:?}",
                                         path.display(),
                                         e
                                     );
    @@ -784,7 +785,7 @@
             let dir = tempfile::tempdir().unwrap();
             let directory_manager = PingDirectoryManager::new(dir.path());
     
    -        // Verify that processing the directory didn't panic
    +        // Verify that processing the directory didn't panic
             let data = directory_manager.process_dirs();
             assert_eq!(data.pending_pings.len(), 0);
             assert_eq!(data.deletion_request_pings.len(), 0);
    @@ -795,7 +796,7 @@
             let (mut glean, dir) = new_glean(None);
     
             // Register a ping for testing
    -        let ping_type = PingType::new("test", true, true, true, true, true, vec![], vec![]);
    +        let ping_type = PingType::new("test", true, true, true, true, true, vec![], vec![]);
             glean.register_ping_type(&ping_type);
     
             // Submit the ping to populate the pending_pings directory
    @@ -810,11 +811,11 @@
             assert_eq!(data.pending_pings.len(), 1);
             assert_eq!(data.deletion_request_pings.len(), 0);
     
    -        // Verify request was returned for the "test" ping
    +        // Verify request was returned for the "test" ping
             let ping = &data.pending_pings[0].1;
    -        let request_ping_type = ping.upload_path.split('/').nth(3).unwrap();
    +        let request_ping_type = ping.upload_path.split('/').nth(3).unwrap();
             assert_eq!(request_ping_type, ping.ping_name);
    -        assert_eq!(request_ping_type, "test");
    +        assert_eq!(request_ping_type, "test");
         }
     
         #[test]
    @@ -822,7 +823,7 @@
             let (mut glean, dir) = new_glean(None);
     
             // Register a ping for testing
    -        let ping_type = PingType::new("test", true, true, true, true, true, vec![], vec![]);
    +        let ping_type = PingType::new("test", true, true, true, true, true, vec![], vec![]);
             glean.register_ping_type(&ping_type);
     
             // Submit the ping to populate the pending_pings directory
    @@ -833,7 +834,7 @@
             let not_uuid_path = dir
                 .path()
                 .join(PENDING_PINGS_DIRECTORY)
    -            .join("not-uuid-file-name.txt");
    +            .join("not-uuid-file-name.txt");
             File::create(&not_uuid_path).unwrap();
     
             // Try and process the pings directories
    @@ -843,11 +844,11 @@
             assert_eq!(data.pending_pings.len(), 1);
             assert_eq!(data.deletion_request_pings.len(), 0);
     
    -        // Verify request was returned for the "test" ping
    +        // Verify request was returned for the "test" ping
             let ping = &data.pending_pings[0].1;
    -        let request_ping_type = ping.upload_path.split('/').nth(3).unwrap();
    +        let request_ping_type = ping.upload_path.split('/').nth(3).unwrap();
             assert_eq!(request_ping_type, ping.ping_name);
    -        assert_eq!(request_ping_type, "test");
    +        assert_eq!(request_ping_type, "test");
     
             // Verify that file was indeed deleted
             assert!(!not_uuid_path.exists());
    @@ -858,7 +859,7 @@
             let (mut glean, dir) = new_glean(None);
     
             // Register a ping for testing
    -        let ping_type = PingType::new("test", true, true, true, true, true, vec![], vec![]);
    +        let ping_type = PingType::new("test", true, true, true, true, true, vec![], vec![]);
             glean.register_ping_type(&ping_type);
     
             // Submit the ping to populate the pending_pings directory
    @@ -879,11 +880,11 @@
             assert_eq!(data.pending_pings.len(), 1);
             assert_eq!(data.deletion_request_pings.len(), 0);
     
    -        // Verify request was returned for the "test" ping
    +        // Verify request was returned for the "test" ping
             let ping = &data.pending_pings[0].1;
    -        let request_ping_type = ping.upload_path.split('/').nth(3).unwrap();
    +        let request_ping_type = ping.upload_path.split('/').nth(3).unwrap();
             assert_eq!(request_ping_type, ping.ping_name);
    -        assert_eq!(request_ping_type, "test");
    +        assert_eq!(request_ping_type, "test");
     
             // Verify that file was indeed deleted
             assert!(!wrong_contents_file_path.exists());
    @@ -907,12 +908,11 @@
             assert_eq!(data.pending_pings.len(), 0);
             assert_eq!(data.deletion_request_pings.len(), 1);
     
    -        // Verify request was returned for the "deletion-request" ping
    +        // Verify request was returned for the "deletion-request" ping
             let ping = &data.deletion_request_pings[0].1;
    -        let request_ping_type = ping.upload_path.split('/').nth(3).unwrap();
    +        let request_ping_type = ping.upload_path.split('/').nth(3).unwrap();
             assert_eq!(request_ping_type, ping.ping_name);
    -        assert_eq!(request_ping_type, "deletion-request");
    +        assert_eq!(request_ping_type, "deletion-request");
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/upload/mod.rs.html b/docs/src/glean_core/upload/mod.rs.html index a5f3ab8cc9..24193f1ba2 100644 --- a/docs/src/glean_core/upload/mod.rs.html +++ b/docs/src/glean_core/upload/mod.rs.html @@ -1,4 +1,5 @@ -mod.rs - source
    1
    +mod.rs - source
    +    
    1
     2
     3
     4
    @@ -1933,7 +1934,7 @@
     1933
     1934
     1935
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -2047,7 +2048,7 @@
             }
     
             if self.count == self.max_count {
    -            // Note that `remining` can't be a negative number because we just called `reset`,
    +            // Note that `remining` can't be a negative number because we just called `reset`,
                 // which will check if it is and reset if so.
                 let remaining = self.interval.as_millis() - self.elapsed().as_millis();
                 return RateLimiterState::Throttled(
    @@ -2083,7 +2084,7 @@
             time: u64,
         },
     
    -    /// A flag signaling that requester doesn't need to request any more upload tasks at this moment.
    +    /// A flag signaling that requester doesn't need to request any more upload tasks at this moment.
         ///
         /// There are three possibilities for this scenario:
         /// * Pending pings queue is empty, no more pings to request;
    @@ -2092,12 +2093,12 @@
         ///   recoverable upload failures on the same uploading window (see below)
         ///   and should stop requesting at this moment.
         ///
    -    /// An "uploading window" starts when a requester gets a new
    +    /// An "uploading window" starts when a requester gets a new
         /// `PingUploadTask::Upload(PingRequest)` response and finishes when they
         /// finally get a `PingUploadTask::Done` or `PingUploadTask::Wait` response.
         Done {
             #[doc(hidden)]
    -        /// Unused field. Required because UniFFI can't handle variants without fields.
    +        /// Unused field. Required because UniFFI can't handle variants without fields.
             unused: i8,
         },
     }
    @@ -2191,13 +2192,13 @@
             let local_cached_pings = self.cached_pings.clone();
             let local_flag = self.processed_pending_pings.clone();
             thread::Builder::new()
    -            .name("glean.ping_directory_manager.process_dir".to_string())
    +            .name("glean.ping_directory_manager.process_dir".to_string())
                 .spawn(move || {
                     {
                         // Be sure to drop local_cached_pings lock before triggering upload.
                         let mut local_cached_pings = local_cached_pings
                             .write()
    -                        .expect("Can't write to pending pings cache.");
    +                        .expect("Can't write to pending pings cache.");
                         local_cached_pings.extend(local_manager.process_dirs());
                         local_flag.store(true, Ordering::SeqCst);
                     }
    @@ -2207,7 +2208,7 @@
                             {
                                 if let Err(e) = state.callbacks.trigger_upload() {
                                     log::error!(
    -                                    "Triggering upload after pending ping scan failed. Error: {}",
    +                                    "Triggering upload after pending ping scan failed. Error: {}",
                                         e
                                     );
                                 }
    @@ -2215,13 +2216,13 @@
                         });
                     }
                 })
    -            .expect("Unable to spawn thread to process pings directories.")
    +            .expect("Unable to spawn thread to process pings directories.")
         }
     
         /// Creates a new upload manager with no limitations, for tests.
         #[cfg(test)]
         pub fn no_policy<P: Into<PathBuf>>(data_path: P) -> Self {
    -        let mut upload_manager = Self::new(data_path, "Test");
    +        let mut upload_manager = Self::new(data_path, "Test");
     
             // Disable all policies for tests, if necessary individuals tests can re-enable them.
             upload_manager.policy.set_max_recoverable_failures(None);
    @@ -2283,7 +2284,7 @@
             match request.build() {
                 Ok(request) => Some(request),
                 Err(e) => {
    -                log::warn!("Error trying to build ping request: {}", e);
    +                log::warn!("Error trying to build ping request: {}", e);
                     self.directory_manager.delete_file(&document_id);
     
                     // Record the error.
    @@ -2304,7 +2305,7 @@
             let mut queue = self
                 .queue
                 .write()
    -            .expect("Can't write to pending pings queue.");
    +            .expect("Can't write to pending pings queue.");
     
             let PingPayload {
                 ref document_id,
    @@ -2317,7 +2318,7 @@
                 .any(|request| request.document_id.as_str() == document_id)
             {
                 log::warn!(
    -                "Attempted to enqueue a duplicate ping {} at {}.",
    +                "Attempted to enqueue a duplicate ping {} at {}.",
                     document_id,
                     path
                 );
    @@ -2328,7 +2329,7 @@
                 let in_flight = self.in_flight.read().unwrap();
                 if in_flight.contains_key(document_id) {
                     log::warn!(
    -                    "Attempted to enqueue an in-flight ping {} at {}.",
    +                    "Attempted to enqueue an in-flight ping {} at {}.",
                         document_id,
                         path
                     );
    @@ -2339,7 +2340,7 @@
                 }
             }
     
    -        log::trace!("Enqueuing ping {} at {}", document_id, path);
    +        log::trace!("Enqueuing ping {} at {}", document_id, path);
             if let Some(request) = self.build_ping_request(glean, ping) {
                 queue.push_back(request)
             }
    @@ -2348,15 +2349,15 @@
         /// Enqueues pings that might have been cached.
         ///
         /// The size of the PENDING_PINGS_DIRECTORY directory will be calculated
    -    /// (by accumulating each ping's size in that directory)
    +    /// (by accumulating each ping's size in that directory)
         /// and in case we exceed the quota, defined by the `quota` arg,
         /// outstanding pings get deleted and are not enqueued.
         ///
         /// The size of the DELETION_REQUEST_PINGS_DIRECTORY will not be calculated
         /// and no deletion-request pings will be deleted. Deletion request pings
    -    /// are not very common and usually don't contain any data,
    -    /// we don't expect that directory to ever reach quota.
    -    /// Most importantly, we don't want to ever delete deletion-request pings.
    +    /// are not very common and usually don't contain any data,
    +    /// we don't expect that directory to ever reach quota.
    +    /// Most importantly, we don't want to ever delete deletion-request pings.
         ///
         /// # Arguments
         ///
    @@ -2365,7 +2366,7 @@
             let mut cached_pings = self
                 .cached_pings
                 .write()
    -            .expect("Can't write to pending pings cache.");
    +            .expect("Can't write to pending pings cache.");
     
             if cached_pings.len() > 0 {
                 let mut pending_pings_directory_size: u64 = 0;
    @@ -2379,7 +2380,7 @@
     
                 if total > self.policy.max_pending_pings_count() {
                     log::warn!(
    -                    "More than {} pending pings in the directory, will delete {} old pings.",
    +                    "More than {} pending pings in the directory, will delete {} old pings.",
                         self.policy.max_pending_pings_count(),
                         total - self.policy.max_pending_pings_count()
                     );
    @@ -2395,10 +2396,10 @@
                     pending_pings_count += 1;
                     pending_pings_directory_size += file_size;
     
    -                // We don't want to spam the log for every ping over the quota.
    +                // We don't want to spam the log for every ping over the quota.
                     if !deleting && pending_pings_directory_size > self.policy.max_pending_pings_directory_size() {
                         log::warn!(
    -                        "Pending pings directory has reached the size quota of {} bytes, outstanding pings will be deleted.",
    +                        "Pending pings directory has reached the size quota of {} bytes, outstanding pings will be deleted.",
                             self.policy.max_pending_pings_directory_size()
                         );
                         deleting = true;
    @@ -2461,7 +2462,7 @@
     
         /// Reads a ping file, creates a `PingRequest` and adds it to the queue.
         ///
    -    /// Duplicate requests won't be added.
    +    /// Duplicate requests won't be added.
         ///
         /// # Arguments
         ///
    @@ -2474,16 +2475,16 @@
         }
     
         /// Clears the pending pings queue, leaves the deletion-request pings.
    -    pub fn clear_ping_queue(&self) -> RwLockWriteGuard<'_, VecDeque<PingRequest>> {
    -        log::trace!("Clearing ping queue");
    +    pub fn clear_ping_queue(&self) -> RwLockWriteGuard<'_, VecDeque<PingRequest>> {
    +        log::trace!("Clearing ping queue");
             let mut queue = self
                 .queue
                 .write()
    -            .expect("Can't write to pending pings queue.");
    +            .expect("Can't write to pending pings queue.");
     
             queue.retain(|ping| ping.is_deletion_request());
             log::trace!(
    -            "{} pings left in the queue (only deletion-request expected)",
    +            "{} pings left in the queue (only deletion-request expected)",
                 queue.len()
             );
             queue
    @@ -2505,7 +2506,7 @@
     
             if !self.processed_pending_pings() {
                 log::info!(
    -                "Tried getting an upload task, but processing is ongoing. Will come back later."
    +                "Tried getting an upload task, but processing is ongoing. Will come back later."
                 );
                 return wait_or_done(WAIT_TIME_FOR_PING_PROCESSING);
             }
    @@ -2515,7 +2516,7 @@
     
             if self.recoverable_failure_count() >= self.policy.max_recoverable_failures() {
                 log::warn!(
    -                "Reached maximum recoverable failures for the current uploading window. You are done."
    +                "Reached maximum recoverable failures for the current uploading window. You are done."
                 );
                 return PingUploadTask::done();
             }
    @@ -2523,23 +2524,23 @@
             let mut queue = self
                 .queue
                 .write()
    -            .expect("Can't write to pending pings queue.");
    +            .expect("Can't write to pending pings queue.");
             match queue.front() {
                 Some(request) => {
                     if let Some(rate_limiter) = &self.rate_limiter {
                         let mut rate_limiter = rate_limiter
                             .write()
    -                        .expect("Can't write to the rate limiter.");
    +                        .expect("Can't write to the rate limiter.");
                         if let RateLimiterState::Throttled(remaining) = rate_limiter.get_state() {
                             log::info!(
    -                            "Tried getting an upload task, but we are throttled at the moment."
    +                            "Tried getting an upload task, but we are throttled at the moment."
                             );
                             return wait_or_done(remaining);
                         }
                     }
     
                     log::info!(
    -                    "New upload task with id {} (path: {})",
    +                    "New upload task with id {} (path: {})",
                         request.document_id,
                         request.path
                     );
    @@ -2548,13 +2549,13 @@
                         if let Some(body) = request.pretty_body() {
                             chunked_log_info(&request.path, &body);
                         } else {
    -                        chunked_log_info(&request.path, "<invalid ping payload>");
    +                        chunked_log_info(&request.path, "<invalid ping payload>");
                         }
                     }
     
                     {
                         // Synchronous timer starts.
    -                    // We're in the uploader thread anyway.
    +                    // We're in the uploader thread anyway.
                         // But also: No data is stored on disk.
                         let mut in_flight = self.in_flight.write().unwrap();
                         let success_id = self.upload_metrics.send_success.start_sync();
    @@ -2567,12 +2568,12 @@
                     // Adding the `Date` header just before actual upload happens.
                     request
                         .headers
    -                    .insert("Date".to_string(), create_date_header_value(Utc::now()));
    +                    .insert("Date".to_string(), create_date_header_value(Utc::now()));
     
                     PingUploadTask::Upload { request }
                 }
                 None => {
    -                log::info!("No more pings to upload! You are done.");
    +                log::info!("No more pings to upload! You are done.");
                     PingUploadTask::done()
                 }
             }
    @@ -2666,7 +2667,7 @@
     
             match status {
                 HttpStatus { code } if (200..=299).contains(&code) => {
    -                log::info!("Ping {} successfully sent {}.", document_id, code);
    +                log::info!("Ping {} successfully sent {}.", document_id, code);
                     if let Some((success_id, failure_id)) = send_ids {
                         self.upload_metrics
                             .send_success
    @@ -2678,7 +2679,7 @@
     
                 UnrecoverableFailure { .. } | HttpStatus { code: 400..=499 } => {
                     log::warn!(
    -                    "Unrecoverable upload failure while attempting to send ping {}. Error was {:?}",
    +                    "Unrecoverable upload failure while attempting to send ping {}. Error was {:?}",
                         document_id,
                         status
                     );
    @@ -2693,7 +2694,7 @@
     
                 RecoverableFailure { .. } | HttpStatus { .. } => {
                     log::warn!(
    -                    "Recoverable upload failure while attempting to send ping {}, will retry. Error was {:?}",
    +                    "Recoverable upload failure while attempting to send ping {}, will retry. Error was {:?}",
                         document_id,
                         status
                     );
    @@ -2709,7 +2710,7 @@
                 }
     
                 Done { .. } => {
    -                log::debug!("Uploader signaled Done. Exiting.");
    +                log::debug!("Uploader signaled Done. Exiting.");
                     if let Some((success_id, failure_id)) = send_ids {
                         self.upload_metrics.send_success.cancel_sync(success_id);
                         self.upload_metrics.send_failure.cancel_sync(failure_id);
    @@ -2723,18 +2724,18 @@
     }
     
     /// Splits log message into chunks on Android.
    -#[cfg(target_os = "android")]
    +#[cfg(target_os = "android")]
     pub fn chunked_log_info(path: &str, payload: &str) {
    -    // Since the logcat ring buffer size is configurable, but it's 'max payload' size is not,
    +    // Since the logcat ring buffer size is configurable, but it's 'max payload' size is not,
         // we must break apart long pings into chunks no larger than the max payload size of 4076b.
         // We leave some head space for our prefix.
         const MAX_LOG_PAYLOAD_SIZE_BYTES: usize = 4000;
     
         // If the length of the ping will fit within one logcat payload, then we can
         // short-circuit here and avoid some overhead, otherwise we must split up the
    -    // message so that we don't truncate it.
    +    // message so that we don't truncate it.
         if path.len() + payload.len() <= MAX_LOG_PAYLOAD_SIZE_BYTES {
    -        log::info!("Glean ping to URL: {}\n{}", path, payload);
    +        log::info!("Glean ping to URL: {}\n{}", path, payload);
             return;
         }
     
    @@ -2748,7 +2749,7 @@
     
         while end < payload.len() {
             // Find char boundary from the end.
    -        // It's UTF-8, so it is within 4 bytes from here.
    +        // It's UTF-8, so it is within 4 bytes from here.
             for _ in 0..4 {
                 if payload.is_char_boundary(end) {
                     break;
    @@ -2757,7 +2758,7 @@
             }
     
             log::info!(
    -            "Glean ping to URL: {} [Part {} of {}]\n{}",
    +            "Glean ping to URL: {} [Part {} of {}]\n{}",
                 path,
                 chunk_idx,
                 total_chunks,
    @@ -2773,7 +2774,7 @@
         // Print any suffix left
         if start < payload.len() {
             log::info!(
    -            "Glean ping to URL: {} [Part {} of {}]\n{}",
    +            "Glean ping to URL: {} [Part {} of {}]\n{}",
                 path,
                 chunk_idx,
                 total_chunks,
    @@ -2783,9 +2784,9 @@
     }
     
     /// Logs payload in one go (all other OS).
    -#[cfg(not(target_os = "android"))]
    +#[cfg(not(target_os = "android"))]
     pub fn chunked_log_info(_path: &str, payload: &str) {
    -    log::info!("{}", payload)
    +    log::info!("{}", payload)
     }
     
     #[cfg(test)]
    @@ -2796,7 +2797,7 @@
         use crate::metrics::PingType;
         use crate::{tests::new_glean, PENDING_PINGS_DIRECTORY};
     
    -    const PATH: &str = "/submit/app_id/ping_name/schema_version/doc_id";
    +    const PATH: &str = "/submit/app_id/ping_name/schema_version/doc_id";
     
         #[test]
         fn doesnt_error_when_there_are_no_pending_pings() {
    @@ -2819,10 +2820,10 @@
                 PingPayload {
                     document_id: Uuid::new_v4().to_string(),
                     upload_path: PATH.into(),
    -                json_body: "".into(),
    +                json_body: "".into(),
                     headers: None,
                     body_has_info_sections: true,
    -                ping_name: "ping-name".into(),
    +                ping_name: "ping-name".into(),
                 },
             );
     
    @@ -2846,10 +2847,10 @@
                     PingPayload {
                         document_id: Uuid::new_v4().to_string(),
                         upload_path: PATH.into(),
    -                    json_body: "".into(),
    +                    json_body: "".into(),
                         headers: None,
                         body_has_info_sections: true,
    -                    ping_name: "ping-name".into(),
    +                    ping_name: "ping-name".into(),
                     },
                 );
             }
    @@ -2884,10 +2885,10 @@
                     PingPayload {
                         document_id: Uuid::new_v4().to_string(),
                         upload_path: PATH.into(),
    -                    json_body: "".into(),
    +                    json_body: "".into(),
                         headers: None,
                         body_has_info_sections: true,
    -                    ping_name: "ping-name".into(),
    +                    ping_name: "ping-name".into(),
                     },
                 );
             }
    @@ -2904,10 +2905,10 @@
                 PingPayload {
                     document_id: Uuid::new_v4().to_string(),
                     upload_path: PATH.into(),
    -                json_body: "".into(),
    +                json_body: "".into(),
                     headers: None,
                     body_has_info_sections: true,
    -                ping_name: "ping-name".into(),
    +                ping_name: "ping-name".into(),
                 },
             );
     
    @@ -2917,7 +2918,7 @@
                     // Wait for the uploading window to reset
                     thread::sleep(Duration::from_millis(time));
                 }
    -            _ => panic!("Expected upload manager to return a wait task!"),
    +            _ => panic!("Expected upload manager to return a wait task!"),
             };
     
             let task = upload_manager.get_upload_task(&glean, false);
    @@ -2937,10 +2938,10 @@
                     PingPayload {
                         document_id: Uuid::new_v4().to_string(),
                         upload_path: PATH.into(),
    -                    json_body: "".into(),
    +                    json_body: "".into(),
                         headers: None,
                         body_has_info_sections: true,
    -                    ping_name: "ping-name".into(),
    +                    ping_name: "ping-name".into(),
                     },
                 );
             }
    @@ -2948,7 +2949,7 @@
             // Clear the queue
             drop(upload_manager.clear_ping_queue());
     
    -        // Verify there really isn't any ping in the queue
    +        // Verify there really isn't any ping in the queue
             assert_eq!(
                 upload_manager.get_upload_task(&glean, false),
                 PingUploadTask::done()
    @@ -2961,7 +2962,7 @@
     
             // Register a ping for testing
             let ping_type = PingType::new(
    -            "test",
    +            "test",
                 true,
                 /* send_if_empty */ true,
                 true,
    @@ -2989,10 +2990,10 @@
             let upload_task = glean.get_upload_task();
             match upload_task {
                 PingUploadTask::Upload { request } => assert!(request.is_deletion_request()),
    -            _ => panic!("Expected upload manager to return the next request!"),
    +            _ => panic!("Expected upload manager to return the next request!"),
             }
     
    -        // Verify there really isn't any other pings in the queue
    +        // Verify there really isn't any other pings in the queue
             assert_eq!(glean.get_upload_task(), PingUploadTask::done());
         }
     
    @@ -3002,7 +3003,7 @@
     
             // Register a ping for testing
             let ping_type = PingType::new(
    -            "test",
    +            "test",
                 true,
                 /* send_if_empty */ true,
                 true,
    @@ -3041,7 +3042,7 @@
     
             // Register a ping for testing
             let ping_type = PingType::new(
    -            "test",
    +            "test",
                 true,
                 /* send_if_empty */ true,
                 true,
    @@ -3067,7 +3068,7 @@
                     // Verify file was deleted
                     assert!(!pending_pings_dir.join(document_id).exists());
                 }
    -            _ => panic!("Expected upload manager to return the next request!"),
    +            _ => panic!("Expected upload manager to return the next request!"),
             }
     
             // Verify that after request is returned, none are left
    @@ -3080,7 +3081,7 @@
     
             // Register a ping for testing
             let ping_type = PingType::new(
    -            "test",
    +            "test",
                 true,
                 /* send_if_empty */ true,
                 true,
    @@ -3106,7 +3107,7 @@
                     // Verify file was deleted
                     assert!(!pending_pings_dir.join(document_id).exists());
                 }
    -            _ => panic!("Expected upload manager to return the next request!"),
    +            _ => panic!("Expected upload manager to return the next request!"),
             }
     
             // Verify that after request is returned, none are left
    @@ -3119,7 +3120,7 @@
     
             // Register a ping for testing
             let ping_type = PingType::new(
    -            "test",
    +            "test",
                 true,
                 /* send_if_empty */ true,
                 true,
    @@ -3144,10 +3145,10 @@
                         PingUploadTask::Upload { request } => {
                             assert_eq!(document_id, request.document_id);
                         }
    -                    _ => panic!("Expected upload manager to return the next request!"),
    +                    _ => panic!("Expected upload manager to return the next request!"),
                     }
                 }
    -            _ => panic!("Expected upload manager to return the next request!"),
    +            _ => panic!("Expected upload manager to return the next request!"),
             }
     
             // Verify that after request is returned, none are left
    @@ -3160,7 +3161,7 @@
     
             // Register a ping for testing
             let ping_type = PingType::new(
    -            "test",
    +            "test",
                 true,
                 /* send_if_empty */ true,
                 true,
    @@ -3189,7 +3190,7 @@
                     // Verify file was deleted
                     assert!(!pending_pings_dir.join(document_id).exists());
                 }
    -            _ => panic!("Expected upload manager to return the next request!"),
    +            _ => panic!("Expected upload manager to return the next request!"),
             }
     
             // Verify that after request is returned, none are left
    @@ -3203,10 +3204,10 @@
             let upload_manager = PingUploadManager::no_policy(dir.path());
     
             let doc1 = Uuid::new_v4().to_string();
    -        let path1 = format!("/submit/app_id/test-ping/1/{}", doc1);
    +        let path1 = format!("/submit/app_id/test-ping/1/{}", doc1);
     
             let doc2 = Uuid::new_v4().to_string();
    -        let path2 = format!("/submit/app_id/test-ping/1/{}", doc2);
    +        let path2 = format!("/submit/app_id/test-ping/1/{}", doc2);
     
             // Enqueue a ping
             upload_manager.enqueue_ping(
    @@ -3214,30 +3215,30 @@
                 PingPayload {
                     document_id: doc1.clone(),
                     upload_path: path1,
    -                json_body: "".into(),
    +                json_body: "".into(),
                     headers: None,
                     body_has_info_sections: true,
    -                ping_name: "test-ping".into(),
    +                ping_name: "test-ping".into(),
                 },
             );
     
             // Try and get the first request.
             let req = match upload_manager.get_upload_task(&glean, false) {
                 PingUploadTask::Upload { request } => request,
    -            _ => panic!("Expected upload manager to return the next request!"),
    +            _ => panic!("Expected upload manager to return the next request!"),
             };
             assert_eq!(doc1, req.document_id);
     
    -        // Schedule the next one while the first one is "in progress"
    +        // Schedule the next one while the first one is "in progress"
             upload_manager.enqueue_ping(
                 &glean,
                 PingPayload {
                     document_id: doc2.clone(),
                     upload_path: path2,
    -                json_body: "".into(),
    +                json_body: "".into(),
                     headers: None,
                     body_has_info_sections: true,
    -                ping_name: "test-ping".into(),
    +                ping_name: "test-ping".into(),
                 },
             );
     
    @@ -3251,7 +3252,7 @@
             // Get the second request.
             let req = match upload_manager.get_upload_task(&glean, false) {
                 PingUploadTask::Upload { request } => request,
    -            _ => panic!("Expected upload manager to return the next request!"),
    +            _ => panic!("Expected upload manager to return the next request!"),
             };
             assert_eq!(doc2, req.document_id);
     
    @@ -3262,7 +3263,7 @@
                 UploadResult::http_status(200),
             );
     
    -        // ... and then we're done.
    +        // ... and then we're done.
             assert_eq!(
                 upload_manager.get_upload_task(&glean, false),
                 PingUploadTask::done()
    @@ -3273,11 +3274,11 @@
         fn adds_debug_view_header_to_requests_when_tag_is_set() {
             let (mut glean, _t) = new_glean(None);
     
    -        glean.set_debug_view_tag("valid-tag");
    +        glean.set_debug_view_tag("valid-tag");
     
             // Register a ping for testing
             let ping_type = PingType::new(
    -            "test",
    +            "test",
                 true,
                 /* send_if_empty */ true,
                 true,
    @@ -3294,9 +3295,9 @@
             // Get the submitted PingRequest
             match glean.get_upload_task() {
                 PingUploadTask::Upload { request } => {
    -                assert_eq!(request.headers.get("X-Debug-ID").unwrap(), "valid-tag")
    +                assert_eq!(request.headers.get("X-Debug-ID").unwrap(), "valid-tag")
                 }
    -            _ => panic!("Expected upload manager to return the next request!"),
    +            _ => panic!("Expected upload manager to return the next request!"),
             }
         }
     
    @@ -3305,11 +3306,11 @@
             let (glean, dir) = new_glean(None);
     
             // Create a new upload manager so that we have access to its functions directly,
    -        // make it synchronous so we don't have to manually wait for the scanning to finish.
    +        // make it synchronous so we don't have to manually wait for the scanning to finish.
             let upload_manager = PingUploadManager::no_policy(dir.path());
     
             let doc_id = Uuid::new_v4().to_string();
    -        let path = format!("/submit/app_id/test-ping/1/{}", doc_id);
    +        let path = format!("/submit/app_id/test-ping/1/{}", doc_id);
     
             // Try to enqueue a ping with the same doc_id twice
             upload_manager.enqueue_ping(
    @@ -3317,10 +3318,10 @@
                 PingPayload {
                     document_id: doc_id.clone(),
                     upload_path: path.clone(),
    -                json_body: "".into(),
    +                json_body: "".into(),
                     headers: None,
                     body_has_info_sections: true,
    -                ping_name: "test-ping".into(),
    +                ping_name: "test-ping".into(),
                 },
             );
             upload_manager.enqueue_ping(
    @@ -3328,10 +3329,10 @@
                 PingPayload {
                     document_id: doc_id,
                     upload_path: path,
    -                json_body: "".into(),
    +                json_body: "".into(),
                     headers: None,
                     body_has_info_sections: true,
    -                ping_name: "test-ping".into(),
    +                ping_name: "test-ping".into(),
                 },
             );
     
    @@ -3352,7 +3353,7 @@
     
             // Register a ping for testing
             let ping_type = PingType::new(
    -            "test",
    +            "test",
                 true,
                 /* send_if_empty */ true,
                 true,
    @@ -3387,12 +3388,12 @@
                             UploadResult::recoverable_failure(),
                         );
                     }
    -                _ => panic!("Expected upload manager to return the next request!"),
    +                _ => panic!("Expected upload manager to return the next request!"),
                 }
             }
     
             // Verify that after returning the max amount of recoverable failures,
    -        // we are done even though we haven't gotten all the enqueued requests.
    +        // we are done even though we haven't gotten all the enqueued requests.
             assert_eq!(
                 upload_manager.get_upload_task(&glean, false),
                 PingUploadTask::done()
    @@ -3411,7 +3412,7 @@
     
             // Register a ping for testing
             let ping_type = PingType::new(
    -            "test",
    +            "test",
                 true,
                 /* send_if_empty */ true,
                 true,
    @@ -3446,7 +3447,7 @@
             //
             // From manual testing I figured out an empty ping file is 324bytes,
             // I am setting this a little over just so that minor changes to the ping structure
    -        // don't immediatelly break this.
    +        // don't immediatelly break this.
             upload_manager
                 .policy
                 .set_max_pending_pings_directory_size(Some(500));
    @@ -3456,7 +3457,7 @@
             // Make sure it is the newest ping.
             match upload_manager.get_upload_task(&glean, false) {
                 PingUploadTask::Upload { request } => assert_eq!(&request.document_id, newest_ping_id),
    -            _ => panic!("Expected upload manager to return the next request!"),
    +            _ => panic!("Expected upload manager to return the next request!"),
             }
     
             // Verify that no other requests were returned,
    @@ -3472,7 +3473,7 @@
                 upload_manager
                     .upload_metrics
                     .deleted_pings_after_quota_hit
    -                .get_value(&glean, Some("metrics"))
    +                .get_value(&glean, Some("metrics"))
                     .unwrap()
             );
             assert_eq!(
    @@ -3480,7 +3481,7 @@
                 upload_manager
                     .upload_metrics
                     .pending_pings
    -                .get_value(&glean, Some("metrics"))
    +                .get_value(&glean, Some("metrics"))
                     .unwrap()
             );
         }
    @@ -3491,7 +3492,7 @@
     
             // Register a ping for testing
             let ping_type = PingType::new(
    -            "test",
    +            "test",
                 true,
                 /* send_if_empty */ true,
                 true,
    @@ -3536,7 +3537,7 @@
             for ping_id in expected_pings.iter().rev() {
                 match upload_manager.get_upload_task(&glean, false) {
                     PingUploadTask::Upload { request } => assert_eq!(&request.document_id, ping_id),
    -                _ => panic!("Expected upload manager to return the next request!"),
    +                _ => panic!("Expected upload manager to return the next request!"),
                 }
             }
     
    @@ -3553,7 +3554,7 @@
                 upload_manager
                     .upload_metrics
                     .deleted_pings_after_quota_hit
    -                .get_value(&glean, Some("metrics"))
    +                .get_value(&glean, Some("metrics"))
                     .unwrap()
             );
             assert_eq!(
    @@ -3561,7 +3562,7 @@
                 upload_manager
                     .upload_metrics
                     .pending_pings
    -                .get_value(&glean, Some("metrics"))
    +                .get_value(&glean, Some("metrics"))
                     .unwrap()
             );
         }
    @@ -3572,7 +3573,7 @@
     
             // Register a ping for testing
             let ping_type = PingType::new(
    -            "test",
    +            "test",
                 true,
                 /* send_if_empty */ true,
                 true,
    @@ -3619,7 +3620,7 @@
             for ping_id in expected_pings.iter().rev() {
                 match upload_manager.get_upload_task(&glean, false) {
                     PingUploadTask::Upload { request } => assert_eq!(&request.document_id, ping_id),
    -                _ => panic!("Expected upload manager to return the next request!"),
    +                _ => panic!("Expected upload manager to return the next request!"),
                 }
             }
     
    @@ -3636,7 +3637,7 @@
                 upload_manager
                     .upload_metrics
                     .deleted_pings_after_quota_hit
    -                .get_value(&glean, Some("metrics"))
    +                .get_value(&glean, Some("metrics"))
                     .unwrap()
             );
             assert_eq!(
    @@ -3644,7 +3645,7 @@
                 upload_manager
                     .upload_metrics
                     .pending_pings
    -                .get_value(&glean, Some("metrics"))
    +                .get_value(&glean, Some("metrics"))
                     .unwrap()
             );
         }
    @@ -3655,7 +3656,7 @@
     
             // Register a ping for testing
             let ping_type = PingType::new(
    -            "test",
    +            "test",
                 true,
                 /* send_if_empty */ true,
                 true,
    @@ -3702,7 +3703,7 @@
             for ping_id in expected_pings.iter().rev() {
                 match upload_manager.get_upload_task(&glean, false) {
                     PingUploadTask::Upload { request } => assert_eq!(&request.document_id, ping_id),
    -                _ => panic!("Expected upload manager to return the next request!"),
    +                _ => panic!("Expected upload manager to return the next request!"),
                 }
             }
     
    @@ -3719,7 +3720,7 @@
                 upload_manager
                     .upload_metrics
                     .deleted_pings_after_quota_hit
    -                .get_value(&glean, Some("metrics"))
    +                .get_value(&glean, Some("metrics"))
                     .unwrap()
             );
             assert_eq!(
    @@ -3727,7 +3728,7 @@
                 upload_manager
                     .upload_metrics
                     .pending_pings
    -                .get_value(&glean, Some("metrics"))
    +                .get_value(&glean, Some("metrics"))
                     .unwrap()
             );
         }
    @@ -3747,7 +3748,7 @@
             // Add a rate limiter to the upload mangager with max of 1 ping 5secs.
             //
             // We arbitrarily set the maximum pings per interval to a very low number,
    -        // when the rate limiter reaches it's limit get_upload_task returns a PingUploadTask::Wait,
    +        // when the rate limiter reaches it's limit get_upload_task returns a PingUploadTask::Wait,
             // which will allow us to test the limitations around returning too many of those in a row.
             let secs_per_interval = 5;
             let max_pings_per_interval = 1;
    @@ -3759,10 +3760,10 @@
                 PingPayload {
                     document_id: Uuid::new_v4().to_string(),
                     upload_path: PATH.into(),
    -                json_body: "".into(),
    +                json_body: "".into(),
                     headers: None,
                     body_has_info_sections: true,
    -                ping_name: "ping-name".into(),
    +                ping_name: "ping-name".into(),
                 },
             );
             upload_manager.enqueue_ping(
    @@ -3770,17 +3771,17 @@
                 PingPayload {
                     document_id: Uuid::new_v4().to_string(),
                     upload_path: PATH.into(),
    -                json_body: "".into(),
    +                json_body: "".into(),
                     headers: None,
                     body_has_info_sections: true,
    -                ping_name: "ping-name".into(),
    +                ping_name: "ping-name".into(),
                 },
             );
     
             // Get the first ping, it should be returned normally.
             match upload_manager.get_upload_task(&glean, false) {
                 PingUploadTask::Upload { .. } => {}
    -            _ => panic!("Expected upload manager to return the next request!"),
    +            _ => panic!("Expected upload manager to return the next request!"),
             }
     
             // Try to get the next ping,
    @@ -3805,7 +3806,7 @@
             let task = upload_manager.get_upload_task(&glean, false);
             assert!(task.is_upload());
     
    -        // And once we are done we don't need to wait anymore.
    +        // And once we are done we don't need to wait anymore.
             assert_eq!(
                 upload_manager.get_upload_task(&glean, false),
                 PingUploadTask::done()
    @@ -3815,12 +3816,12 @@
         #[test]
         fn wait_task_contains_expected_wait_time_when_pending_pings_dir_not_processed_yet() {
             let (glean, dir) = new_glean(None);
    -        let upload_manager = PingUploadManager::new(dir.path(), "test");
    +        let upload_manager = PingUploadManager::new(dir.path(), "test");
             match upload_manager.get_upload_task(&glean, false) {
                 PingUploadTask::Wait { time } => {
                     assert_eq!(time, WAIT_TIME_FOR_PING_PROCESSING);
                 }
    -            _ => panic!("Expected upload manager to return a wait task!"),
    +            _ => panic!("Expected upload manager to return a wait task!"),
             };
         }
     
    @@ -3835,10 +3836,10 @@
             let ping = PingPayload {
                 document_id: identifier.to_string(),
                 upload_path: PATH.into(),
    -            json_body: "".into(),
    +            json_body: "".into(),
                 headers: None,
                 body_has_info_sections: true,
    -            ping_name: "ping-name".into(),
    +            ping_name: "ping-name".into(),
             };
             upload_manager.enqueue_ping(&glean, ping);
             assert!(upload_manager.get_upload_task(&glean, false).is_upload());
    @@ -3847,10 +3848,10 @@
             let ping = PingPayload {
                 document_id: identifier.to_string(),
                 upload_path: PATH.into(),
    -            json_body: "".into(),
    +            json_body: "".into(),
                 headers: None,
                 body_has_info_sections: true,
    -            ping_name: "ping-name".into(),
    +            ping_name: "ping-name".into(),
             };
             upload_manager.enqueue_ping(&glean, ping);
     
    @@ -3868,5 +3869,4 @@
             );
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/upload/policy.rs.html b/docs/src/glean_core/upload/policy.rs.html index 9e0562abab..3ebf6288c6 100644 --- a/docs/src/glean_core/upload/policy.rs.html +++ b/docs/src/glean_core/upload/policy.rs.html @@ -1,4 +1,5 @@ -policy.rs - source
    1
    +policy.rs - source
    +    
    1
     2
     3
     4
    @@ -110,7 +111,7 @@
     110
     111
     112
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -124,7 +125,7 @@
     // The average number of baseline pings per client (on Fenix) is at 15 pings a day.
     // The P99 value is ~110.
     // With a maximum of (a nice round) 250 we can store about 2 days worth of pings.
    -// A baseline ping file averages about 600 bytes, so that's a total of just 144 kB we store.
    +// A baseline ping file averages about 600 bytes, so that's a total of just 144 kB we store.
     // With the default rate limit of 15 pings per 60s it would take roughly 16 minutes to send out all pending
     // pings.
     const MAX_PENDING_PINGS_COUNT: u64 = 250;
    @@ -222,5 +223,4 @@
             self.max_pending_pings_count = v;
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/upload/request.rs.html b/docs/src/glean_core/upload/request.rs.html index 2e063f77b9..2541170096 100644 --- a/docs/src/glean_core/upload/request.rs.html +++ b/docs/src/glean_core/upload/request.rs.html @@ -1,4 +1,5 @@ -request.rs - source
    1
    +request.rs - source
    +    
    1
     2
     3
     4
    @@ -312,7 +313,7 @@
     312
     313
     314
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -339,11 +340,11 @@
         //
         // as documented here:
         // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Date
    -    // Unfortunately we can't use `current_time.to_rfc2822()` as it
    -    // formats as "Mon, 22 Jun 2020 10:40:34 +0000", with an ending
    -    // "+0000" instead of "GMT". That's why we need to go with manual
    +    // Unfortunately we can't use `current_time.to_rfc2822()` as it
    +    // formats as "Mon, 22 Jun 2020 10:40:34 +0000", with an ending
    +    // "+0000" instead of "GMT". That's why we need to go with manual
         // formatting.
    -    current_time.format("%a, %d %b %Y %T GMT").to_string()
    +    current_time.format("%a, %d %b %Y %T GMT").to_string()
     }
     
     fn create_x_telemetry_agent_header_value(
    @@ -352,7 +353,7 @@
         system: &str,
     ) -> String {
         format!(
    -        "Glean/{} ({} on {})",
    +        "Glean/{} ({} on {})",
             version, language_binding_name, system
         )
     }
    @@ -363,7 +364,7 @@
     
         // Attempt to add the content to the gzipper.
         if let Err(e) = gzipper.write_all(content) {
    -        log::warn!("Failed to write to the gzipper: {} - {:?}", path, e);
    +        log::warn!("Failed to write to the gzipper: {} - {:?}", path, e);
             return None;
         }
     
    @@ -385,7 +386,7 @@
         pub fn new(language_binding_name: &str, body_max_size: usize) -> Self {
             let mut headers = HashMap::new();
             headers.insert(
    -            "X-Telemetry-Agent".to_string(),
    +            "X-Telemetry-Agent".to_string(),
                 create_x_telemetry_agent_header_value(
                     crate::GLEAN_VERSION,
                     language_binding_name,
    @@ -393,8 +394,8 @@
                 ),
             );
             headers.insert(
    -            "Content-Type".to_string(),
    -            "application/json; charset=utf-8".to_string(),
    +            "Content-Type".to_string(),
    +            "application/json; charset=utf-8".to_string(),
             );
     
             Self {
    @@ -425,11 +426,11 @@
         /// This method will also attempt to gzip the body contents
         /// and add headers related to the body that was just added.
         ///
    -    /// Namely these headers are the "Content-Length" with the length of the body
    -    /// and in case we are successfull on gzipping the contents, the "Content-Encoding"="gzip".
    +    /// Namely these headers are the "Content-Length" with the length of the body
    +    /// and in case we are successfull on gzipping the contents, the "Content-Encoding"="gzip".
         ///
         /// **Important**
    -    /// If we are unable to gzip we don't panic and instead just set the uncompressed body.
    +    /// If we are unable to gzip we don't panic and instead just set the uncompressed body.
         ///
         /// # Panics
         ///
    @@ -440,16 +441,16 @@
             let gzipped_content = gzip_content(
                 self.path
                     .as_ref()
    -                .expect("Path must be set before attempting to set the body"),
    +                .expect("Path must be set before attempting to set the body"),
                 original_as_string.as_bytes(),
             );
             let add_gzip_header = gzipped_content.is_some();
             let body = gzipped_content.unwrap_or_else(|| original_as_string.into_bytes());
     
             // Include headers related to body
    -        self = self.header("Content-Length", &body.len().to_string());
    +        self = self.header("Content-Length", &body.len().to_string());
             if add_gzip_header {
    -            self = self.header("Content-Encoding", "gzip");
    +            self = self.header("Content-Encoding", "gzip");
             }
     
             self.body = Some(body);
    @@ -462,7 +463,7 @@
             self
         }
     
    -    /// Sets the ping's name aka doctype.
    +    /// Sets the ping's name aka doctype.
         pub fn ping_name<S: Into<String>>(mut self, ping_name: S) -> Self {
             self.ping_name = Some(ping_name.into());
             self
    @@ -489,7 +490,7 @@
         pub fn build(self) -> Result<PingRequest> {
             let body = self
                 .body
    -            .expect("body must be set before attempting to build PingRequest");
    +            .expect("body must be set before attempting to build PingRequest");
     
             if body.len() > self.body_max_size {
                 return Err(ErrorKind::PingBodyOverflow(body.len()).into());
    @@ -498,18 +499,18 @@
             Ok(PingRequest {
                 document_id: self
                     .document_id
    -                .expect("document_id must be set before attempting to build PingRequest"),
    +                .expect("document_id must be set before attempting to build PingRequest"),
                 path: self
                     .path
    -                .expect("path must be set before attempting to build PingRequest"),
    +                .expect("path must be set before attempting to build PingRequest"),
                 body,
                 headers: self.headers,
                 body_has_info_sections: self.body_has_info_sections.expect(
    -                "body_has_info_sections must be set before attempting to build PingRequest",
    +                "body_has_info_sections must be set before attempting to build PingRequest",
                 ),
                 ping_name: self
                     .ping_name
    -                .expect("ping_name must be set before attempting to build PingRequest"),
    +                .expect("ping_name must be set before attempting to build PingRequest"),
             })
         }
     }
    @@ -530,7 +531,7 @@
         pub headers: HeaderMap,
         /// Whether the body has {client|ping}_info sections.
         pub body_has_info_sections: bool,
    -    /// The ping's name. Likely also somewhere in `path`.
    +    /// The ping's name. Likely also somewhere in `path`.
         pub ping_name: String,
     }
     
    @@ -548,7 +549,7 @@
     
         /// Verifies if current request is for a deletion-request ping.
         pub fn is_deletion_request(&self) -> bool {
    -        self.ping_name == "deletion-request"
    +        self.ping_name == "deletion-request"
         }
     
         /// Decompresses and pretty-format the ping payload
    @@ -577,35 +578,35 @@
         fn date_header_resolution() {
             let date: DateTime<Utc> = Utc.ymd(2018, 2, 25).and_hms(11, 10, 37);
             let test_value = create_date_header_value(date);
    -        assert_eq!("Sun, 25 Feb 2018 11:10:37 GMT", test_value);
    +        assert_eq!("Sun, 25 Feb 2018 11:10:37 GMT", test_value);
         }
     
         #[test]
         fn x_telemetry_agent_header_resolution() {
    -        let test_value = create_x_telemetry_agent_header_value("0.0.0", "Rust", "Windows");
    -        assert_eq!("Glean/0.0.0 (Rust on Windows)", test_value);
    +        let test_value = create_x_telemetry_agent_header_value("0.0.0", "Rust", "Windows");
    +        assert_eq!("Glean/0.0.0 (Rust on Windows)", test_value);
         }
     
         #[test]
         fn correctly_builds_ping_request() {
    -        let request = PingRequest::builder(/* language_binding_name */ "Rust", 1024 * 1024)
    -            .document_id("woop")
    -            .path("/random/path/doesnt/matter")
    -            .body("{}")
    +        let request = PingRequest::builder(/* language_binding_name */ "Rust", 1024 * 1024)
    +            .document_id("woop")
    +            .path("/random/path/doesnt/matter")
    +            .body("{}")
                 .body_has_info_sections(false)
    -            .ping_name("whatevs")
    +            .ping_name("whatevs")
                 .build()
                 .unwrap();
     
    -        assert_eq!(request.document_id, "woop");
    -        assert_eq!(request.path, "/random/path/doesnt/matter");
    +        assert_eq!(request.document_id, "woop");
    +        assert_eq!(request.path, "/random/path/doesnt/matter");
             assert!(!request.body_has_info_sections);
    -        assert_eq!(request.ping_name, "whatevs");
    +        assert_eq!(request.ping_name, "whatevs");
     
             // Make sure all the expected headers were added.
    -        assert!(request.headers.contains_key("X-Telemetry-Agent"));
    -        assert!(request.headers.contains_key("Content-Type"));
    -        assert!(request.headers.contains_key("Content-Length"));
    +        assert!(request.headers.contains_key("X-Telemetry-Agent"));
    +        assert!(request.headers.contains_key("Content-Type"));
    +        assert!(request.headers.contains_key("Content-Length"));
     
             // the `Date` header is added by the `get_upload_task` just before
             // returning the upload request
    @@ -616,15 +617,14 @@
             // Create a new builder with an arbitrarily small value,
             // se we can test that the builder errors when body max size exceeds the expected.
             let request = Builder::new(
    -            /* language_binding_name */ "Rust", /* body_max_size */ 1,
    +            /* language_binding_name */ "Rust", /* body_max_size */ 1,
             )
    -        .document_id("woop")
    -        .path("/random/path/doesnt/matter")
    -        .body("{}")
    +        .document_id("woop")
    +        .path("/random/path/doesnt/matter")
    +        .body("{}")
             .build();
     
             assert!(request.is_err());
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/upload/result.rs.html b/docs/src/glean_core/upload/result.rs.html index c93864f8e9..7cdbc57f7d 100644 --- a/docs/src/glean_core/upload/result.rs.html +++ b/docs/src/glean_core/upload/result.rs.html @@ -1,4 +1,5 @@ -result.rs - source
    1
    +result.rs - source
    +    
    1
     2
     3
     4
    @@ -96,7 +97,7 @@
     96
     97
     98
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -110,7 +111,7 @@
         /// The upload should be retried at a later time.
         RecoverableFailure {
             #[doc(hidden)]
    -        /// Unused field. Required because UniFFI can't handle variants without fields.
    +        /// Unused field. Required because UniFFI can't handle variants without fields.
             unused: i8,
         },
     
    @@ -119,7 +120,7 @@
         /// A possible cause might be a malformed URL.
         UnrecoverableFailure {
             #[doc(hidden)]
    -        /// Unused field. Required because UniFFI can't handle variants without fields.
    +        /// Unused field. Required because UniFFI can't handle variants without fields.
             unused: i8,
         },
     
    @@ -132,10 +133,10 @@
         },
     
         /// Signal that this uploader is done with work
    -    /// and won't accept new work.
    +    /// and won't accept new work.
         Done {
             #[doc(hidden)]
    -        /// Unused field. Required because UniFFI can't handle variants without fields.
    +        /// Unused field. Required because UniFFI can't handle variants without fields.
             unused: i8,
         },
     }
    @@ -148,11 +149,11 @@
         pub fn get_label(&self) -> Option<&str> {
             match self {
                 UploadResult::HttpStatus { code: 200..=299 } => None,
    -            UploadResult::HttpStatus { code: 400..=499 } => Some("status_code_4xx"),
    -            UploadResult::HttpStatus { code: 500..=599 } => Some("status_code_5xx"),
    -            UploadResult::HttpStatus { .. } => Some("status_code_unknown"),
    -            UploadResult::UnrecoverableFailure { .. } => Some("unrecoverable"),
    -            UploadResult::RecoverableFailure { .. } => Some("recoverable"),
    +            UploadResult::HttpStatus { code: 400..=499 } => Some("status_code_4xx"),
    +            UploadResult::HttpStatus { code: 500..=599 } => Some("status_code_5xx"),
    +            UploadResult::HttpStatus { .. } => Some("status_code_unknown"),
    +            UploadResult::UnrecoverableFailure { .. } => Some("unrecoverable"),
    +            UploadResult::RecoverableFailure { .. } => Some("recoverable"),
                 UploadResult::Done { .. } => None,
             }
         }
    @@ -194,5 +195,4 @@
         /// Instruct the caller to end work.
         End,
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/glean_core/util.rs.html b/docs/src/glean_core/util.rs.html index db7b7a6077..c543c70bd3 100644 --- a/docs/src/glean_core/util.rs.html +++ b/docs/src/glean_core/util.rs.html @@ -1,4 +1,5 @@ -util.rs - source
    1
    +util.rs - source
    +    
    1
     2
     3
     4
    @@ -310,7 +311,7 @@
     310
     311
     312
    -
    // This Source Code Form is subject to the terms of the Mozilla Public
    +
    // This Source Code Form is subject to the terms of the Mozilla Public
     // License, v. 2.0. If a copy of the MPL was not distributed with this
     // file, You can obtain one at https://mozilla.org/MPL/2.0/.
     
    @@ -328,12 +329,12 @@
         application_id
             .chars()
             .filter_map(|x| match x {
    -            'A'..='Z' | 'a'..='z' | '0'..='9' => {
    +            'A'..='Z' | 'a'..='z' | '0'..='9' => {
                     last_dash = false;
                     Some(x.to_ascii_lowercase())
                 }
                 _ => {
    -                let result = if last_dash { None } else { Some('-') };
    +                let result = if last_dash { None } else { Some('-') };
                     last_dash = true;
                     result
                 }
    @@ -361,20 +362,20 @@
     /// This converts from the `Local` timezone into its fixed-offset equivalent.
     /// If a timezone outside of [-24h, +24h] is detected it corrects the timezone offset to UTC (+0).
     pub(crate) fn local_now_with_offset() -> DateTime<FixedOffset> {
    -    #[cfg(target_os = "windows")]
    +    #[cfg(target_os = "windows")]
         {
    -        // `Local::now` takes the user's timezone offset
    -        // and panics if it's not within a range of [-24, +24] hours.
    +        // `Local::now` takes the user's timezone offset
    +        // and panics if it's not within a range of [-24, +24] hours.
             // This causes crashes in a small number of clients on Windows.
             //
    -        // We can't determine the faulty clients
    +        // We can't determine the faulty clients
             // or the circumstancens under which this happens,
             // so the best we can do is have a workaround:
             //
             // We try getting the time and timezone first,
             // then manually check that it is a valid timezone offset.
             // If it is, we proceed and use that time and offset.
    -        // If it isn't we fallback to UTC.
    +        // If it isn't we fallback to UTC.
             //
             // This has the small downside that it will use 2 calls to get the time,
             // but only on Windows.
    @@ -383,14 +384,14 @@
     
             use chrono::Utc;
     
    -        // Get timespec, including the user's timezone.
    +        // Get timespec, including the user's timezone.
             let tm = time::now();
             // Same as chrono:
             // https://docs.rs/chrono/0.4.10/src/chrono/offset/local.rs.html#37
             let offset = tm.tm_utcoff;
             if let None = FixedOffset::east_opt(offset) {
                 log::warn!(
    -                "Detected invalid timezone offset: {}. Using UTC fallback.",
    +                "Detected invalid timezone offset: {}. Using UTC fallback.",
                     offset
                 );
                 let now: DateTime<Utc> = Utc::now();
    @@ -403,7 +404,7 @@
         now.with_timezone(now.offset())
     }
     
    -/// Truncates a string, ensuring that it doesn't end in the middle of a codepoint.
    +/// Truncates a string, ensuring that it doesn't end in the middle of a codepoint.
     ///
     /// # Arguments
     ///
    @@ -425,12 +426,12 @@
             }
             // If we never saw a character boundary, the safest thing we can do is
             // return the empty string, though this should never happen in practice.
    -        return "".to_string();
    +        return "".to_string();
         }
         s
     }
     
    -/// Truncates a string, ensuring that it doesn't end in the middle of a codepoint.
    +/// Truncates a string, ensuring that it doesn't end in the middle of a codepoint.
     /// If the string required truncation, records an error through the error
     /// reporting mechanism.
     ///
    @@ -454,7 +455,7 @@
     ) -> String {
         let s = value.into();
         if s.len() > length {
    -        let msg = format!("Value length {} exceeds maximum of {}", s.len(), length);
    +        let msg = format!("Value length {} exceeds maximum of {}", s.len(), length);
             record_error(glean, meta, ErrorType::InvalidOverflow, msg, None);
             truncate_string_at_boundary(s, length)
         } else {
    @@ -470,17 +471,17 @@
     // to match our other targets and platforms.
     //
     // See https://bugzilla.mozilla.org/show_bug.cgi?id=1623335 for additional context.
    -#[cfg(all(target_os = "windows", target_env = "gnu"))]
    +#[cfg(all(target_os = "windows", target_env = "gnu"))]
     pub mod floating_point_context {
    -    // `size_t` is "pointer size", which is equivalent to Rust's `usize`.
    -    // It's defined as such in libc:
    +    // `size_t` is "pointer size", which is equivalent to Rust's `usize`.
    +    // It's defined as such in libc:
         // * https://github.com/rust-lang/libc/blob/bcbfeb5516cd5bb055198dbfbddf8d626fa2be07/src/unix/mod.rs#L19
         // * https://github.com/rust-lang/libc/blob/bcbfeb5516cd5bb055198dbfbddf8d626fa2be07/src/windows/mod.rs#L16
         #[allow(non_camel_case_types)]
         type size_t = usize;
     
    -    #[link(name = "m")]
    -    extern "C" {
    +    #[link(name = "m")]
    +    extern "C" {
             // Gets and sets the floating point control word.
             // See documentation here:
             // https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/controlfp-s
    @@ -519,7 +520,7 @@
         }
     }
     
    -#[cfg(not(all(target_os = "windows", target_env = "gnu")))]
    +#[cfg(not(all(target_os = "windows", target_env = "gnu")))]
     pub mod floating_point_context {
         pub struct FloatingPointContext {}
     
    @@ -538,20 +539,20 @@
         #[test]
         fn test_sanitize_application_id() {
             assert_eq!(
    -            "org-mozilla-test-app",
    -            sanitize_application_id("org.mozilla.test-app")
    +            "org-mozilla-test-app",
    +            sanitize_application_id("org.mozilla.test-app")
             );
             assert_eq!(
    -            "org-mozilla-test-app",
    -            sanitize_application_id("org.mozilla..test---app")
    +            "org-mozilla-test-app",
    +            sanitize_application_id("org.mozilla..test---app")
             );
             assert_eq!(
    -            "org-mozilla-test-app",
    -            sanitize_application_id("org-mozilla-test-app")
    +            "org-mozilla-test-app",
    +            sanitize_application_id("org-mozilla-test-app")
             );
             assert_eq!(
    -            "org-mozilla-test-app",
    -            sanitize_application_id("org.mozilla.Test.App")
    +            "org-mozilla-test-app",
    +            sanitize_application_id("org.mozilla.Test.App")
             );
         }
     
    @@ -562,30 +563,30 @@
                 .ymd(1985, 7, 3)
                 .and_hms_nano(12, 9, 14, 1_560_274);
             assert_eq!(
    -            "1985-07-03T12:09:14.001560274+01:00",
    +            "1985-07-03T12:09:14.001560274+01:00",
                 get_iso_time_string(dt, TimeUnit::Nanosecond)
             );
             assert_eq!(
    -            "1985-07-03T12:09:14.001560+01:00",
    +            "1985-07-03T12:09:14.001560+01:00",
                 get_iso_time_string(dt, TimeUnit::Microsecond)
             );
             assert_eq!(
    -            "1985-07-03T12:09:14.001+01:00",
    +            "1985-07-03T12:09:14.001+01:00",
                 get_iso_time_string(dt, TimeUnit::Millisecond)
             );
             assert_eq!(
    -            "1985-07-03T12:09:14+01:00",
    +            "1985-07-03T12:09:14+01:00",
                 get_iso_time_string(dt, TimeUnit::Second)
             );
             assert_eq!(
    -            "1985-07-03T12:09+01:00",
    +            "1985-07-03T12:09+01:00",
                 get_iso_time_string(dt, TimeUnit::Minute)
             );
             assert_eq!(
    -            "1985-07-03T12+01:00",
    +            "1985-07-03T12+01:00",
                 get_iso_time_string(dt, TimeUnit::Hour)
             );
    -        assert_eq!("1985-07-03+01:00", get_iso_time_string(dt, TimeUnit::Day));
    +        assert_eq!("1985-07-03+01:00", get_iso_time_string(dt, TimeUnit::Day));
         }
     
         #[test]
    @@ -593,11 +594,11 @@
             let now = Local::now();
             let fixed_now = local_now_with_offset();
     
    -        // We can't compare across differing timezones, so we just compare the UTC timestamps.
    +        // We can't compare across differing timezones, so we just compare the UTC timestamps.
             // The second timestamp should be just a few nanoseconds later.
             assert!(
                 fixed_now.naive_utc() >= now.naive_utc(),
    -            "Time mismatch. Local now: {:?}, Fixed now: {:?}",
    +            "Time mismatch. Local now: {:?}, Fixed now: {:?}",
                 now,
                 fixed_now
             );
    @@ -605,22 +606,21 @@
     
         #[test]
         fn truncate_safely_test() {
    -        let value = "电脑坏了".to_string();
    +        let value = "电脑坏了".to_string();
             let truncated = truncate_string_at_boundary(value, 10);
    -        assert_eq!("电脑坏", truncated);
    +        assert_eq!("电脑坏", truncated);
     
    -        let value = "0123456789abcdef".to_string();
    +        let value = "0123456789abcdef".to_string();
             let truncated = truncate_string_at_boundary(value, 10);
    -        assert_eq!("0123456789", truncated);
    +        assert_eq!("0123456789", truncated);
         }
     
         #[test]
         #[should_panic]
         fn truncate_naive() {
             // Ensure that truncating the naïve way on this string would panic
    -        let value = "电脑坏了".to_string();
    +        let value = "电脑坏了".to_string();
             value[0..10].to_string();
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/src/uniffi_bindgen/lib.rs.html b/docs/src/uniffi_bindgen/lib.rs.html index e12c306c40..d51af9fcda 100644 --- a/docs/src/uniffi_bindgen/lib.rs.html +++ b/docs/src/uniffi_bindgen/lib.rs.html @@ -1,4 +1,4 @@ -lib.rs - source
    1
    -
    // intentionally left empty. only exists to make a warning go away
    -
    -
    \ No newline at end of file +lib.rs - source +
    1
    +
    // intentionally left empty. only exists to make a warning go away
    +
    \ No newline at end of file diff --git a/docs/static.files/COPYRIGHT-002d5dd09d9a4f50.txt b/docs/static.files/COPYRIGHT-23e9bde6c69aea69.txt similarity index 97% rename from docs/static.files/COPYRIGHT-002d5dd09d9a4f50.txt rename to docs/static.files/COPYRIGHT-23e9bde6c69aea69.txt index 34e48134cc..1447df792f 100644 --- a/docs/static.files/COPYRIGHT-002d5dd09d9a4f50.txt +++ b/docs/static.files/COPYRIGHT-23e9bde6c69aea69.txt @@ -1,3 +1,5 @@ +# REUSE-IgnoreStart + These documentation pages include resources by third parties. This copyright file applies only to those resources. The following third party resources are included, and carry their own copyright notices and license terms: @@ -44,3 +46,5 @@ included, and carry their own copyright notices and license terms: See SourceSerif4-LICENSE.md. This copyright file is intended to be distributed with rustdoc output. + +# REUSE-IgnoreEnd diff --git a/docs/static.files/FiraSans-LICENSE-1761dca11ffc8f19.txt b/docs/static.files/FiraSans-LICENSE-db4b642586e02d97.txt similarity index 99% rename from docs/static.files/FiraSans-LICENSE-1761dca11ffc8f19.txt rename to docs/static.files/FiraSans-LICENSE-db4b642586e02d97.txt index ff9afab064..d7e9c149b7 100644 --- a/docs/static.files/FiraSans-LICENSE-1761dca11ffc8f19.txt +++ b/docs/static.files/FiraSans-LICENSE-db4b642586e02d97.txt @@ -1,3 +1,5 @@ +// REUSE-IgnoreStart + Digitized data copyright (c) 2012-2015, The Mozilla Foundation and Telefonica S.A. with Reserved Font Name < Fira >, @@ -92,3 +94,5 @@ INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. + +// REUSE-IgnoreEnd diff --git a/docs/static.files/NanumBarunGothic-LICENSE-2fe9ce67ec95245d.txt b/docs/static.files/NanumBarunGothic-LICENSE-18c5adf4b52b4041.txt similarity index 99% rename from docs/static.files/NanumBarunGothic-LICENSE-2fe9ce67ec95245d.txt rename to docs/static.files/NanumBarunGothic-LICENSE-18c5adf4b52b4041.txt index 0bf46682b5..4b3edc29eb 100644 --- a/docs/static.files/NanumBarunGothic-LICENSE-2fe9ce67ec95245d.txt +++ b/docs/static.files/NanumBarunGothic-LICENSE-18c5adf4b52b4041.txt @@ -1,3 +1,5 @@ +// REUSE-IgnoreStart + Copyright (c) 2010, NAVER Corporation (https://www.navercorp.com/), with Reserved Font Name Nanum, Naver Nanum, NanumGothic, Naver NanumGothic, @@ -97,3 +99,5 @@ INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. + +// REUSE-IgnoreEnd diff --git a/docs/static.files/SourceCodePro-LICENSE-f554967dca0cf1dd.txt b/docs/static.files/SourceCodePro-LICENSE-d180d465a756484a.txt similarity index 99% rename from docs/static.files/SourceCodePro-LICENSE-f554967dca0cf1dd.txt rename to docs/static.files/SourceCodePro-LICENSE-d180d465a756484a.txt index 07542572e3..0d2941e148 100644 --- a/docs/static.files/SourceCodePro-LICENSE-f554967dca0cf1dd.txt +++ b/docs/static.files/SourceCodePro-LICENSE-d180d465a756484a.txt @@ -1,3 +1,5 @@ +// REUSE-IgnoreStart + Copyright 2010, 2012 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries. This Font Software is licensed under the SIL Open Font License, Version 1.1. @@ -91,3 +93,5 @@ INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. + +// REUSE-IgnoreEnd diff --git a/docs/static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2 b/docs/static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2 deleted file mode 100644 index db57d21455..0000000000 Binary files a/docs/static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2 and /dev/null differ diff --git a/docs/static.files/SourceSerif4-Bold-a2c9cd1067f8b328.ttf.woff2 b/docs/static.files/SourceSerif4-Bold-a2c9cd1067f8b328.ttf.woff2 new file mode 100644 index 0000000000..181a07f63b Binary files /dev/null and b/docs/static.files/SourceSerif4-Bold-a2c9cd1067f8b328.ttf.woff2 differ diff --git a/docs/static.files/SourceSerif4-It-acdfaf1a8af734b1.ttf.woff2 b/docs/static.files/SourceSerif4-It-acdfaf1a8af734b1.ttf.woff2 new file mode 100644 index 0000000000..2ae08a7bed Binary files /dev/null and b/docs/static.files/SourceSerif4-It-acdfaf1a8af734b1.ttf.woff2 differ diff --git a/docs/static.files/SourceSerif4-It-d034fe4ef9d0fa00.ttf.woff2 b/docs/static.files/SourceSerif4-It-d034fe4ef9d0fa00.ttf.woff2 deleted file mode 100644 index 1cbc021a3a..0000000000 Binary files a/docs/static.files/SourceSerif4-It-d034fe4ef9d0fa00.ttf.woff2 and /dev/null differ diff --git a/docs/static.files/SourceSerif4-LICENSE-964d32dc04f20ca3.md b/docs/static.files/SourceSerif4-LICENSE-3bb119e13b1258b7.md similarity index 94% rename from docs/static.files/SourceSerif4-LICENSE-964d32dc04f20ca3.md rename to docs/static.files/SourceSerif4-LICENSE-3bb119e13b1258b7.md index 68ea189240..175fa4f47a 100644 --- a/docs/static.files/SourceSerif4-LICENSE-964d32dc04f20ca3.md +++ b/docs/static.files/SourceSerif4-LICENSE-3bb119e13b1258b7.md @@ -1,4 +1,7 @@ + + Copyright 2014-2021 Adobe (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe in the United States and/or other countries. +Copyright 2014 - 2023 Adobe (http://www.adobe.com/), with Reserved Font Name ‘Source’. All Rights Reserved. Source is a trademark of Adobe in the United States and/or other countries. This Font Software is licensed under the SIL Open Font License, Version 1.1. @@ -91,3 +94,5 @@ INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. + + diff --git a/docs/static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2 b/docs/static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2 deleted file mode 100644 index 2db73fe2b4..0000000000 Binary files a/docs/static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2 and /dev/null differ diff --git a/docs/static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2 b/docs/static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2 new file mode 100644 index 0000000000..0263fc3042 Binary files /dev/null and b/docs/static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2 differ diff --git a/docs/static.files/ayu-8af5e100b21cd173.css b/docs/static.files/ayu-8af5e100b21cd173.css deleted file mode 100644 index bb44d9a2e1..0000000000 --- a/docs/static.files/ayu-8af5e100b21cd173.css +++ /dev/null @@ -1 +0,0 @@ - :root{--main-background-color:#0f1419;--main-color:#c5c5c5;--settings-input-color:#ffb454;--settings-button-color:#fff;--settings-button-border-focus:#e0e0e0;--sidebar-background-color:#14191f;--sidebar-background-color-hover:rgba(70,70,70,0.33);--code-block-background-color:#191f26;--scrollbar-track-background-color:transparent;--scrollbar-thumb-background-color:#5c6773;--scrollbar-color:#5c6773 #24292f;--headings-border-bottom-color:#5c6773;--border-color:#5c6773;--button-background-color:#141920;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:invert(100%);--search-input-focused-border-color:#5c6773;--copy-path-button-color:#fff;--copy-path-img-filter:invert(70%);--copy-path-img-hover-filter:invert(100%);--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--type-link-color:#ffa0a5;--trait-link-color:#39afd7;--assoc-item-link-color:#39afd7;--function-link-color:#fdd687;--macro-link-color:#a37acc;--keyword-link-color:#39afd7;--mod-link-color:#39afd7;--link-color:#39afd7;--sidebar-link-color:#53b1db;--sidebar-current-link-background-color:transparent;--search-result-link-focus-background-color:#3c3c3c;--search-result-border-color:#aaa3;--search-color:#fff;--search-results-alias-color:#c5c5c5;--search-results-grey-color:#999;--stab-background-color:#314559;--stab-code-color:#e6e1cf;--code-highlight-kw-color:#ff7733;--code-highlight-kw-2-color:#ff7733;--code-highlight-lifetime-color:#ff7733;--code-highlight-prelude-color:#69f2df;--code-highlight-prelude-val-color:#ff7733;--code-highlight-number-color:#b8cc52;--code-highlight-string-color:#b8cc52;--code-highlight-literal-color:#ff7733;--code-highlight-attribute-color:#e6e1cf;--code-highlight-self-color:#36a3d9;--code-highlight-macro-color:#a37acc;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#788797;--code-highlight-doc-comment-color:#a1ac88;--example-line-numbers-border-color:none;--src-line-numbers-span-color:#5c6773;--src-line-number-highlighted-background-color:rgba(255,236,164,0.06);--test-arrow-color:#788797;--test-arrow-background-color:rgba(57,175,215,0.09);--test-arrow-hover-color:#c5c5c5;--test-arrow-hover-background-color:rgba(57,175,215,0.368);--target-background-color:rgba(255,236,164,0.06);--target-border-color:rgba(255,180,76,0.85);--tooltip-background-color:#314559;--tooltip-color:#c5c5c5;--kbd-color:#c5c5c5;--kbd-background:#314559;--kbd-box-shadow-color:#5c6773;--rust-logo-filter:drop-shadow(1px 0 0px #fff) drop-shadow(0 1px 0 #fff) drop-shadow(-1px 0 0 #fff) drop-shadow(0 -1px 0 #fff);--crate-search-div-filter:invert(41%) sepia(12%) saturate(487%) hue-rotate(171deg) brightness(94%) contrast(94%);--crate-search-div-hover-filter:invert(98%) sepia(12%) saturate(81%) hue-rotate(343deg) brightness(113%) contrast(76%);--crate-search-hover-border:#e0e0e0;--source-sidebar-background-selected:#14191f;--source-sidebar-background-hover:#14191f;--table-alt-row-background-color:#191f26;}h1,h2,h3,h4{color:white;}h1 a{color:#fff;}h4{border:none;}.docblock code{color:#ffb454;}.code-header{color:#e6e1cf;}.docblock pre>code,pre>code{color:#e6e1cf;}.item-info code{color:#e6e1cf;}.docblock a>code{color:#39AFD7 !important;}pre,.rustdoc.source .example-wrap{color:#e6e1cf;}.sidebar .current,.sidebar a:hover{color:#ffb44c;}.sidebar-elems .location{color:#ff7733;}.src-line-numbers .line-highlighted{color:#708090;padding-right:4px;border-right:1px solid #ffb44c;}.search-results a:hover{color:#fff !important;background-color:#3c3c3c;}.search-results a:focus{color:#fff !important;background-color:#3c3c3c;}.search-results a{color:#0096cf;}.search-results a div.desc{color:#c5c5c5;}.content .item-info::before{color:#ccc;}.sidebar h2 a,.sidebar h3 a{color:white;}body.source .example-wrap pre.rust a{background:#333;}.module-item .stab,.import-item .stab{color:#000;}.result-name .primitive>i,.result-name .keyword>i{color:#788797;}#titles>button.selected{background-color:#141920 !important;border-bottom:1px solid #ffb44c !important;border-top:none;}#titles>button:not(.selected){background-color:transparent !important;border:none;}#titles>button:hover{border-bottom:1px solid rgba(242,151,24,0.3);}#titles>button>div.count{color:#888;}pre.rust .lifetime{}pre.rust .kw{}#titles>button:hover,#titles>button.selected{}pre.rust .self,pre.rust .bool-val,pre.rust .prelude-val,pre.rust .attribute{}pre.rust .kw-2,pre.rust .prelude-ty{}#settings-menu>a img{filter:invert(100);}#source-sidebar>.title{color:#fff;}#source-sidebar div.files>a:hover,details.dir-entry summary:hover,#source-sidebar div.files>a:focus,details.dir-entry summary:focus,#source-sidebar div.files>a.selected{color:#ffb44c;}.scraped-example-list .scrape-help{border-color:#aaa;color:#eee;}.scraped-example-list .scrape-help:hover{border-color:white;color:white;}.scraped-example .example-wrap .rust span.highlight{background:rgb(91,59,1);}.scraped-example .example-wrap .rust span.highlight.focus{background:rgb(124,75,15);}.scraped-example:not(.expanded) .code-wrapper:before{background:linear-gradient(to bottom,rgba(15,20,25,1),rgba(15,20,25,0));}.scraped-example:not(.expanded) .code-wrapper:after{background:linear-gradient(to top,rgba(15,20,25,1),rgba(15,20,25,0));}.toggle-line-inner{background:#999;}.toggle-line:hover .toggle-line-inner{background:#c5c5c5;} \ No newline at end of file diff --git a/docs/static.files/dark-f23faae4a2daf9a6.css b/docs/static.files/dark-f23faae4a2daf9a6.css deleted file mode 100644 index 64d4dec2ba..0000000000 --- a/docs/static.files/dark-f23faae4a2daf9a6.css +++ /dev/null @@ -1 +0,0 @@ -:root{--main-background-color:#353535;--main-color:#ddd;--settings-input-color:#2196f3;--settings-button-color:#000;--settings-button-border-focus:#ffb900;--sidebar-background-color:#505050;--sidebar-background-color-hover:#676767;--code-block-background-color:#2A2A2A;--scrollbar-track-background-color:#717171;--scrollbar-thumb-background-color:rgba(32,34,37,.6);--scrollbar-color:rgba(32,34,37,.6) #5a5a5a;--headings-border-bottom-color:#d2d2d2;--border-color:#e0e0e0;--button-background-color:#f0f0f0;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:invert(100%);--search-input-focused-border-color:#008dfd;--copy-path-button-color:#999;--copy-path-img-filter:invert(50%);--copy-path-img-hover-filter:invert(65%);--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--type-link-color:#2dbfb8;--trait-link-color:#b78cf2;--assoc-item-link-color:#d2991d;--function-link-color:#2bab63;--macro-link-color:#09bd00;--keyword-link-color:#d2991d;--mod-link-color:#d2991d;--link-color:#d2991d;--sidebar-link-color:#fdbf35;--sidebar-current-link-background-color:#444;--search-result-link-focus-background-color:#616161;--search-result-border-color:#aaa3;--search-color:#111;--search-results-alias-color:#fff;--search-results-grey-color:#ccc;--stab-background-color:#314559;--stab-code-color:#e6e1cf;--code-highlight-kw-color:#ab8ac1;--code-highlight-kw-2-color:#769acb;--code-highlight-lifetime-color:#d97f26;--code-highlight-prelude-color:#769acb;--code-highlight-prelude-val-color:#ee6868;--code-highlight-number-color:#83a300;--code-highlight-string-color:#83a300;--code-highlight-literal-color:#ee6868;--code-highlight-attribute-color:#ee6868;--code-highlight-self-color:#ee6868;--code-highlight-macro-color:#3e999f;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#8d8d8b;--code-highlight-doc-comment-color:#8ca375;--example-line-numbers-border-color:#4a4949;--src-line-numbers-span-color:#3b91e2;--src-line-number-highlighted-background-color:#0a042f;--test-arrow-color:#dedede;--test-arrow-background-color:rgba(78,139,202,0.2);--test-arrow-hover-color:#dedede;--test-arrow-hover-background-color:#4e8bca;--target-background-color:#494a3d;--target-border-color:#bb7410;--tooltip-background-color:#000;--tooltip-color:#fff;--kbd-color:#000;--kbd-background:#fafbfc;--kbd-box-shadow-color:#c6cbd1;--rust-logo-filter:drop-shadow(1px 0 0px #fff) drop-shadow(0 1px 0 #fff) drop-shadow(-1px 0 0 #fff) drop-shadow(0 -1px 0 #fff);--crate-search-div-filter:invert(94%) sepia(0%) saturate(721%) hue-rotate(255deg) brightness(90%) contrast(90%);--crate-search-div-hover-filter:invert(69%) sepia(60%) saturate(6613%) hue-rotate(184deg) brightness(100%) contrast(91%);--crate-search-hover-border:#2196f3;--source-sidebar-background-selected:#333;--source-sidebar-background-hover:#444;--table-alt-row-background-color:#2A2A2A;}.content .item-info::before{color:#ccc;}body.source .example-wrap pre.rust a{background:#333;}#titles>button:not(.selected){background-color:#252525;border-top-color:#252525;}#titles>button:hover,#titles>button.selected{border-top-color:#0089ff;background-color:#353535;}#titles>button>div.count{color:#888;}.scraped-example-list .scrape-help{border-color:#aaa;color:#eee;}.scraped-example-list .scrape-help:hover{border-color:white;color:white;}.scraped-example .example-wrap .rust span.highlight{background:rgb(91,59,1);}.scraped-example .example-wrap .rust span.highlight.focus{background:rgb(124,75,15);}.scraped-example:not(.expanded) .code-wrapper:before{background:linear-gradient(to bottom,rgba(53,53,53,1),rgba(53,53,53,0));}.scraped-example:not(.expanded) .code-wrapper:after{background:linear-gradient(to top,rgba(53,53,53,1),rgba(53,53,53,0));}.toggle-line-inner{background:#999;}.toggle-line:hover .toggle-line-inner{background:#c5c5c5;} \ No newline at end of file diff --git a/docs/static.files/down-arrow-927217e04c7463ac.svg b/docs/static.files/down-arrow-927217e04c7463ac.svg deleted file mode 100644 index 5d76a64e92..0000000000 --- a/docs/static.files/down-arrow-927217e04c7463ac.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/docs/static.files/light-ebce58d0a40c3431.css b/docs/static.files/light-ebce58d0a40c3431.css deleted file mode 100644 index ec0cb610e7..0000000000 --- a/docs/static.files/light-ebce58d0a40c3431.css +++ /dev/null @@ -1 +0,0 @@ -:root{--main-background-color:white;--main-color:black;--settings-input-color:#2196f3;--settings-button-color:#000;--settings-button-border-focus:#717171;--sidebar-background-color:#F5F5F5;--sidebar-background-color-hover:#E0E0E0;--code-block-background-color:#F5F5F5;--scrollbar-track-background-color:#dcdcdc;--scrollbar-thumb-background-color:rgba(36,37,39,0.6);--scrollbar-color:rgba(36,37,39,0.6) #d9d9d9;--headings-border-bottom-color:#ddd;--border-color:#e0e0e0;--button-background-color:#fff;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:none;--search-input-focused-border-color:#66afe9;--copy-path-button-color:#999;--copy-path-img-filter:invert(50%);--copy-path-img-hover-filter:invert(35%);--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--type-link-color:#ad378a;--trait-link-color:#6e4fc9;--assoc-item-link-color:#3873ad;--function-link-color:#ad7c37;--macro-link-color:#068000;--keyword-link-color:#3873ad;--mod-link-color:#3873ad;--link-color:#3873ad;--sidebar-link-color:#356da4;--sidebar-current-link-background-color:#fff;--search-result-link-focus-background-color:#ccc;--search-result-border-color:#aaa3;--search-color:#000;--search-results-alias-color:#000;--search-results-grey-color:#999;--stab-background-color:#fff5d6;--stab-code-color:#000;--code-highlight-kw-color:#8959a8;--code-highlight-kw-2-color:#4271ae;--code-highlight-lifetime-color:#b76514;--code-highlight-prelude-color:#4271ae;--code-highlight-prelude-val-color:#c82829;--code-highlight-number-color:#718c00;--code-highlight-string-color:#718c00;--code-highlight-literal-color:#c82829;--code-highlight-attribute-color:#c82829;--code-highlight-self-color:#c82829;--code-highlight-macro-color:#3e999f;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#8e908c;--code-highlight-doc-comment-color:#4d4d4c;--example-line-numbers-border-color:#c7c7c7;--src-line-numbers-span-color:#c67e2d;--src-line-number-highlighted-background-color:#fdffd3;--test-arrow-color:#f5f5f5;--test-arrow-background-color:rgba(78,139,202,0.2);--test-arrow-hover-color:#f5f5f5;--test-arrow-hover-background-color:#4e8bca;--target-background-color:#fdffd3;--target-border-color:#ad7c37;--tooltip-background-color:#000;--tooltip-color:#fff;--kbd-color:#000;--kbd-background:#fafbfc;--kbd-box-shadow-color:#c6cbd1;--rust-logo-filter:initial;--crate-search-div-filter:invert(100%) sepia(0%) saturate(4223%) hue-rotate(289deg) brightness(114%) contrast(76%);--crate-search-div-hover-filter:invert(44%) sepia(18%) saturate(23%) hue-rotate(317deg) brightness(96%) contrast(93%);--crate-search-hover-border:#717171;--source-sidebar-background-selected:#fff;--source-sidebar-background-hover:#e0e0e0;--table-alt-row-background-color:#F5F5F5;}.content .item-info::before{color:#ccc;}body.source .example-wrap pre.rust a{background:#eee;}#titles>button:not(.selected){background-color:#e6e6e6;border-top-color:#e6e6e6;}#titles>button:hover,#titles>button.selected{background-color:#ffffff;border-top-color:#0089ff;}#titles>button>div.count{color:#888;}.scraped-example-list .scrape-help{border-color:#555;color:#333;}.scraped-example-list .scrape-help:hover{border-color:black;color:black;}.scraped-example .example-wrap .rust span.highlight{background:#fcffd6;}.scraped-example .example-wrap .rust span.highlight.focus{background:#f6fdb0;}.scraped-example:not(.expanded) .code-wrapper:before{background:linear-gradient(to bottom,rgba(255,255,255,1),rgba(255,255,255,0));}.scraped-example:not(.expanded) .code-wrapper:after{background:linear-gradient(to top,rgba(255,255,255,1),rgba(255,255,255,0));}.toggle-line-inner{background:#ccc;}.toggle-line:hover .toggle-line-inner{background:#999;} \ No newline at end of file diff --git a/docs/static.files/main-305769736d49e732.js b/docs/static.files/main-305769736d49e732.js new file mode 100644 index 0000000000..b8b91afa03 --- /dev/null +++ b/docs/static.files/main-305769736d49e732.js @@ -0,0 +1,11 @@ +"use strict";window.RUSTDOC_TOOLTIP_HOVER_MS=300;window.RUSTDOC_TOOLTIP_HOVER_EXIT_MS=450;function resourcePath(basename,extension){return getVar("root-path")+basename+getVar("resource-suffix")+extension}function hideMain(){addClass(document.getElementById(MAIN_ID),"hidden")}function showMain(){removeClass(document.getElementById(MAIN_ID),"hidden")}function blurHandler(event,parentElem,hideCallback){if(!parentElem.contains(document.activeElement)&&!parentElem.contains(event.relatedTarget)){hideCallback()}}window.rootPath=getVar("root-path");window.currentCrate=getVar("current-crate");function setMobileTopbar(){const mobileTopbar=document.querySelector(".mobile-topbar");const locationTitle=document.querySelector(".sidebar h2.location");if(mobileTopbar){const mobileTitle=document.createElement("h2");mobileTitle.className="location";if(hasClass(document.querySelector(".rustdoc"),"crate")){mobileTitle.innerText=`Crate ${window.currentCrate}`}else if(locationTitle){mobileTitle.innerHTML=locationTitle.innerHTML}mobileTopbar.appendChild(mobileTitle)}}function getVirtualKey(ev){if("key"in ev&&typeof ev.key!=="undefined"){return ev.key}const c=ev.charCode||ev.keyCode;if(c===27){return"Escape"}return String.fromCharCode(c)}const MAIN_ID="main-content";const SETTINGS_BUTTON_ID="settings-menu";const ALTERNATIVE_DISPLAY_ID="alternative-display";const NOT_DISPLAYED_ID="not-displayed";const HELP_BUTTON_ID="help-button";function getSettingsButton(){return document.getElementById(SETTINGS_BUTTON_ID)}function getHelpButton(){return document.getElementById(HELP_BUTTON_ID)}function getNakedUrl(){return window.location.href.split("?")[0].split("#")[0]}function insertAfter(newNode,referenceNode){referenceNode.parentNode.insertBefore(newNode,referenceNode.nextSibling)}function getOrCreateSection(id,classes){let el=document.getElementById(id);if(!el){el=document.createElement("section");el.id=id;el.className=classes;insertAfter(el,document.getElementById(MAIN_ID))}return el}function getAlternativeDisplayElem(){return getOrCreateSection(ALTERNATIVE_DISPLAY_ID,"content hidden")}function getNotDisplayedElem(){return getOrCreateSection(NOT_DISPLAYED_ID,"hidden")}function switchDisplayedElement(elemToDisplay){const el=getAlternativeDisplayElem();if(el.children.length>0){getNotDisplayedElem().appendChild(el.firstElementChild)}if(elemToDisplay===null){addClass(el,"hidden");showMain();return}el.appendChild(elemToDisplay);hideMain();removeClass(el,"hidden")}function browserSupportsHistoryApi(){return window.history&&typeof window.history.pushState==="function"}function preLoadCss(cssUrl){const link=document.createElement("link");link.href=cssUrl;link.rel="preload";link.as="style";document.getElementsByTagName("head")[0].appendChild(link)}(function(){const isHelpPage=window.location.pathname.endsWith("/help.html");function loadScript(url){const script=document.createElement("script");script.src=url;document.head.append(script)}getSettingsButton().onclick=event=>{if(event.ctrlKey||event.altKey||event.metaKey){return}window.hideAllModals(false);addClass(getSettingsButton(),"rotate");event.preventDefault();loadScript(getVar("static-root-path")+getVar("settings-js"));setTimeout(()=>{const themes=getVar("themes").split(",");for(const theme of themes){if(theme!==""){preLoadCss(getVar("root-path")+theme+".css")}}},0)};window.searchState={loadingText:"Loading search results...",input:document.getElementsByClassName("search-input")[0],outputElement:()=>{let el=document.getElementById("search");if(!el){el=document.createElement("section");el.id="search";getNotDisplayedElem().appendChild(el)}return el},title:document.title,titleBeforeSearch:document.title,timeout:null,currentTab:0,focusedByTab:[null,null,null],clearInputTimeout:()=>{if(searchState.timeout!==null){clearTimeout(searchState.timeout);searchState.timeout=null}},isDisplayed:()=>searchState.outputElement().parentElement.id===ALTERNATIVE_DISPLAY_ID,focus:()=>{searchState.input.focus()},defocus:()=>{searchState.input.blur()},showResults:search=>{if(search===null||typeof search==="undefined"){search=searchState.outputElement()}switchDisplayedElement(search);searchState.mouseMovedAfterSearch=false;document.title=searchState.title},removeQueryParameters:()=>{document.title=searchState.titleBeforeSearch;if(browserSupportsHistoryApi()){history.replaceState(null,"",getNakedUrl()+window.location.hash)}},hideResults:()=>{switchDisplayedElement(null);searchState.removeQueryParameters()},getQueryStringParams:()=>{const params={};window.location.search.substring(1).split("&").map(s=>{const pair=s.split("=");params[decodeURIComponent(pair[0])]=typeof pair[1]==="undefined"?null:decodeURIComponent(pair[1])});return params},setup:()=>{const search_input=searchState.input;if(!searchState.input){return}let searchLoaded=false;function loadSearch(){if(!searchLoaded){searchLoaded=true;loadScript(getVar("static-root-path")+getVar("search-js"));loadScript(resourcePath("search-index",".js"))}}search_input.addEventListener("focus",()=>{search_input.origPlaceholder=search_input.placeholder;search_input.placeholder="Type your search here.";loadSearch()});if(search_input.value!==""){loadSearch()}const params=searchState.getQueryStringParams();if(params.search!==undefined){searchState.setLoadingSearch();loadSearch()}},setLoadingSearch:()=>{const search=searchState.outputElement();search.innerHTML="

    "+searchState.loadingText+"

    ";searchState.showResults(search)},};const toggleAllDocsId="toggle-all-docs";let savedHash="";function handleHashes(ev){if(ev!==null&&searchState.isDisplayed()&&ev.newURL){switchDisplayedElement(null);const hash=ev.newURL.slice(ev.newURL.indexOf("#")+1);if(browserSupportsHistoryApi()){history.replaceState(null,"",getNakedUrl()+window.location.search+"#"+hash)}const elem=document.getElementById(hash);if(elem){elem.scrollIntoView()}}const pageId=window.location.hash.replace(/^#/,"");if(savedHash!==pageId){savedHash=pageId;if(pageId!==""){expandSection(pageId)}}if(savedHash.startsWith("impl-")){const splitAt=savedHash.indexOf("/");if(splitAt!==-1){const implId=savedHash.slice(0,splitAt);const assocId=savedHash.slice(splitAt+1);const implElem=document.getElementById(implId);if(implElem&&implElem.parentElement.tagName==="SUMMARY"&&implElem.parentElement.parentElement.tagName==="DETAILS"){onEachLazy(implElem.parentElement.parentElement.querySelectorAll(`[id^="${assocId}"]`),item=>{const numbered=/([^-]+)-([0-9]+)/.exec(item.id);if(item.id===assocId||(numbered&&numbered[1]===assocId)){openParentDetails(item);item.scrollIntoView();setTimeout(()=>{window.location.replace("#"+item.id)},0)}})}}}}function onHashChange(ev){hideSidebar();handleHashes(ev)}function openParentDetails(elem){while(elem){if(elem.tagName==="DETAILS"){elem.open=true}elem=elem.parentNode}}function expandSection(id){openParentDetails(document.getElementById(id))}function handleEscape(ev){searchState.clearInputTimeout();searchState.hideResults();ev.preventDefault();searchState.defocus();window.hideAllModals(true)}function handleShortcut(ev){const disableShortcuts=getSettingValue("disable-shortcuts")==="true";if(ev.ctrlKey||ev.altKey||ev.metaKey||disableShortcuts){return}if(document.activeElement.tagName==="INPUT"&&document.activeElement.type!=="checkbox"&&document.activeElement.type!=="radio"){switch(getVirtualKey(ev)){case"Escape":handleEscape(ev);break}}else{switch(getVirtualKey(ev)){case"Escape":handleEscape(ev);break;case"s":case"S":ev.preventDefault();searchState.focus();break;case"+":ev.preventDefault();expandAllDocs();break;case"-":ev.preventDefault();collapseAllDocs();break;case"?":showHelp();break;default:break}}}document.addEventListener("keypress",handleShortcut);document.addEventListener("keydown",handleShortcut);function addSidebarItems(){if(!window.SIDEBAR_ITEMS){return}const sidebar=document.getElementsByClassName("sidebar-elems")[0];function block(shortty,id,longty){const filtered=window.SIDEBAR_ITEMS[shortty];if(!filtered){return}const modpath=hasClass(document.querySelector(".rustdoc"),"mod")?"../":"";const h3=document.createElement("h3");h3.innerHTML=`${longty}`;const ul=document.createElement("ul");ul.className="block "+shortty;for(const name of filtered){let path;if(shortty==="mod"){path=`${modpath}${name}/index.html`}else{path=`${modpath}${shortty}.${name}.html`}let current_page=document.location.href.toString();if(current_page.endsWith("/")){current_page+="index.html"}const link=document.createElement("a");link.href=path;if(path===current_page){link.className="current"}link.textContent=name;const li=document.createElement("li");li.appendChild(link);ul.appendChild(li)}sidebar.appendChild(h3);sidebar.appendChild(ul)}if(sidebar){block("primitive","primitives","Primitive Types");block("mod","modules","Modules");block("macro","macros","Macros");block("struct","structs","Structs");block("enum","enums","Enums");block("constant","constants","Constants");block("static","static","Statics");block("trait","traits","Traits");block("fn","functions","Functions");block("type","types","Type Aliases");block("union","unions","Unions");block("foreigntype","foreign-types","Foreign Types");block("keyword","keywords","Keywords");block("opaque","opaque-types","Opaque Types");block("attr","attributes","Attribute Macros");block("derive","derives","Derive Macros");block("traitalias","trait-aliases","Trait Aliases")}}window.register_implementors=imp=>{const implementors=document.getElementById("implementors-list");const synthetic_implementors=document.getElementById("synthetic-implementors-list");const inlined_types=new Set();const TEXT_IDX=0;const SYNTHETIC_IDX=1;const TYPES_IDX=2;if(synthetic_implementors){onEachLazy(synthetic_implementors.getElementsByClassName("impl"),el=>{const aliases=el.getAttribute("data-aliases");if(!aliases){return}aliases.split(",").forEach(alias=>{inlined_types.add(alias)})})}let currentNbImpls=implementors.getElementsByClassName("impl").length;const traitName=document.querySelector(".main-heading h1 > .trait").textContent;const baseIdName="impl-"+traitName+"-";const libs=Object.getOwnPropertyNames(imp);const script=document.querySelector("script[data-ignore-extern-crates]");const ignoreExternCrates=new Set((script?script.getAttribute("data-ignore-extern-crates"):"").split(","));for(const lib of libs){if(lib===window.currentCrate||ignoreExternCrates.has(lib)){continue}const structs=imp[lib];struct_loop:for(const struct of structs){const list=struct[SYNTHETIC_IDX]?synthetic_implementors:implementors;if(struct[SYNTHETIC_IDX]){for(const struct_type of struct[TYPES_IDX]){if(inlined_types.has(struct_type)){continue struct_loop}inlined_types.add(struct_type)}}const code=document.createElement("h3");code.innerHTML=struct[TEXT_IDX];addClass(code,"code-header");onEachLazy(code.getElementsByTagName("a"),elem=>{const href=elem.getAttribute("href");if(href&&!href.startsWith("#")&&!/^(?:[a-z+]+:)?\/\//.test(href)){elem.setAttribute("href",window.rootPath+href)}});const currentId=baseIdName+currentNbImpls;const anchor=document.createElement("a");anchor.href="#"+currentId;addClass(anchor,"anchor");const display=document.createElement("div");display.id=currentId;addClass(display,"impl");display.appendChild(anchor);display.appendChild(code);list.appendChild(display);currentNbImpls+=1}}};if(window.pending_implementors){window.register_implementors(window.pending_implementors)}window.register_type_impls=imp=>{if(!imp||!imp[window.currentCrate]){return}window.pending_type_impls=null;const idMap=new Map();let implementations=document.getElementById("implementations-list");let trait_implementations=document.getElementById("trait-implementations-list");let trait_implementations_header=document.getElementById("trait-implementations");const script=document.querySelector("script[data-self-path]");const selfPath=script?script.getAttribute("data-self-path"):null;const mainContent=document.querySelector("#main-content");const sidebarSection=document.querySelector(".sidebar section");let methods=document.querySelector(".sidebar .block.method");let associatedTypes=document.querySelector(".sidebar .block.associatedtype");let associatedConstants=document.querySelector(".sidebar .block.associatedconstant");let sidebarTraitList=document.querySelector(".sidebar .block.trait-implementation");for(const impList of imp[window.currentCrate]){const types=impList.slice(2);const text=impList[0];const isTrait=impList[1]!==0;const traitName=impList[1];if(types.indexOf(selfPath)===-1){continue}let outputList=isTrait?trait_implementations:implementations;if(outputList===null){const outputListName=isTrait?"Trait Implementations":"Implementations";const outputListId=isTrait?"trait-implementations-list":"implementations-list";const outputListHeaderId=isTrait?"trait-implementations":"implementations";const outputListHeader=document.createElement("h2");outputListHeader.id=outputListHeaderId;outputListHeader.innerText=outputListName;outputList=document.createElement("div");outputList.id=outputListId;if(isTrait){const link=document.createElement("a");link.href=`#${outputListHeaderId}`;link.innerText="Trait Implementations";const h=document.createElement("h3");h.appendChild(link);trait_implementations=outputList;trait_implementations_header=outputListHeader;sidebarSection.appendChild(h);sidebarTraitList=document.createElement("ul");sidebarTraitList.className="block trait-implementation";sidebarSection.appendChild(sidebarTraitList);mainContent.appendChild(outputListHeader);mainContent.appendChild(outputList)}else{implementations=outputList;if(trait_implementations){mainContent.insertBefore(outputListHeader,trait_implementations_header);mainContent.insertBefore(outputList,trait_implementations_header)}else{const mainContent=document.querySelector("#main-content");mainContent.appendChild(outputListHeader);mainContent.appendChild(outputList)}}}const template=document.createElement("template");template.innerHTML=text;onEachLazy(template.content.querySelectorAll("a"),elem=>{const href=elem.getAttribute("href");if(href&&!href.startsWith("#")&&!/^(?:[a-z+]+:)?\/\//.test(href)){elem.setAttribute("href",window.rootPath+href)}});onEachLazy(template.content.querySelectorAll("[id]"),el=>{let i=0;if(idMap.has(el.id)){i=idMap.get(el.id)}else if(document.getElementById(el.id)){i=1;while(document.getElementById(`${el.id}-${2 * i}`)){i=2*i}while(document.getElementById(`${el.id}-${i}`)){i+=1}}if(i!==0){const oldHref=`#${el.id}`;const newHref=`#${el.id}-${i}`;el.id=`${el.id}-${i}`;onEachLazy(template.content.querySelectorAll("a[href]"),link=>{if(link.getAttribute("href")===oldHref){link.href=newHref}})}idMap.set(el.id,i+1)});const templateAssocItems=template.content.querySelectorAll("section.tymethod, "+"section.method, section.associatedtype, section.associatedconstant");if(isTrait){const li=document.createElement("li");const a=document.createElement("a");a.href=`#${template.content.querySelector(".impl").id}`;a.textContent=traitName;li.appendChild(a);sidebarTraitList.append(li)}else{onEachLazy(templateAssocItems,item=>{let block=hasClass(item,"associatedtype")?associatedTypes:(hasClass(item,"associatedconstant")?associatedConstants:(methods));if(!block){const blockTitle=hasClass(item,"associatedtype")?"Associated Types":(hasClass(item,"associatedconstant")?"Associated Constants":("Methods"));const blockClass=hasClass(item,"associatedtype")?"associatedtype":(hasClass(item,"associatedconstant")?"associatedconstant":("method"));const blockHeader=document.createElement("h3");const blockLink=document.createElement("a");blockLink.href="#implementations";blockLink.innerText=blockTitle;blockHeader.appendChild(blockLink);block=document.createElement("ul");block.className=`block ${blockClass}`;const insertionReference=methods||sidebarTraitList;if(insertionReference){const insertionReferenceH=insertionReference.previousElementSibling;sidebarSection.insertBefore(blockHeader,insertionReferenceH);sidebarSection.insertBefore(block,insertionReferenceH)}else{sidebarSection.appendChild(blockHeader);sidebarSection.appendChild(block)}if(hasClass(item,"associatedtype")){associatedTypes=block}else if(hasClass(item,"associatedconstant")){associatedConstants=block}else{methods=block}}const li=document.createElement("li");const a=document.createElement("a");a.innerText=item.id.split("-")[0].split(".")[1];a.href=`#${item.id}`;li.appendChild(a);block.appendChild(li)})}outputList.appendChild(template.content)}for(const list of[methods,associatedTypes,associatedConstants,sidebarTraitList]){if(!list){continue}const newChildren=Array.prototype.slice.call(list.children);newChildren.sort((a,b)=>{const aI=a.innerText;const bI=b.innerText;return aIbI?1:0});list.replaceChildren(...newChildren)}};if(window.pending_type_impls){window.register_type_impls(window.pending_type_impls)}function addSidebarCrates(){if(!window.ALL_CRATES){return}const sidebarElems=document.getElementsByClassName("sidebar-elems")[0];if(!sidebarElems){return}const h3=document.createElement("h3");h3.innerHTML="Crates";const ul=document.createElement("ul");ul.className="block crate";for(const crate of window.ALL_CRATES){const link=document.createElement("a");link.href=window.rootPath+crate+"/index.html";link.textContent=crate;const li=document.createElement("li");if(window.rootPath!=="./"&&crate===window.currentCrate){li.className="current"}li.appendChild(link);ul.appendChild(li)}sidebarElems.appendChild(h3);sidebarElems.appendChild(ul)}function expandAllDocs(){const innerToggle=document.getElementById(toggleAllDocsId);removeClass(innerToggle,"will-expand");onEachLazy(document.getElementsByClassName("toggle"),e=>{if(!hasClass(e,"type-contents-toggle")&&!hasClass(e,"more-examples-toggle")){e.open=true}});innerToggle.title="collapse all docs";innerToggle.children[0].innerText="\u2212"}function collapseAllDocs(){const innerToggle=document.getElementById(toggleAllDocsId);addClass(innerToggle,"will-expand");onEachLazy(document.getElementsByClassName("toggle"),e=>{if(e.parentNode.id!=="implementations-list"||(!hasClass(e,"implementors-toggle")&&!hasClass(e,"type-contents-toggle"))){e.open=false}});innerToggle.title="expand all docs";innerToggle.children[0].innerText="+"}function toggleAllDocs(){const innerToggle=document.getElementById(toggleAllDocsId);if(!innerToggle){return}if(hasClass(innerToggle,"will-expand")){expandAllDocs()}else{collapseAllDocs()}}(function(){const toggles=document.getElementById(toggleAllDocsId);if(toggles){toggles.onclick=toggleAllDocs}const hideMethodDocs=getSettingValue("auto-hide-method-docs")==="true";const hideImplementations=getSettingValue("auto-hide-trait-implementations")==="true";const hideLargeItemContents=getSettingValue("auto-hide-large-items")!=="false";function setImplementorsTogglesOpen(id,open){const list=document.getElementById(id);if(list!==null){onEachLazy(list.getElementsByClassName("implementors-toggle"),e=>{e.open=open})}}if(hideImplementations){setImplementorsTogglesOpen("trait-implementations-list",false);setImplementorsTogglesOpen("blanket-implementations-list",false)}onEachLazy(document.getElementsByClassName("toggle"),e=>{if(!hideLargeItemContents&&hasClass(e,"type-contents-toggle")){e.open=true}if(hideMethodDocs&&hasClass(e,"method-toggle")){e.open=false}})}());window.rustdoc_add_line_numbers_to_examples=()=>{onEachLazy(document.getElementsByClassName("rust-example-rendered"),x=>{const parent=x.parentNode;const line_numbers=parent.querySelectorAll(".example-line-numbers");if(line_numbers.length>0){return}const count=x.textContent.split("\n").length;const elems=[];for(let i=0;i{onEachLazy(document.getElementsByClassName("rust-example-rendered"),x=>{const parent=x.parentNode;const line_numbers=parent.querySelectorAll(".example-line-numbers");for(const node of line_numbers){parent.removeChild(node)}})};if(getSettingValue("line-numbers")==="true"){window.rustdoc_add_line_numbers_to_examples()}function showSidebar(){window.hideAllModals(false);const sidebar=document.getElementsByClassName("sidebar")[0];addClass(sidebar,"shown")}function hideSidebar(){const sidebar=document.getElementsByClassName("sidebar")[0];removeClass(sidebar,"shown")}window.addEventListener("resize",()=>{if(window.CURRENT_TOOLTIP_ELEMENT){const base=window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE;const force_visible=base.TOOLTIP_FORCE_VISIBLE;hideTooltip(false);if(force_visible){showTooltip(base);base.TOOLTIP_FORCE_VISIBLE=true}}});const mainElem=document.getElementById(MAIN_ID);if(mainElem){mainElem.addEventListener("click",hideSidebar)}onEachLazy(document.querySelectorAll("a[href^='#']"),el=>{el.addEventListener("click",()=>{expandSection(el.hash.slice(1));hideSidebar()})});onEachLazy(document.querySelectorAll(".toggle > summary:not(.hideme)"),el=>{el.addEventListener("click",e=>{if(e.target.tagName!=="SUMMARY"&&e.target.tagName!=="A"){e.preventDefault()}})});function showTooltip(e){const notable_ty=e.getAttribute("data-notable-ty");if(!window.NOTABLE_TRAITS&¬able_ty){const data=document.getElementById("notable-traits-data");if(data){window.NOTABLE_TRAITS=JSON.parse(data.innerText)}else{throw new Error("showTooltip() called with notable without any notable traits!")}}if(window.CURRENT_TOOLTIP_ELEMENT&&window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE===e){clearTooltipHoverTimeout(window.CURRENT_TOOLTIP_ELEMENT);return}window.hideAllModals(false);const wrapper=document.createElement("div");if(notable_ty){wrapper.innerHTML="
    "+window.NOTABLE_TRAITS[notable_ty]+"
    "}else{if(e.getAttribute("title")!==null){e.setAttribute("data-title",e.getAttribute("title"));e.removeAttribute("title")}if(e.getAttribute("data-title")!==null){const titleContent=document.createElement("div");titleContent.className="content";titleContent.appendChild(document.createTextNode(e.getAttribute("data-title")));wrapper.appendChild(titleContent)}}wrapper.className="tooltip popover";const focusCatcher=document.createElement("div");focusCatcher.setAttribute("tabindex","0");focusCatcher.onfocus=hideTooltip;wrapper.appendChild(focusCatcher);const pos=e.getBoundingClientRect();wrapper.style.top=(pos.top+window.scrollY+pos.height)+"px";wrapper.style.left=0;wrapper.style.right="auto";wrapper.style.visibility="hidden";const body=document.getElementsByTagName("body")[0];body.appendChild(wrapper);const wrapperPos=wrapper.getBoundingClientRect();const finalPos=pos.left+window.scrollX-wrapperPos.width+24;if(finalPos>0){wrapper.style.left=finalPos+"px"}else{wrapper.style.setProperty("--popover-arrow-offset",(wrapperPos.right-pos.right+4)+"px")}wrapper.style.visibility="";window.CURRENT_TOOLTIP_ELEMENT=wrapper;window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE=e;clearTooltipHoverTimeout(window.CURRENT_TOOLTIP_ELEMENT);wrapper.onpointerenter=ev=>{if(ev.pointerType!=="mouse"){return}clearTooltipHoverTimeout(e)};wrapper.onpointerleave=ev=>{if(ev.pointerType!=="mouse"){return}if(!e.TOOLTIP_FORCE_VISIBLE&&!e.contains(ev.relatedTarget)){setTooltipHoverTimeout(e,false);addClass(wrapper,"fade-out")}}}function setTooltipHoverTimeout(element,show){clearTooltipHoverTimeout(element);if(!show&&!window.CURRENT_TOOLTIP_ELEMENT){return}if(show&&window.CURRENT_TOOLTIP_ELEMENT){return}if(window.CURRENT_TOOLTIP_ELEMENT&&window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE!==element){return}element.TOOLTIP_HOVER_TIMEOUT=setTimeout(()=>{if(show){showTooltip(element)}else if(!element.TOOLTIP_FORCE_VISIBLE){hideTooltip(false)}},show?window.RUSTDOC_TOOLTIP_HOVER_MS:window.RUSTDOC_TOOLTIP_HOVER_EXIT_MS)}function clearTooltipHoverTimeout(element){if(element.TOOLTIP_HOVER_TIMEOUT!==undefined){removeClass(window.CURRENT_TOOLTIP_ELEMENT,"fade-out");clearTimeout(element.TOOLTIP_HOVER_TIMEOUT);delete element.TOOLTIP_HOVER_TIMEOUT}}function tooltipBlurHandler(event){if(window.CURRENT_TOOLTIP_ELEMENT&&!window.CURRENT_TOOLTIP_ELEMENT.contains(document.activeElement)&&!window.CURRENT_TOOLTIP_ELEMENT.contains(event.relatedTarget)&&!window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE.contains(document.activeElement)&&!window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE.contains(event.relatedTarget)){setTimeout(()=>hideTooltip(false),0)}}function hideTooltip(focus){if(window.CURRENT_TOOLTIP_ELEMENT){if(window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE.TOOLTIP_FORCE_VISIBLE){if(focus){window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE.focus()}window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE.TOOLTIP_FORCE_VISIBLE=false}const body=document.getElementsByTagName("body")[0];body.removeChild(window.CURRENT_TOOLTIP_ELEMENT);clearTooltipHoverTimeout(window.CURRENT_TOOLTIP_ELEMENT);window.CURRENT_TOOLTIP_ELEMENT=null}}onEachLazy(document.getElementsByClassName("tooltip"),e=>{e.onclick=()=>{e.TOOLTIP_FORCE_VISIBLE=e.TOOLTIP_FORCE_VISIBLE?false:true;if(window.CURRENT_TOOLTIP_ELEMENT&&!e.TOOLTIP_FORCE_VISIBLE){hideTooltip(true)}else{showTooltip(e);window.CURRENT_TOOLTIP_ELEMENT.setAttribute("tabindex","0");window.CURRENT_TOOLTIP_ELEMENT.focus();window.CURRENT_TOOLTIP_ELEMENT.onblur=tooltipBlurHandler}return false};e.onpointerenter=ev=>{if(ev.pointerType!=="mouse"){return}setTooltipHoverTimeout(e,true)};e.onpointermove=ev=>{if(ev.pointerType!=="mouse"){return}setTooltipHoverTimeout(e,true)};e.onpointerleave=ev=>{if(ev.pointerType!=="mouse"){return}if(!e.TOOLTIP_FORCE_VISIBLE&&window.CURRENT_TOOLTIP_ELEMENT&&!window.CURRENT_TOOLTIP_ELEMENT.contains(ev.relatedTarget)){setTooltipHoverTimeout(e,false);addClass(window.CURRENT_TOOLTIP_ELEMENT,"fade-out")}}});const sidebar_menu_toggle=document.getElementsByClassName("sidebar-menu-toggle")[0];if(sidebar_menu_toggle){sidebar_menu_toggle.addEventListener("click",()=>{const sidebar=document.getElementsByClassName("sidebar")[0];if(!hasClass(sidebar,"shown")){showSidebar()}else{hideSidebar()}})}function helpBlurHandler(event){blurHandler(event,getHelpButton(),window.hidePopoverMenus)}function buildHelpMenu(){const book_info=document.createElement("span");const channel=getVar("channel");book_info.className="top";book_info.innerHTML=`You can find more information in \ +the rustdoc book.`;const shortcuts=[["?","Show this help dialog"],["S","Focus the search field"],["↑","Move up in search results"],["↓","Move down in search results"],["← / →","Switch result tab (when results focused)"],["⏎","Go to active search result"],["+","Expand all sections"],["-","Collapse all sections"],].map(x=>"
    "+x[0].split(" ").map((y,index)=>((index&1)===0?""+y+"":" "+y+" ")).join("")+"
    "+x[1]+"
    ").join("");const div_shortcuts=document.createElement("div");addClass(div_shortcuts,"shortcuts");div_shortcuts.innerHTML="

    Keyboard Shortcuts

    "+shortcuts+"
    ";const infos=[`For a full list of all search features, take a look here.`,"Prefix searches with a type followed by a colon (e.g., fn:) to \ + restrict the search to a given item kind.","Accepted kinds are: fn, mod, struct, \ + enum, trait, type, macro, \ + and const.","Search functions by type signature (e.g., vec -> usize or \ + -> vec or String, enum:Cow -> bool)","You can look for items with an exact name by putting double quotes around \ + your request: \"string\"","Look for functions that accept or return \ + slices and \ + arrays by writing \ + square brackets (e.g., -> [u8] or [] -> Option)","Look for items inside another one by searching for a path: vec::Vec",].map(x=>"

    "+x+"

    ").join("");const div_infos=document.createElement("div");addClass(div_infos,"infos");div_infos.innerHTML="

    Search Tricks

    "+infos;const rustdoc_version=document.createElement("span");rustdoc_version.className="bottom";const rustdoc_version_code=document.createElement("code");rustdoc_version_code.innerText="rustdoc "+getVar("rustdoc-version");rustdoc_version.appendChild(rustdoc_version_code);const container=document.createElement("div");if(!isHelpPage){container.className="popover"}container.id="help";container.style.display="none";const side_by_side=document.createElement("div");side_by_side.className="side-by-side";side_by_side.appendChild(div_shortcuts);side_by_side.appendChild(div_infos);container.appendChild(book_info);container.appendChild(side_by_side);container.appendChild(rustdoc_version);if(isHelpPage){const help_section=document.createElement("section");help_section.appendChild(container);document.getElementById("main-content").appendChild(help_section);container.style.display="block"}else{const help_button=getHelpButton();help_button.appendChild(container);container.onblur=helpBlurHandler;help_button.onblur=helpBlurHandler;help_button.children[0].onblur=helpBlurHandler}return container}window.hideAllModals=switchFocus=>{hideSidebar();window.hidePopoverMenus();hideTooltip(switchFocus)};window.hidePopoverMenus=()=>{onEachLazy(document.querySelectorAll(".search-form .popover"),elem=>{elem.style.display="none"})};function getHelpMenu(buildNeeded){let menu=getHelpButton().querySelector(".popover");if(!menu&&buildNeeded){menu=buildHelpMenu()}return menu}function showHelp(){getHelpButton().querySelector("a").focus();const menu=getHelpMenu(true);if(menu.style.display==="none"){window.hideAllModals();menu.style.display=""}}if(isHelpPage){showHelp();document.querySelector(`#${HELP_BUTTON_ID} > a`).addEventListener("click",event=>{const target=event.target;if(target.tagName!=="A"||target.parentElement.id!==HELP_BUTTON_ID||event.ctrlKey||event.altKey||event.metaKey){return}event.preventDefault()})}else{document.querySelector(`#${HELP_BUTTON_ID} > a`).addEventListener("click",event=>{const target=event.target;if(target.tagName!=="A"||target.parentElement.id!==HELP_BUTTON_ID||event.ctrlKey||event.altKey||event.metaKey){return}event.preventDefault();const menu=getHelpMenu(true);const shouldShowHelp=menu.style.display==="none";if(shouldShowHelp){showHelp()}else{window.hidePopoverMenus()}})}setMobileTopbar();addSidebarItems();addSidebarCrates();onHashChange(null);window.addEventListener("hashchange",onHashChange);searchState.setup()}());(function(){const SIDEBAR_MIN=100;const SIDEBAR_MAX=500;const RUSTDOC_MOBILE_BREAKPOINT=700;const BODY_MIN=400;const SIDEBAR_VANISH_THRESHOLD=SIDEBAR_MIN/2;const sidebarButton=document.getElementById("sidebar-button");if(sidebarButton){sidebarButton.addEventListener("click",e=>{removeClass(document.documentElement,"hide-sidebar");updateLocalStorage("hide-sidebar","false");e.preventDefault()})}let currentPointerId=null;let desiredSidebarSize=null;let pendingSidebarResizingFrame=false;const resizer=document.querySelector(".sidebar-resizer");const sidebar=document.querySelector(".sidebar");if(!resizer||!sidebar){return}const isSrcPage=hasClass(document.body,"src");function hideSidebar(){if(isSrcPage){window.rustdocCloseSourceSidebar();updateLocalStorage("src-sidebar-width",null);document.documentElement.style.removeProperty("--src-sidebar-width");sidebar.style.removeProperty("--src-sidebar-width");resizer.style.removeProperty("--src-sidebar-width")}else{addClass(document.documentElement,"hide-sidebar");updateLocalStorage("hide-sidebar","true");updateLocalStorage("desktop-sidebar-width",null);document.documentElement.style.removeProperty("--desktop-sidebar-width");sidebar.style.removeProperty("--desktop-sidebar-width");resizer.style.removeProperty("--desktop-sidebar-width")}}function showSidebar(){if(isSrcPage){window.rustdocShowSourceSidebar()}else{removeClass(document.documentElement,"hide-sidebar");updateLocalStorage("hide-sidebar","false")}}function changeSidebarSize(size){if(isSrcPage){updateLocalStorage("src-sidebar-width",size);sidebar.style.setProperty("--src-sidebar-width",size+"px");resizer.style.setProperty("--src-sidebar-width",size+"px")}else{updateLocalStorage("desktop-sidebar-width",size);sidebar.style.setProperty("--desktop-sidebar-width",size+"px");resizer.style.setProperty("--desktop-sidebar-width",size+"px")}}function isSidebarHidden(){return isSrcPage?!hasClass(document.documentElement,"src-sidebar-expanded"):hasClass(document.documentElement,"hide-sidebar")}function resize(e){if(currentPointerId===null||currentPointerId!==e.pointerId){return}e.preventDefault();const pos=e.clientX-sidebar.offsetLeft-3;if(pos=SIDEBAR_MIN){if(isSidebarHidden()){showSidebar()}const constrainedPos=Math.min(pos,window.innerWidth-BODY_MIN,SIDEBAR_MAX);changeSidebarSize(constrainedPos);desiredSidebarSize=constrainedPos;if(pendingSidebarResizingFrame!==false){clearTimeout(pendingSidebarResizingFrame)}pendingSidebarResizingFrame=setTimeout(()=>{if(currentPointerId===null||pendingSidebarResizingFrame===false){return}pendingSidebarResizingFrame=false;document.documentElement.style.setProperty("--resizing-sidebar-width",desiredSidebarSize+"px")},100)}}window.addEventListener("resize",()=>{if(window.innerWidth=(window.innerWidth-BODY_MIN)){changeSidebarSize(window.innerWidth-BODY_MIN)}else if(desiredSidebarSize!==null&&desiredSidebarSize>SIDEBAR_MIN){changeSidebarSize(desiredSidebarSize)}});function stopResize(e){if(currentPointerId===null){return}if(e){e.preventDefault()}desiredSidebarSize=sidebar.getBoundingClientRect().width;removeClass(resizer,"active");window.removeEventListener("pointermove",resize,false);window.removeEventListener("pointerup",stopResize,false);removeClass(document.documentElement,"sidebar-resizing");document.documentElement.style.removeProperty("--resizing-sidebar-width");if(resizer.releasePointerCapture){resizer.releasePointerCapture(currentPointerId);currentPointerId=null}}function initResize(e){if(currentPointerId!==null||e.altKey||e.ctrlKey||e.metaKey||e.button!==0){return}if(resizer.setPointerCapture){resizer.setPointerCapture(e.pointerId);if(!resizer.hasPointerCapture(e.pointerId)){resizer.releasePointerCapture(e.pointerId);return}currentPointerId=e.pointerId}e.preventDefault();window.addEventListener("pointermove",resize,false);window.addEventListener("pointercancel",stopResize,false);window.addEventListener("pointerup",stopResize,false);addClass(resizer,"active");addClass(document.documentElement,"sidebar-resizing");const pos=e.clientX-sidebar.offsetLeft-3;document.documentElement.style.setProperty("--resizing-sidebar-width",pos+"px");desiredSidebarSize=null}resizer.addEventListener("pointerdown",initResize,false)}());(function(){let reset_button_timeout=null;const but=document.getElementById("copy-path");if(!but){return}but.onclick=()=>{const parent=but.parentElement;const path=[];onEach(parent.childNodes,child=>{if(child.tagName==="A"){path.push(child.textContent)}});const el=document.createElement("textarea");el.value=path.join("::");el.setAttribute("readonly","");el.style.position="absolute";el.style.left="-9999px";document.body.appendChild(el);el.select();document.execCommand("copy");document.body.removeChild(el);but.children[0].style.display="none";let tmp;if(but.childNodes.length<2){tmp=document.createTextNode("✓");but.appendChild(tmp)}else{onEachLazy(but.childNodes,e=>{if(e.nodeType===Node.TEXT_NODE){tmp=e;return true}});tmp.textContent="✓"}if(reset_button_timeout!==null){window.clearTimeout(reset_button_timeout)}function reset_button(){tmp.textContent="";reset_button_timeout=null;but.children[0].style.display=""}reset_button_timeout=window.setTimeout(reset_button,1000)}}()) \ No newline at end of file diff --git a/docs/static.files/main-c55e1eb52e1886b4.js b/docs/static.files/main-c55e1eb52e1886b4.js deleted file mode 100644 index 0b952c21da..0000000000 --- a/docs/static.files/main-c55e1eb52e1886b4.js +++ /dev/null @@ -1,8 +0,0 @@ -"use strict";function getVar(name){const el=document.getElementById("rustdoc-vars");if(el){return el.attributes["data-"+name].value}else{return null}}function resourcePath(basename,extension){return getVar("root-path")+basename+getVar("resource-suffix")+extension}function hideMain(){addClass(document.getElementById(MAIN_ID),"hidden")}function showMain(){removeClass(document.getElementById(MAIN_ID),"hidden")}function elemIsInParent(elem,parent){while(elem&&elem!==document.body){if(elem===parent){return true}elem=elem.parentElement}return false}function blurHandler(event,parentElem,hideCallback){if(!elemIsInParent(document.activeElement,parentElem)&&!elemIsInParent(event.relatedTarget,parentElem)){hideCallback()}}window.rootPath=getVar("root-path");window.currentCrate=getVar("current-crate");function setMobileTopbar(){const mobileLocationTitle=document.querySelector(".mobile-topbar h2");const locationTitle=document.querySelector(".sidebar h2.location");if(mobileLocationTitle&&locationTitle){mobileLocationTitle.innerHTML=locationTitle.innerHTML}}function getVirtualKey(ev){if("key"in ev&&typeof ev.key!=="undefined"){return ev.key}const c=ev.charCode||ev.keyCode;if(c===27){return"Escape"}return String.fromCharCode(c)}const MAIN_ID="main-content";const SETTINGS_BUTTON_ID="settings-menu";const ALTERNATIVE_DISPLAY_ID="alternative-display";const NOT_DISPLAYED_ID="not-displayed";const HELP_BUTTON_ID="help-button";function getSettingsButton(){return document.getElementById(SETTINGS_BUTTON_ID)}function getHelpButton(){return document.getElementById(HELP_BUTTON_ID)}function getNakedUrl(){return window.location.href.split("?")[0].split("#")[0]}function insertAfter(newNode,referenceNode){referenceNode.parentNode.insertBefore(newNode,referenceNode.nextSibling)}function getOrCreateSection(id,classes){let el=document.getElementById(id);if(!el){el=document.createElement("section");el.id=id;el.className=classes;insertAfter(el,document.getElementById(MAIN_ID))}return el}function getAlternativeDisplayElem(){return getOrCreateSection(ALTERNATIVE_DISPLAY_ID,"content hidden")}function getNotDisplayedElem(){return getOrCreateSection(NOT_DISPLAYED_ID,"hidden")}function switchDisplayedElement(elemToDisplay){const el=getAlternativeDisplayElem();if(el.children.length>0){getNotDisplayedElem().appendChild(el.firstElementChild)}if(elemToDisplay===null){addClass(el,"hidden");showMain();return}el.appendChild(elemToDisplay);hideMain();removeClass(el,"hidden")}function browserSupportsHistoryApi(){return window.history&&typeof window.history.pushState==="function"}function loadCss(cssUrl){const link=document.createElement("link");link.href=cssUrl;link.type="text/css";link.rel="stylesheet";document.getElementsByTagName("head")[0].appendChild(link)}(function(){const isHelpPage=window.location.pathname.endsWith("/help.html");function loadScript(url){const script=document.createElement("script");script.src=url;document.head.append(script)}getSettingsButton().onclick=event=>{if(event.ctrlKey||event.altKey||event.metaKey){return}window.hideAllModals(false);addClass(getSettingsButton(),"rotate");event.preventDefault();loadCss(getVar("static-root-path")+getVar("settings-css"));loadScript(getVar("static-root-path")+getVar("settings-js"))};window.searchState={loadingText:"Loading search results...",input:document.getElementsByClassName("search-input")[0],outputElement:()=>{let el=document.getElementById("search");if(!el){el=document.createElement("section");el.id="search";getNotDisplayedElem().appendChild(el)}return el},title:document.title,titleBeforeSearch:document.title,timeout:null,currentTab:0,focusedByTab:[null,null,null],clearInputTimeout:()=>{if(searchState.timeout!==null){clearTimeout(searchState.timeout);searchState.timeout=null}},isDisplayed:()=>searchState.outputElement().parentElement.id===ALTERNATIVE_DISPLAY_ID,focus:()=>{searchState.input.focus()},defocus:()=>{searchState.input.blur()},showResults:search=>{if(search===null||typeof search==="undefined"){search=searchState.outputElement()}switchDisplayedElement(search);searchState.mouseMovedAfterSearch=false;document.title=searchState.title},hideResults:()=>{switchDisplayedElement(null);document.title=searchState.titleBeforeSearch;if(browserSupportsHistoryApi()){history.replaceState(null,window.currentCrate+" - Rust",getNakedUrl()+window.location.hash)}},getQueryStringParams:()=>{const params={};window.location.search.substring(1).split("&").map(s=>{const pair=s.split("=");params[decodeURIComponent(pair[0])]=typeof pair[1]==="undefined"?null:decodeURIComponent(pair[1])});return params},setup:()=>{const search_input=searchState.input;if(!searchState.input){return}let searchLoaded=false;function loadSearch(){if(!searchLoaded){searchLoaded=true;loadScript(getVar("static-root-path")+getVar("search-js"));loadScript(resourcePath("search-index",".js"))}}search_input.addEventListener("focus",()=>{search_input.origPlaceholder=search_input.placeholder;search_input.placeholder="Type your search here.";loadSearch()});if(search_input.value!==""){loadSearch()}const params=searchState.getQueryStringParams();if(params.search!==undefined){searchState.setLoadingSearch();loadSearch()}},setLoadingSearch:()=>{const search=searchState.outputElement();search.innerHTML="

    "+searchState.loadingText+"

    ";searchState.showResults(search)},};function getPageId(){if(window.location.hash){const tmp=window.location.hash.replace(/^#/,"");if(tmp.length>0){return tmp}}return null}const toggleAllDocsId="toggle-all-docs";let savedHash="";function handleHashes(ev){if(ev!==null&&searchState.isDisplayed()&&ev.newURL){switchDisplayedElement(null);const hash=ev.newURL.slice(ev.newURL.indexOf("#")+1);if(browserSupportsHistoryApi()){history.replaceState(null,"",getNakedUrl()+window.location.search+"#"+hash)}const elem=document.getElementById(hash);if(elem){elem.scrollIntoView()}}if(savedHash!==window.location.hash){savedHash=window.location.hash;if(savedHash.length===0){return}expandSection(savedHash.slice(1))}}function onHashChange(ev){hideSidebar();handleHashes(ev)}function openParentDetails(elem){while(elem){if(elem.tagName==="DETAILS"){elem.open=true}elem=elem.parentNode}}function expandSection(id){openParentDetails(document.getElementById(id))}function handleEscape(ev){searchState.clearInputTimeout();switchDisplayedElement(null);if(browserSupportsHistoryApi()){history.replaceState(null,window.currentCrate+" - Rust",getNakedUrl()+window.location.hash)}ev.preventDefault();searchState.defocus();window.hideAllModals(true)}function handleShortcut(ev){const disableShortcuts=getSettingValue("disable-shortcuts")==="true";if(ev.ctrlKey||ev.altKey||ev.metaKey||disableShortcuts){return}if(document.activeElement.tagName==="INPUT"&&document.activeElement.type!=="checkbox"){switch(getVirtualKey(ev)){case"Escape":handleEscape(ev);break}}else{switch(getVirtualKey(ev)){case"Escape":handleEscape(ev);break;case"s":case"S":ev.preventDefault();searchState.focus();break;case"+":ev.preventDefault();expandAllDocs();break;case"-":ev.preventDefault();collapseAllDocs();break;case"?":showHelp();break;default:break}}}document.addEventListener("keypress",handleShortcut);document.addEventListener("keydown",handleShortcut);function addSidebarItems(){if(!window.SIDEBAR_ITEMS){return}const sidebar=document.getElementsByClassName("sidebar-elems")[0];function block(shortty,id,longty){const filtered=window.SIDEBAR_ITEMS[shortty];if(!filtered){return}const h3=document.createElement("h3");h3.innerHTML=`${longty}`;const ul=document.createElement("ul");ul.className="block "+shortty;for(const item of filtered){const name=item[0];const desc=item[1];let path;if(shortty==="mod"){path=name+"/index.html"}else{path=shortty+"."+name+".html"}const current_page=document.location.href.split("/").pop();const link=document.createElement("a");link.href=path;link.title=desc;if(path===current_page){link.className="current"}link.textContent=name;const li=document.createElement("li");li.appendChild(link);ul.appendChild(li)}sidebar.appendChild(h3);sidebar.appendChild(ul)}if(sidebar){block("primitive","primitives","Primitive Types");block("mod","modules","Modules");block("macro","macros","Macros");block("struct","structs","Structs");block("enum","enums","Enums");block("union","unions","Unions");block("constant","constants","Constants");block("static","static","Statics");block("trait","traits","Traits");block("fn","functions","Functions");block("type","types","Type Definitions");block("foreigntype","foreign-types","Foreign Types");block("keyword","keywords","Keywords");block("traitalias","trait-aliases","Trait Aliases")}}window.register_implementors=imp=>{const implementors=document.getElementById("implementors-list");const synthetic_implementors=document.getElementById("synthetic-implementors-list");const inlined_types=new Set();const TEXT_IDX=0;const SYNTHETIC_IDX=1;const TYPES_IDX=2;if(synthetic_implementors){onEachLazy(synthetic_implementors.getElementsByClassName("impl"),el=>{const aliases=el.getAttribute("data-aliases");if(!aliases){return}aliases.split(",").forEach(alias=>{inlined_types.add(alias)})})}let currentNbImpls=implementors.getElementsByClassName("impl").length;const traitName=document.querySelector("h1.fqn > .trait").textContent;const baseIdName="impl-"+traitName+"-";const libs=Object.getOwnPropertyNames(imp);const script=document.querySelector("script[data-ignore-extern-crates]");const ignoreExternCrates=script?script.getAttribute("data-ignore-extern-crates"):"";for(const lib of libs){if(lib===window.currentCrate||ignoreExternCrates.indexOf(lib)!==-1){continue}const structs=imp[lib];struct_loop:for(const struct of structs){const list=struct[SYNTHETIC_IDX]?synthetic_implementors:implementors;if(struct[SYNTHETIC_IDX]){for(const struct_type of struct[TYPES_IDX]){if(inlined_types.has(struct_type)){continue struct_loop}inlined_types.add(struct_type)}}const code=document.createElement("h3");code.innerHTML=struct[TEXT_IDX];addClass(code,"code-header");onEachLazy(code.getElementsByTagName("a"),elem=>{const href=elem.getAttribute("href");if(href&&href.indexOf("http")!==0){elem.setAttribute("href",window.rootPath+href)}});const currentId=baseIdName+currentNbImpls;const anchor=document.createElement("a");anchor.href="#"+currentId;addClass(anchor,"anchor");const display=document.createElement("div");display.id=currentId;addClass(display,"impl");display.appendChild(anchor);display.appendChild(code);list.appendChild(display);currentNbImpls+=1}}};if(window.pending_implementors){window.register_implementors(window.pending_implementors)}function addSidebarCrates(){if(!window.ALL_CRATES){return}const sidebarElems=document.getElementsByClassName("sidebar-elems")[0];if(!sidebarElems){return}const h3=document.createElement("h3");h3.innerHTML="Crates";const ul=document.createElement("ul");ul.className="block crate";for(const crate of window.ALL_CRATES){const link=document.createElement("a");link.href=window.rootPath+crate+"/index.html";if(window.rootPath!=="./"&&crate===window.currentCrate){link.className="current"}link.textContent=crate;const li=document.createElement("li");li.appendChild(link);ul.appendChild(li)}sidebarElems.appendChild(h3);sidebarElems.appendChild(ul)}function expandAllDocs(){const innerToggle=document.getElementById(toggleAllDocsId);removeClass(innerToggle,"will-expand");onEachLazy(document.getElementsByClassName("rustdoc-toggle"),e=>{if(!hasClass(e,"type-contents-toggle")&&!hasClass(e,"more-examples-toggle")){e.open=true}});innerToggle.title="collapse all docs";innerToggle.children[0].innerText="\u2212"}function collapseAllDocs(){const innerToggle=document.getElementById(toggleAllDocsId);addClass(innerToggle,"will-expand");onEachLazy(document.getElementsByClassName("rustdoc-toggle"),e=>{if(e.parentNode.id!=="implementations-list"||(!hasClass(e,"implementors-toggle")&&!hasClass(e,"type-contents-toggle"))){e.open=false}});innerToggle.title="expand all docs";innerToggle.children[0].innerText="+"}function toggleAllDocs(){const innerToggle=document.getElementById(toggleAllDocsId);if(!innerToggle){return}if(hasClass(innerToggle,"will-expand")){expandAllDocs()}else{collapseAllDocs()}}(function(){const toggles=document.getElementById(toggleAllDocsId);if(toggles){toggles.onclick=toggleAllDocs}const hideMethodDocs=getSettingValue("auto-hide-method-docs")==="true";const hideImplementations=getSettingValue("auto-hide-trait-implementations")==="true";const hideLargeItemContents=getSettingValue("auto-hide-large-items")!=="false";function setImplementorsTogglesOpen(id,open){const list=document.getElementById(id);if(list!==null){onEachLazy(list.getElementsByClassName("implementors-toggle"),e=>{e.open=open})}}if(hideImplementations){setImplementorsTogglesOpen("trait-implementations-list",false);setImplementorsTogglesOpen("blanket-implementations-list",false)}onEachLazy(document.getElementsByClassName("rustdoc-toggle"),e=>{if(!hideLargeItemContents&&hasClass(e,"type-contents-toggle")){e.open=true}if(hideMethodDocs&&hasClass(e,"method-toggle")){e.open=false}});const pageId=getPageId();if(pageId!==null){expandSection(pageId)}}());window.rustdoc_add_line_numbers_to_examples=()=>{onEachLazy(document.getElementsByClassName("rust-example-rendered"),x=>{const parent=x.parentNode;const line_numbers=parent.querySelectorAll(".example-line-numbers");if(line_numbers.length>0){return}const count=x.textContent.split("\n").length;const elems=[];for(let i=0;i{onEachLazy(document.getElementsByClassName("rust-example-rendered"),x=>{const parent=x.parentNode;const line_numbers=parent.querySelectorAll(".example-line-numbers");for(const node of line_numbers){parent.removeChild(node)}})};if(getSettingValue("line-numbers")==="true"){window.rustdoc_add_line_numbers_to_examples()}let oldSidebarScrollPosition=null;window.rustdocMobileScrollLock=function(){const mobile_topbar=document.querySelector(".mobile-topbar");if(window.innerWidth<=window.RUSTDOC_MOBILE_BREAKPOINT){oldSidebarScrollPosition=window.scrollY;document.body.style.width=`${document.body.offsetWidth}px`;document.body.style.position="fixed";document.body.style.top=`-${oldSidebarScrollPosition}px`;if(mobile_topbar){mobile_topbar.style.top=`${oldSidebarScrollPosition}px`;mobile_topbar.style.position="relative"}}else{oldSidebarScrollPosition=null}};window.rustdocMobileScrollUnlock=function(){const mobile_topbar=document.querySelector(".mobile-topbar");if(oldSidebarScrollPosition!==null){document.body.style.width="";document.body.style.position="";document.body.style.top="";if(mobile_topbar){mobile_topbar.style.top="";mobile_topbar.style.position=""}window.scrollTo(0,oldSidebarScrollPosition);oldSidebarScrollPosition=null}};function showSidebar(){window.hideAllModals(false);window.rustdocMobileScrollLock();const sidebar=document.getElementsByClassName("sidebar")[0];addClass(sidebar,"shown")}function hideSidebar(){window.rustdocMobileScrollUnlock();const sidebar=document.getElementsByClassName("sidebar")[0];removeClass(sidebar,"shown")}window.addEventListener("resize",()=>{if(window.innerWidth>window.RUSTDOC_MOBILE_BREAKPOINT&&oldSidebarScrollPosition!==null){hideSidebar()}if(window.CURRENT_NOTABLE_ELEMENT){const base=window.CURRENT_NOTABLE_ELEMENT.NOTABLE_BASE;const force_visible=base.NOTABLE_FORCE_VISIBLE;hideNotable(false);if(force_visible){showNotable(base);base.NOTABLE_FORCE_VISIBLE=true}}});function handleClick(id,f){const elem=document.getElementById(id);if(elem){elem.addEventListener("click",f)}}handleClick(MAIN_ID,()=>{hideSidebar()});onEachLazy(document.getElementsByTagName("a"),el=>{if(el.hash){el.addEventListener("click",()=>{expandSection(el.hash.slice(1));hideSidebar()})}});onEachLazy(document.querySelectorAll(".rustdoc-toggle > summary:not(.hideme)"),el=>{el.addEventListener("click",e=>{if(e.target.tagName!=="SUMMARY"&&e.target.tagName!=="A"){e.preventDefault()}})});function showNotable(e){if(!window.NOTABLE_TRAITS){const data=document.getElementById("notable-traits-data");if(data){window.NOTABLE_TRAITS=JSON.parse(data.innerText)}else{throw new Error("showNotable() called on page without any notable traits!")}}if(window.CURRENT_NOTABLE_ELEMENT&&window.CURRENT_NOTABLE_ELEMENT.NOTABLE_BASE===e){return}window.hideAllModals(false);const ty=e.getAttribute("data-ty");const wrapper=document.createElement("div");wrapper.innerHTML="
    "+window.NOTABLE_TRAITS[ty]+"
    ";wrapper.className="notable popover";const focusCatcher=document.createElement("div");focusCatcher.setAttribute("tabindex","0");focusCatcher.onfocus=hideNotable;wrapper.appendChild(focusCatcher);const pos=e.getBoundingClientRect();wrapper.style.top=(pos.top+window.scrollY+pos.height)+"px";wrapper.style.left=0;wrapper.style.right="auto";wrapper.style.visibility="hidden";const body=document.getElementsByTagName("body")[0];body.appendChild(wrapper);const wrapperPos=wrapper.getBoundingClientRect();const finalPos=pos.left+window.scrollX-wrapperPos.width+24;if(finalPos>0){wrapper.style.left=finalPos+"px"}else{wrapper.style.setProperty("--popover-arrow-offset",(wrapperPos.right-pos.right+4)+"px")}wrapper.style.visibility="";window.CURRENT_NOTABLE_ELEMENT=wrapper;window.CURRENT_NOTABLE_ELEMENT.NOTABLE_BASE=e;wrapper.onpointerleave=function(ev){if(ev.pointerType!=="mouse"){return}if(!e.NOTABLE_FORCE_VISIBLE&&!elemIsInParent(event.relatedTarget,e)){hideNotable(true)}}}function notableBlurHandler(event){if(window.CURRENT_NOTABLE_ELEMENT&&!elemIsInParent(document.activeElement,window.CURRENT_NOTABLE_ELEMENT)&&!elemIsInParent(event.relatedTarget,window.CURRENT_NOTABLE_ELEMENT)&&!elemIsInParent(document.activeElement,window.CURRENT_NOTABLE_ELEMENT.NOTABLE_BASE)&&!elemIsInParent(event.relatedTarget,window.CURRENT_NOTABLE_ELEMENT.NOTABLE_BASE)){setTimeout(()=>hideNotable(false),0)}}function hideNotable(focus){if(window.CURRENT_NOTABLE_ELEMENT){if(window.CURRENT_NOTABLE_ELEMENT.NOTABLE_BASE.NOTABLE_FORCE_VISIBLE){if(focus){window.CURRENT_NOTABLE_ELEMENT.NOTABLE_BASE.focus()}window.CURRENT_NOTABLE_ELEMENT.NOTABLE_BASE.NOTABLE_FORCE_VISIBLE=false}const body=document.getElementsByTagName("body")[0];body.removeChild(window.CURRENT_NOTABLE_ELEMENT);window.CURRENT_NOTABLE_ELEMENT=null}}onEachLazy(document.getElementsByClassName("notable-traits"),e=>{e.onclick=function(){this.NOTABLE_FORCE_VISIBLE=this.NOTABLE_FORCE_VISIBLE?false:true;if(window.CURRENT_NOTABLE_ELEMENT&&!this.NOTABLE_FORCE_VISIBLE){hideNotable(true)}else{showNotable(this);window.CURRENT_NOTABLE_ELEMENT.setAttribute("tabindex","0");window.CURRENT_NOTABLE_ELEMENT.focus();window.CURRENT_NOTABLE_ELEMENT.onblur=notableBlurHandler}return false};e.onpointerenter=function(ev){if(ev.pointerType!=="mouse"){return}showNotable(this)};e.onpointerleave=function(ev){if(ev.pointerType!=="mouse"){return}if(!this.NOTABLE_FORCE_VISIBLE&&!elemIsInParent(event.relatedTarget,window.CURRENT_NOTABLE_ELEMENT)){hideNotable(true)}}});const sidebar_menu_toggle=document.getElementsByClassName("sidebar-menu-toggle")[0];if(sidebar_menu_toggle){sidebar_menu_toggle.addEventListener("click",()=>{const sidebar=document.getElementsByClassName("sidebar")[0];if(!hasClass(sidebar,"shown")){showSidebar()}else{hideSidebar()}})}function helpBlurHandler(event){blurHandler(event,getHelpButton(),window.hidePopoverMenus)}function buildHelpMenu(){const book_info=document.createElement("span");book_info.className="top";book_info.innerHTML="You can find more information in \ - the rustdoc book.";const shortcuts=[["?","Show this help dialog"],["S","Focus the search field"],["↑","Move up in search results"],["↓","Move down in search results"],["← / →","Switch result tab (when results focused)"],["⏎","Go to active search result"],["+","Expand all sections"],["-","Collapse all sections"],].map(x=>"
    "+x[0].split(" ").map((y,index)=>((index&1)===0?""+y+"":" "+y+" ")).join("")+"
    "+x[1]+"
    ").join("");const div_shortcuts=document.createElement("div");addClass(div_shortcuts,"shortcuts");div_shortcuts.innerHTML="

    Keyboard Shortcuts

    "+shortcuts+"
    ";const infos=["Prefix searches with a type followed by a colon (e.g., fn:) to \ - restrict the search to a given item kind.","Accepted kinds are: fn, mod, struct, \ - enum, trait, type, macro, \ - and const.","Search functions by type signature (e.g., vec -> usize or \ - -> vec)","Search multiple things at once by splitting your query with comma (e.g., \ - str,u8 or String,struct:Vec,test)","You can look for items with an exact name by putting double quotes around \ - your request: \"string\"","Look for items inside another one by searching for a path: vec::Vec",].map(x=>"

    "+x+"

    ").join("");const div_infos=document.createElement("div");addClass(div_infos,"infos");div_infos.innerHTML="

    Search Tricks

    "+infos;const rustdoc_version=document.createElement("span");rustdoc_version.className="bottom";const rustdoc_version_code=document.createElement("code");rustdoc_version_code.innerText="rustdoc "+getVar("rustdoc-version");rustdoc_version.appendChild(rustdoc_version_code);const container=document.createElement("div");if(!isHelpPage){container.className="popover"}container.id="help";container.style.display="none";const side_by_side=document.createElement("div");side_by_side.className="side-by-side";side_by_side.appendChild(div_shortcuts);side_by_side.appendChild(div_infos);container.appendChild(book_info);container.appendChild(side_by_side);container.appendChild(rustdoc_version);if(isHelpPage){const help_section=document.createElement("section");help_section.appendChild(container);document.getElementById("main-content").appendChild(help_section);container.style.display="block"}else{const help_button=getHelpButton();help_button.appendChild(container);container.onblur=helpBlurHandler;container.onclick=event=>{event.preventDefault()};help_button.onblur=helpBlurHandler;help_button.children[0].onblur=helpBlurHandler}return container}window.hideAllModals=function(switchFocus){hideSidebar();window.hidePopoverMenus();hideNotable(switchFocus)};window.hidePopoverMenus=function(){onEachLazy(document.querySelectorAll(".search-form .popover"),elem=>{elem.style.display="none"})};function getHelpMenu(buildNeeded){let menu=getHelpButton().querySelector(".popover");if(!menu&&buildNeeded){menu=buildHelpMenu()}return menu}function showHelp(){const menu=getHelpMenu(true);if(menu.style.display==="none"){window.hideAllModals();menu.style.display=""}}if(isHelpPage){showHelp();document.querySelector(`#${HELP_BUTTON_ID} > a`).addEventListener("click",event=>{const target=event.target;if(target.tagName!=="A"||target.parentElement.id!==HELP_BUTTON_ID||event.ctrlKey||event.altKey||event.metaKey){return}event.preventDefault()})}else{document.querySelector(`#${HELP_BUTTON_ID} > a`).addEventListener("click",event=>{const target=event.target;if(target.tagName!=="A"||target.parentElement.id!==HELP_BUTTON_ID||event.ctrlKey||event.altKey||event.metaKey){return}event.preventDefault();const menu=getHelpMenu(true);const shouldShowHelp=menu.style.display==="none";if(shouldShowHelp){showHelp()}else{window.hidePopoverMenus()}})}setMobileTopbar();addSidebarItems();addSidebarCrates();onHashChange(null);window.addEventListener("hashchange",onHashChange);searchState.setup()}());(function(){let reset_button_timeout=null;window.copy_path=but=>{const parent=but.parentElement;const path=[];onEach(parent.childNodes,child=>{if(child.tagName==="A"){path.push(child.textContent)}});const el=document.createElement("textarea");el.value=path.join("::");el.setAttribute("readonly","");el.style.position="absolute";el.style.left="-9999px";document.body.appendChild(el);el.select();document.execCommand("copy");document.body.removeChild(el);but.children[0].style.display="none";let tmp;if(but.childNodes.length<2){tmp=document.createTextNode("✓");but.appendChild(tmp)}else{onEachLazy(but.childNodes,e=>{if(e.nodeType===Node.TEXT_NODE){tmp=e;return true}});tmp.textContent="✓"}if(reset_button_timeout!==null){window.clearTimeout(reset_button_timeout)}function reset_button(){tmp.textContent="";reset_button_timeout=null;but.children[0].style.display=""}reset_button_timeout=window.setTimeout(reset_button,1000)}}()) \ No newline at end of file diff --git a/docs/static.files/noscript-13285aec31fa243e.css b/docs/static.files/noscript-13285aec31fa243e.css deleted file mode 100644 index c32e0cb135..0000000000 --- a/docs/static.files/noscript-13285aec31fa243e.css +++ /dev/null @@ -1 +0,0 @@ - #main-content .attributes{margin-left:0 !important;}#copy-path{display:none;}nav.sub{display:none;}.source .sidebar{display:none;}.notable-traits{display:none;} \ No newline at end of file diff --git a/docs/static.files/noscript-feafe1bb7466e4bd.css b/docs/static.files/noscript-feafe1bb7466e4bd.css new file mode 100644 index 0000000000..7bbe07f1c9 --- /dev/null +++ b/docs/static.files/noscript-feafe1bb7466e4bd.css @@ -0,0 +1 @@ + #main-content .attributes{margin-left:0 !important;}#copy-path,#sidebar-button,.sidebar-resizer{display:none;}nav.sub{display:none;}.src .sidebar{display:none;}.notable-traits{display:none;}:root{--main-background-color:white;--main-color:black;--settings-input-color:#2196f3;--settings-input-border-color:#717171;--settings-button-color:#000;--settings-button-border-focus:#717171;--sidebar-background-color:#f5f5f5;--sidebar-background-color-hover:#e0e0e0;--code-block-background-color:#f5f5f5;--scrollbar-track-background-color:#dcdcdc;--scrollbar-thumb-background-color:rgba(36,37,39,0.6);--scrollbar-color:rgba(36,37,39,0.6) #d9d9d9;--headings-border-bottom-color:#ddd;--border-color:#e0e0e0;--button-background-color:#fff;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:none;--search-input-focused-border-color:#66afe9;--copy-path-button-color:#999;--copy-path-img-filter:invert(50%);--copy-path-img-hover-filter:invert(35%);--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--warning-border-color:#ff8e00;--type-link-color:#ad378a;--trait-link-color:#6e4fc9;--assoc-item-link-color:#3873ad;--function-link-color:#ad7c37;--macro-link-color:#068000;--keyword-link-color:#3873ad;--mod-link-color:#3873ad;--link-color:#3873ad;--sidebar-link-color:#356da4;--sidebar-current-link-background-color:#fff;--search-result-link-focus-background-color:#ccc;--search-result-border-color:#aaa3;--search-color:#000;--search-error-code-background-color:#d0cccc;--search-results-alias-color:#000;--search-results-grey-color:#999;--search-tab-title-count-color:#888;--search-tab-button-not-selected-border-top-color:#e6e6e6;--search-tab-button-not-selected-background:#e6e6e6;--search-tab-button-selected-border-top-color:#0089ff;--search-tab-button-selected-background:#fff;--stab-background-color:#fff5d6;--stab-code-color:#000;--code-highlight-kw-color:#8959a8;--code-highlight-kw-2-color:#4271ae;--code-highlight-lifetime-color:#b76514;--code-highlight-prelude-color:#4271ae;--code-highlight-prelude-val-color:#c82829;--code-highlight-number-color:#718c00;--code-highlight-string-color:#718c00;--code-highlight-literal-color:#c82829;--code-highlight-attribute-color:#c82829;--code-highlight-self-color:#c82829;--code-highlight-macro-color:#3e999f;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#8e908c;--code-highlight-doc-comment-color:#4d4d4c;--src-line-numbers-span-color:#c67e2d;--src-line-number-highlighted-background-color:#fdffd3;--test-arrow-color:#f5f5f5;--test-arrow-background-color:rgba(78,139,202,0.2);--test-arrow-hover-color:#f5f5f5;--test-arrow-hover-background-color:rgb(78,139,202);--target-background-color:#fdffd3;--target-border-color:#ad7c37;--kbd-color:#000;--kbd-background:#fafbfc;--kbd-box-shadow-color:#c6cbd1;--rust-logo-filter:initial;--crate-search-div-filter:invert(100%) sepia(0%) saturate(4223%) hue-rotate(289deg) brightness(114%) contrast(76%);--crate-search-div-hover-filter:invert(44%) sepia(18%) saturate(23%) hue-rotate(317deg) brightness(96%) contrast(93%);--crate-search-hover-border:#717171;--src-sidebar-background-selected:#fff;--src-sidebar-background-hover:#e0e0e0;--table-alt-row-background-color:#f5f5f5;--codeblock-link-background:#eee;--scrape-example-toggle-line-background:#ccc;--scrape-example-toggle-line-hover-background:#999;--scrape-example-code-line-highlight:#fcffd6;--scrape-example-code-line-highlight-focus:#f6fdb0;--scrape-example-help-border-color:#555;--scrape-example-help-color:#333;--scrape-example-help-hover-border-color:#000;--scrape-example-help-hover-color:#000;--scrape-example-code-wrapper-background-start:rgba(255,255,255,1);--scrape-example-code-wrapper-background-end:rgba(255,255,255,0);--sidebar-resizer-hover:hsl(207,90%,66%);--sidebar-resizer-active:hsl(207,90%,54%);}@media (prefers-color-scheme:dark){:root{--main-background-color:#353535;--main-color:#ddd;--settings-input-color:#2196f3;--settings-input-border-color:#999;--settings-button-color:#000;--settings-button-border-focus:#ffb900;--sidebar-background-color:#505050;--sidebar-background-color-hover:#676767;--code-block-background-color:#2A2A2A;--scrollbar-track-background-color:#717171;--scrollbar-thumb-background-color:rgba(32,34,37,.6);--scrollbar-color:rgba(32,34,37,.6) #5a5a5a;--headings-border-bottom-color:#d2d2d2;--border-color:#e0e0e0;--button-background-color:#f0f0f0;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:invert(100%);--search-input-focused-border-color:#008dfd;--copy-path-button-color:#999;--copy-path-img-filter:invert(50%);--copy-path-img-hover-filter:invert(65%);--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--warning-border-color:#ff8e00;--type-link-color:#2dbfb8;--trait-link-color:#b78cf2;--assoc-item-link-color:#d2991d;--function-link-color:#2bab63;--macro-link-color:#09bd00;--keyword-link-color:#d2991d;--mod-link-color:#d2991d;--link-color:#d2991d;--sidebar-link-color:#fdbf35;--sidebar-current-link-background-color:#444;--search-result-link-focus-background-color:#616161;--search-result-border-color:#aaa3;--search-color:#111;--search-error-code-background-color:#484848;--search-results-alias-color:#fff;--search-results-grey-color:#ccc;--search-tab-title-count-color:#888;--search-tab-button-not-selected-border-top-color:#252525;--search-tab-button-not-selected-background:#252525;--search-tab-button-selected-border-top-color:#0089ff;--search-tab-button-selected-background:#353535;--stab-background-color:#314559;--stab-code-color:#e6e1cf;--code-highlight-kw-color:#ab8ac1;--code-highlight-kw-2-color:#769acb;--code-highlight-lifetime-color:#d97f26;--code-highlight-prelude-color:#769acb;--code-highlight-prelude-val-color:#ee6868;--code-highlight-number-color:#83a300;--code-highlight-string-color:#83a300;--code-highlight-literal-color:#ee6868;--code-highlight-attribute-color:#ee6868;--code-highlight-self-color:#ee6868;--code-highlight-macro-color:#3e999f;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#8d8d8b;--code-highlight-doc-comment-color:#8ca375;--src-line-numbers-span-color:#3b91e2;--src-line-number-highlighted-background-color:#0a042f;--test-arrow-color:#dedede;--test-arrow-background-color:rgba(78,139,202,0.2);--test-arrow-hover-color:#dedede;--test-arrow-hover-background-color:#4e8bca;--target-background-color:#494a3d;--target-border-color:#bb7410;--kbd-color:#000;--kbd-background:#fafbfc;--kbd-box-shadow-color:#c6cbd1;--rust-logo-filter:drop-shadow(1px 0 0px #fff) drop-shadow(0 1px 0 #fff) drop-shadow(-1px 0 0 #fff) drop-shadow(0 -1px 0 #fff);--crate-search-div-filter:invert(94%) sepia(0%) saturate(721%) hue-rotate(255deg) brightness(90%) contrast(90%);--crate-search-div-hover-filter:invert(69%) sepia(60%) saturate(6613%) hue-rotate(184deg) brightness(100%) contrast(91%);--crate-search-hover-border:#2196f3;--src-sidebar-background-selected:#333;--src-sidebar-background-hover:#444;--table-alt-row-background-color:#2a2a2a;--codeblock-link-background:#333;--scrape-example-toggle-line-background:#999;--scrape-example-toggle-line-hover-background:#c5c5c5;--scrape-example-code-line-highlight:#5b3b01;--scrape-example-code-line-highlight-focus:#7c4b0f;--scrape-example-help-border-color:#aaa;--scrape-example-help-color:#eee;--scrape-example-help-hover-border-color:#fff;--scrape-example-help-hover-color:#fff;--scrape-example-code-wrapper-background-start:rgba(53,53,53,1);--scrape-example-code-wrapper-background-end:rgba(53,53,53,0);--sidebar-resizer-hover:hsl(207,30%,54%);--sidebar-resizer-active:hsl(207,90%,54%);}} \ No newline at end of file diff --git a/docs/static.files/rustdoc-6827029ac823cab7.css b/docs/static.files/rustdoc-6827029ac823cab7.css deleted file mode 100644 index 2b164e808d..0000000000 --- a/docs/static.files/rustdoc-6827029ac823cab7.css +++ /dev/null @@ -1 +0,0 @@ - @font-face {font-family:'Fira Sans';font-style:normal;font-weight:400;src:local('Fira Sans'),url("FiraSans-Regular-018c141bf0843ffd.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Fira Sans';font-style:normal;font-weight:500;src:local('Fira Sans Medium'),url("FiraSans-Medium-8f9a781e4970d388.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:normal;font-weight:400;src:local('Source Serif 4'),url("SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:italic;font-weight:400;src:local('Source Serif 4 Italic'),url("SourceSerif4-It-d034fe4ef9d0fa00.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:normal;font-weight:700;src:local('Source Serif 4 Bold'),url("SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:normal;font-weight:400;src:url("SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:italic;font-weight:400;src:url("SourceCodePro-It-1cc31594bf4f1f79.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:normal;font-weight:600;src:url("SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'NanumBarunGothic';src:url("NanumBarunGothic-0f09457c7a19b7c6.ttf.woff2") format("woff2");font-display:swap;unicode-range:U+AC00-D7AF,U+1100-11FF,U+3130-318F,U+A960-A97F,U+D7B0-D7FF;}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;}html{content:"";}@media (prefers-color-scheme:light){html{content:"light";}}@media (prefers-color-scheme:dark){html{content:"dark";}}body{font:1rem/1.5 "Source Serif 4",NanumBarunGothic,serif;margin:0;position:relative;overflow-wrap:break-word;overflow-wrap:anywhere;-webkit-font-feature-settings:"kern","liga";-moz-font-feature-settings:"kern","liga";font-feature-settings:"kern","liga";background-color:var(--main-background-color);color:var(--main-color);}h1{font-size:1.5rem;}h2{font-size:1.375rem;}h3{font-size:1.25rem;}h1,h2,h3,h4,h5,h6{font-weight:500;}h1,h2,h3,h4{margin:25px 0 15px 0;padding-bottom:6px;}.docblock h3,.docblock h4,h5,h6{margin:15px 0 5px 0;}.docblock>h2:first-child,.docblock>h3:first-child,.docblock>h4:first-child,.docblock>h5:first-child,.docblock>h6:first-child{margin-top:0;}h1.fqn{margin:0;padding:0;flex-grow:1;overflow-wrap:break-word;overflow-wrap:anywhere;}.main-heading{display:flex;flex-wrap:wrap;padding-bottom:6px;margin-bottom:15px;}.content h2,.top-doc .docblock>h3,.top-doc .docblock>h4{border-bottom:1px solid var(--headings-border-bottom-color);}h3.code-header{font-size:1.125rem;}h4.code-header{font-size:1rem;}.code-header{font-weight:600;margin:0;padding:0;}#crate-search,h1,h2,h3,h4,h5,h6,.sidebar,.mobile-topbar,.search-input,.search-results .result-name,.item-left>a,.out-of-band,span.since,a.srclink,#help-button>a,summary.hideme,.scraped-example-list,ul.all-items{font-family:"Fira Sans",Arial,NanumBarunGothic,sans-serif;}#toggle-all-docs,a.anchor,.small-section-header a,#source-sidebar a,pre.rust a,.sidebar h2 a,.sidebar h3 a,.mobile-topbar h2 a,h1 a,.search-results a,.item-left .stab,.result-name .primitive>i,.result-name .keyword>i{color:var(--main-color);}.content span.enum,.content a.enum,.content span.struct,.content a.struct,.content span.union,.content a.union,.content span.primitive,.content a.primitive,.content span.type,.content a.type,.content span.foreigntype,.content a.foreigntype{color:var(--type-link-color);}.content span.trait,.content a.trait,.content span.traitalias,.content a.traitalias{color:var(--trait-link-color);}.content span.associatedtype,.content a.associatedtype,.content span.constant,.content a.constant,.content span.static,.content a.static{color:var(--assoc-item-link-color);}.content span.fn,.content a.fn,.content span.method,.content a.method,.content span.tymethod,.content a.tymethod{color:var(--function-link-color);}.content span.attr,.content a.attr,.content span.derive,.content a.derive,.content span.macro,.content a.macro{color:var(--macro-link-color);}.content span.mod,.content a.mod{color:var(--mod-link-color);}.content span.keyword,.content a.keyword{color:var(--keyword-link-color);}a{color:var(--link-color);}ol,ul{padding-left:24px;}ul ul,ol ul,ul ol,ol ol{margin-bottom:.625em;}p{margin:0 0 .75em 0;}p:last-child{margin:0;}button{padding:1px 6px;cursor:pointer;}button#toggle-all-docs{padding:0;background:none;border:none;-webkit-appearance:none;opacity:1;}.rustdoc{display:flex;flex-direction:row;flex-wrap:nowrap;}main{position:relative;flex-grow:1;padding:10px 15px 40px 45px;min-width:0;}.source main{padding:15px;}.width-limiter{max-width:960px;margin-right:auto;}.source .width-limiter{max-width:unset;}details:not(.rustdoc-toggle) summary{margin-bottom:.6em;}code,pre,a.test-arrow,.code-header{font-family:"Source Code Pro",monospace;}.docblock code,.docblock-short code{border-radius:3px;padding:0 0.125em;}.docblock pre code,.docblock-short pre code{padding:0;}pre{padding:14px;}.item-decl pre{overflow-x:auto;}.source .content pre{padding:20px;}img{max-width:100%;}.source .content{overflow:visible;}.sub-logo-container,.logo-container{line-height:0;}.sub-logo-container>img{height:60px;width:60px;object-fit:contain;}.rust-logo{filter:var(--rust-logo-filter);}.sidebar,.mobile-topbar,.sidebar-menu-toggle{background-color:var(--sidebar-background-color);}.sidebar{font-size:0.875rem;flex:0 0 200px;overflow-y:scroll;position:sticky;height:100vh;top:0;left:0;}.rustdoc.source .sidebar{flex-basis:50px;border-right:1px solid;overflow-x:hidden;overflow-y:hidden;}.source .sidebar,#sidebar-toggle,#source-sidebar{background-color:var(--sidebar-background-color);}#sidebar-toggle>button:hover,#sidebar-toggle>button:focus{background-color:var(--sidebar-background-color-hover);}.source .sidebar>*:not(#sidebar-toggle){visibility:hidden;}.source-sidebar-expanded .source .sidebar{overflow-y:auto;flex-basis:300px;}.source-sidebar-expanded .source .sidebar>*:not(#sidebar-toggle){visibility:visible;}#all-types{margin-top:1em;}*{scrollbar-width:initial;scrollbar-color:var(--scrollbar-color);}.sidebar{scrollbar-width:thin;scrollbar-color:var(--scrollbar-color);}::-webkit-scrollbar{width:12px;}.sidebar::-webkit-scrollbar{width:8px;}::-webkit-scrollbar-track{-webkit-box-shadow:inset 0;background-color:var(--scrollbar-track-background-color);}.sidebar::-webkit-scrollbar-track{background-color:var(--scrollbar-track-background-color);}::-webkit-scrollbar-thumb,.sidebar::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb-background-color);}.hidden{display:none !important;}.sidebar .logo-container{margin-top:10px;margin-bottom:10px;text-align:center;}.version{overflow-wrap:break-word;}.logo-container>img{height:100px;width:100px;}ul.block,.block li{padding:0;margin:0;list-style:none;}.sidebar-elems a,.sidebar>h2 a{display:block;padding:0.25rem;margin-left:-0.25rem;}.sidebar h2{overflow-wrap:anywhere;padding:0;margin:0.7rem 0;}.sidebar h3{font-size:1.125rem;padding:0;margin:0;}.sidebar-elems,.sidebar>h2{padding-left:24px;}.sidebar a,.sidebar .current{color:var(--sidebar-link-color);}.sidebar .current,.sidebar a:hover{background-color:var(--sidebar-current-link-background-color);}.sidebar-elems .block{margin-bottom:2em;}.sidebar-elems .block li a{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;}.mobile-topbar{display:none;}.source .content pre.rust{overflow:auto;padding-left:0;}.rustdoc .example-wrap{display:flex;position:relative;margin-bottom:10px;}.rustdoc .example-wrap:last-child{margin-bottom:0px;}.rustdoc .example-wrap>pre{margin:0;flex-grow:1;overflow-x:auto;}.rustdoc .example-wrap>pre.example-line-numbers,.rustdoc .example-wrap>pre.src-line-numbers{flex-grow:0;overflow:initial;text-align:right;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;}.example-line-numbers{border:1px solid;padding:13px 8px;border-top-left-radius:5px;border-bottom-left-radius:5px;border-color:var(--example-line-numbers-border-color);}.src-line-numbers a,.src-line-numbers span{color:var(--src-line-numbers-span-color);}.src-line-numbers :target{background-color:transparent;border-right:none;padding-right:0;}.src-line-numbers .line-highlighted{background-color:var(--src-line-number-highlighted-background-color);}.search-loading{text-align:center;}.docblock-short{overflow-wrap:break-word;overflow-wrap:anywhere;overflow:hidden;text-overflow:ellipsis;}.docblock>:not(pre)>code,.docblock-short>code{white-space:pre-wrap;}.top-doc .docblock h2{font-size:1.375rem;}.top-doc .docblock h3{font-size:1.25rem;}.top-doc .docblock h4,.top-doc .docblock h5{font-size:1.125rem;}.top-doc .docblock h6{font-size:1rem;}.docblock h5{font-size:1rem;}.docblock h6{font-size:0.875rem;}.docblock{margin-left:24px;position:relative;}.docblock>:not(.more-examples-toggle):not(.example-wrap){max-width:100%;overflow-x:auto;}.out-of-band{flex-grow:0;font-size:1.125rem;}.docblock code,.docblock-short code,pre,.rustdoc.source .example-wrap{background-color:var(--code-block-background-color);}#main-content{position:relative;}.docblock table{margin:.5em 0;border-collapse:collapse;}.docblock table td,.docblock table th{padding:.5em;border:1px solid var(--border-color);}.docblock table tbody tr:nth-child(2n){background:var(--table-alt-row-background-color);}.method .where,.fn .where,.where.fmt-newline{display:block;font-size:0.875rem;}.item-info{display:block;margin-left:24px;}.item-info code{font-size:0.875rem;}#main-content>.item-info{margin-left:0;}nav.sub{flex-grow:1;flex-flow:row nowrap;margin:4px 0 25px 0;display:flex;align-items:center;}.search-form{position:relative;display:flex;height:34px;flex-grow:1;}.source nav.sub{margin:0 0 15px 0;}.source .search-form{margin-left:32px;}a{text-decoration:none;}.small-section-header{display:block;position:relative;}.small-section-header:hover>.anchor{display:initial;}.impl:hover>.anchor,.trait-impl:hover>.anchor,.variant:hover>.anchor{display:inline-block;position:absolute;}.anchor{display:none;position:absolute;left:-0.5em;background:none !important;}.anchor.field{left:-5px;}.small-section-header>.anchor{left:-15px;padding-right:8px;}h2.small-section-header>.anchor{padding-right:6px;}.main-heading a:hover,.example-wrap>pre.rust a:hover,.all-items a:hover,.docblock a:not(.test-arrow):not(.scrape-help):hover,.docblock-short a:not(.test-arrow):not(.scrape-help):hover,.item-info a{text-decoration:underline;}.crate.block a.current{font-weight:500;}table,.item-table{overflow-wrap:break-word;}.item-table{display:table;}.item-row{display:table-row;}.item-left,.item-right{display:table-cell;}.item-left{padding-right:1.25rem;}.search-results-title{margin-top:0;white-space:nowrap;display:flex;align-items:baseline;}#crate-search-div{position:relative;min-width:5em;}#crate-search{min-width:115px;padding:0 23px 0 4px;max-width:100%;text-overflow:ellipsis;border:1px solid var(--border-color);border-radius:4px;outline:none;cursor:pointer;-moz-appearance:none;-webkit-appearance:none;text-indent:0.01px;background-color:var(--main-background-color);color:inherit;line-height:1.5;font-weight:500;}#crate-search:hover,#crate-search:focus{border-color:var(--crate-search-hover-border);}@-moz-document url-prefix(){#crate-search{padding-left:0px;padding-right:19px;}}#crate-search-div::after{pointer-events:none;width:100%;height:100%;position:absolute;top:0;left:0;content:"";background-repeat:no-repeat;background-size:20px;background-position:calc(100% - 2px) 56%;background-image:url("down-arrow-927217e04c7463ac.svg");filter:var(--crate-search-div-filter);}#crate-search-div:hover::after,#crate-search-div:focus-within::after{filter:var(--crate-search-div-hover-filter);}#crate-search>option{font-size:1rem;}.search-input{-webkit-appearance:none;outline:none;border:1px solid var(--border-color);border-radius:2px;padding:8px;font-size:1rem;flex-grow:1;background-color:var(--button-background-color);color:var(--search-color);}.search-input:focus{border-color:var(--search-input-focused-border-color);}.search-results{display:none;}.search-results.active{display:block;}.search-results>a{display:flex;margin-left:2px;margin-right:2px;border-bottom:1px solid var(--search-result-border-color);gap:1em;}.search-results>a>div{flex:1;}.search-results>a>div.desc{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;}.search-results a:hover,.search-results a:focus{background-color:var(--search-result-link-focus-background-color);}.search-results .result-name span.alias{color:var(--search-results-alias-color);}.search-results .result-name span.grey{color:var(--search-results-grey-color);}.popover{position:absolute;top:100%;right:0;z-index:2;display:block;margin-top:7px;border-radius:3px;border:1px solid var(--border-color);--popover-arrow-offset:11px;}.popover::before{content:'';position:absolute;right:var(--popover-arrow-offset);border:solid var(--border-color);border-width:1px 1px 0 0;padding:4px;transform:rotate(-45deg);top:-5px;}.popover,.popover::before{background-color:var(--main-background-color);color:var(--main-color);}#help.popover{max-width:600px;--popover-arrow-offset:48px;}#help dt{float:left;clear:left;margin-right:0.5rem;}#help span.top,#help span.bottom{text-align:center;display:block;font-size:1.125rem;}#help span.top{margin:10px 0;border-bottom:1px solid var(--border-color);padding-bottom:4px;margin-bottom:6px;}#help span.bottom{clear:both;border-top:1px solid var(--border-color);}.side-by-side>div{width:50%;float:left;padding:0 20px 20px 17px;}.item-info .stab{width:fit-content;min-height:36px;display:flex;align-items:center;white-space:pre-wrap;}.stab{padding:3px;margin-bottom:5px;font-size:0.875rem;font-weight:normal;color:var(--main-color);background-color:var(--stab-background-color);}.stab.portability>code{background:none;color:var(--stab-code-color);}.stab .emoji{font-size:1.25rem;margin-right:0.3rem;}.docblock .stab{padding:0 0.125em;margin-bottom:0;}.emoji{text-shadow:1px 0 0 black,-1px 0 0 black,0 1px 0 black,0 -1px 0 black;}.item-left .stab{border-radius:3px;display:inline-block;line-height:1.2;margin-bottom:0;margin-left:0.3125em;padding:2px;vertical-align:text-bottom;}.module-item.unstable,.import-item.unstable{opacity:0.65;}.since{font-weight:normal;font-size:initial;}.rightside{padding-left:12px;float:right;}.rightside:not(a),.out-of-band{color:var(--right-side-color);}pre.rust{tab-size:4;-moz-tab-size:4;}pre.rust .kw{color:var(--code-highlight-kw-color);}pre.rust .kw-2{color:var(--code-highlight-kw-2-color);}pre.rust .lifetime{color:var(--code-highlight-lifetime-color);}pre.rust .prelude-ty{color:var(--code-highlight-prelude-color);}pre.rust .prelude-val{color:var(--code-highlight-prelude-val-color);}pre.rust .string{color:var(--code-highlight-string-color);}pre.rust .number{color:var(--code-highlight-number-color);}pre.rust .bool-val{color:var(--code-highlight-literal-color);}pre.rust .self{color:var(--code-highlight-self-color);}pre.rust .attr{color:var(--code-highlight-attribute-color);}pre.rust .macro,pre.rust .macro-nonterminal{color:var(--code-highlight-macro-color);}pre.rust .question-mark{font-weight:bold;color:var(--code-highlight-question-mark-color);}pre.rust .comment{color:var(--code-highlight-comment-color);}pre.rust .doccomment{color:var(--code-highlight-doc-comment-color);}.example-wrap.compile_fail,.example-wrap.should_panic{border-left:2px solid var(--codeblock-error-color);}.ignore.example-wrap{border-left:2px solid var(--codeblock-ignore-color);}.example-wrap.compile_fail:hover,.example-wrap.should_panic:hover{border-left:2px solid var(--codeblock-error-hover-color);}.example-wrap.ignore:hover{border-left:2px solid var(--codeblock-ignore-hover-color);}.example-wrap.compile_fail .tooltip,.example-wrap.should_panic .tooltip{color:var(--codeblock-error-color);}.example-wrap.ignore .tooltip{color:var(--codeblock-ignore-color);}.example-wrap.compile_fail:hover .tooltip,.example-wrap.should_panic:hover .tooltip{color:var(--codeblock-error-hover-color);}.example-wrap.ignore:hover .tooltip{color:var(--codeblock-ignore-hover-color);}.example-wrap .tooltip{position:absolute;display:block;left:-25px;top:5px;}.example-wrap .tooltip::after{display:none;text-align:center;padding:5px 3px 3px 3px;border-radius:6px;margin-left:5px;font-size:1rem;border:1px solid var(--border-color);position:absolute;width:max-content;top:-2px;z-index:1;background-color:var(--tooltip-background-color);color:var(--tooltip-color);}.example-wrap .tooltip::before{content:" ";position:absolute;top:50%;left:16px;margin-top:-5px;display:none;z-index:1;border:5px solid transparent;border-right-color:var(--tooltip-background-color);}.example-wrap.ignore .tooltip::after{content:"This example is not tested";}.example-wrap.compile_fail .tooltip::after{content:"This example deliberately fails to compile";}.example-wrap.should_panic .tooltip::after{content:"This example panics";}.example-wrap.edition .tooltip::after{content:"This code runs with edition " attr(data-edition);}.example-wrap .tooltip:hover::before,.example-wrap .tooltip:hover::after{display:inline;}.example-wrap.compile_fail .tooltip,.example-wrap.should_panic .tooltip,.example-wrap.ignore .tooltip{font-weight:bold;font-size:1.25rem;}a.test-arrow{visibility:hidden;position:absolute;padding:5px 10px 5px 10px;border-radius:5px;font-size:1.375rem;top:5px;right:5px;z-index:1;color:var(--test-arrow-color);background-color:var(--test-arrow-background-color);}a.test-arrow:hover{color:var(--test-arrow-hover-color);background-color:var(--test-arrow-hover-background-color);}.example-wrap:hover .test-arrow{visibility:visible;}.code-attribute{font-weight:300;color:var(--code-attribute-color);}.item-spacer{width:100%;height:12px;}.out-of-band>span.since{font-size:1.25rem;}.sub-variant h4{font-size:1rem;font-weight:400;margin-top:0;margin-bottom:0;}.sub-variant{margin-left:24px;margin-bottom:40px;}.sub-variant>.sub-variant-field{margin-left:24px;}:target{padding-right:3px;background-color:var(--target-background-color);border-right:3px solid var(--target-border-color);}.notable-traits{color:inherit;margin-right:15px;position:relative;}.notable-traits:hover::after{position:absolute;top:calc(100% - 10px);left:-15px;right:-15px;height:20px;content:"\00a0";}.notable .docblock{margin:0.25em 0.5em;}.notable .docblock pre,.notable .docblock code{background:transparent;margin:0;padding:0;font-size:1.25rem;white-space:pre-wrap;}.search-failed{text-align:center;margin-top:20px;display:none;}.search-failed.active{display:block;}.search-failed>ul{text-align:left;max-width:570px;margin-left:auto;margin-right:auto;}#titles{display:flex;flex-direction:row;gap:1px;margin-bottom:4px;}#titles>button{text-align:center;font-size:1.125rem;border:0;border-top:2px solid;flex:1;line-height:1.5;color:inherit;}#titles>button>div.count{display:inline-block;font-size:1rem;}#sidebar-toggle{position:sticky;top:0;left:0;font-size:1.25rem;border-bottom:1px solid;display:flex;height:40px;justify-content:stretch;align-items:stretch;z-index:10;}#source-sidebar{width:100%;overflow:auto;}#source-sidebar>.title{font-size:1.5rem;text-align:center;border-bottom:1px solid var(--border-color);margin-bottom:6px;}#source-sidebar div.files>a:hover,details.dir-entry summary:hover,#source-sidebar div.files>a:focus,details.dir-entry summary:focus{background-color:var(--source-sidebar-background-hover);}#source-sidebar div.files>a.selected{background-color:var(--source-sidebar-background-selected);}#sidebar-toggle>button{font-size:inherit;font-weight:bold;background:none;color:inherit;text-align:center;border:none;outline:none;flex:1 1;-webkit-appearance:none;opacity:1;}#settings-menu,#help-button{margin-left:4px;display:flex;}#settings-menu>a,#help-button>a,#copy-path{width:33px;}#settings-menu>a,#help-button>a{display:flex;align-items:center;justify-content:center;background-color:var(--button-background-color);border:1px solid var(--border-color);border-radius:2px;color:var(--settings-button-color);font-size:20px;}#settings-menu>a:hover,#settings-menu>a:focus,#help-button>a:hover,#help-button>a:focus{border-color:var(--settings-button-border-focus);}#copy-path{color:var(--copy-path-button-color);background:var(--main-background-color);height:34px;margin-left:10px;padding:0;padding-left:2px;border:0;}#copy-path>img{filter:var(--copy-path-img-filter);}#copy-path:hover>img{filter:var(--copy-path-img-hover-filter);}@keyframes rotating{from{transform:rotate(0deg);}to{transform:rotate(360deg);}}#settings-menu.rotate>a img{animation:rotating 2s linear infinite;}kbd{display:inline-block;padding:3px 5px;font:15px monospace;line-height:10px;vertical-align:middle;border:solid 1px var(--border-color);border-radius:3px;cursor:default;color:var(--kbd--color);background-color:var(--kbd-background);box-shadow:inset 0 -1px 0 var(--kbd-box-shadow-color);}ul.all-items>li{list-style:none;}details.dir-entry{padding-left:4px;}details.dir-entry>summary::after{content:" ►";position:absolute;left:-15px;top:0px;font-size:80%;padding:2px 0px;width:25px;}details[open].dir-entry>summary::after{content:" ▼";}details.dir-entry>summary::-webkit-details-marker,details.dir-entry>summary::marker{display:none;}details.dir-entry>summary{margin:0 0 0 13px;list-style:none;cursor:pointer;position:relative;}details.dir-entry div.folders,details.dir-entry div.files{padding-left:23px;}details.dir-entry a{display:block;}details.rustdoc-toggle{contain:layout;position:relative;}details.rustdoc-toggle>summary.hideme{cursor:pointer;font-size:1rem;}details.rustdoc-toggle>summary{list-style:none;outline:none;}details.rustdoc-toggle>summary::-webkit-details-marker,details.rustdoc-toggle>summary::marker{display:none;}details.rustdoc-toggle>summary.hideme>span{margin-left:9px;}details.rustdoc-toggle>summary::before{background:url("toggle-plus-1092eb4930d581b0.svg") no-repeat top left;content:"";cursor:pointer;width:16px;height:16px;display:inline-block;vertical-align:middle;opacity:.5;filter:var(--toggle-filter);}details.rustdoc-toggle>summary.hideme>span,.more-examples-toggle summary,.more-examples-toggle .hide-more{color:var(--toggles-color);}details.rustdoc-toggle>summary::after{content:"Expand";overflow:hidden;width:0;height:0;position:absolute;}details.rustdoc-toggle>summary.hideme::after{content:"";}details.rustdoc-toggle>summary:focus::before,details.rustdoc-toggle>summary:hover::before{opacity:1;}details.rustdoc-toggle>summary:focus-visible::before{outline:1px dotted #000;outline-offset:1px;}details.non-exhaustive{margin-bottom:8px;}details.rustdoc-toggle>summary.hideme::before{position:relative;}details.rustdoc-toggle>summary:not(.hideme)::before{position:absolute;left:-24px;top:4px;}.impl-items>details.rustdoc-toggle>summary:not(.hideme)::before{position:absolute;left:-24px;}details.rustdoc-toggle[open] >summary.hideme{position:absolute;}details.rustdoc-toggle[open] >summary.hideme>span{display:none;}details.rustdoc-toggle[open] >summary::before{background:url("toggle-minus-31bbd6e4c77f5c96.svg") no-repeat top left;}details.rustdoc-toggle[open] >summary::after{content:"Collapse";}.docblock summary>*{display:inline-block;}.docblock>.example-wrap:first-child .tooltip{margin-top:16px;}@media (max-width:700px){*[id]{scroll-margin-top:45px;}.rustdoc{display:block;}main{padding-left:15px;padding-top:0px;}.main-heading{flex-direction:column;}.out-of-band{text-align:left;margin-left:initial;padding:initial;}.out-of-band .since::before{content:"Since ";}.sidebar .sidebar-logo,.sidebar .location{display:none;}.sidebar{position:fixed;top:45px;left:-1000px;z-index:11;height:calc(100vh - 45px);width:200px;}.source main,.rustdoc.source .sidebar{top:0;padding:0;height:100vh;border:0;}.sidebar.shown,.source-sidebar-expanded .source .sidebar,.sidebar:focus-within{left:0;}.rustdoc.source>.sidebar{width:0;}.mobile-topbar h2{padding-bottom:0;margin:auto 0.5em auto auto;overflow:hidden;font-size:24px;}.mobile-topbar h2 a{display:block;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;}.mobile-topbar .logo-container>img{max-width:35px;max-height:35px;margin:5px 0 5px 20px;}.mobile-topbar{display:flex;flex-direction:row;position:sticky;z-index:10;font-size:2rem;height:45px;width:100%;left:0;top:0;}.sidebar-menu-toggle{width:45px;font-size:32px;border:none;color:var(--main-color);}.sidebar-elems{margin-top:1em;}.content{margin-left:0px;}.anchor{display:none !important;}#titles>button>div.count{display:block;}#main-content>details.rustdoc-toggle>summary::before,#main-content>div>details.rustdoc-toggle>summary::before{left:-11px;}#sidebar-toggle{position:fixed;left:1px;top:100px;width:30px;font-size:1.5rem;text-align:center;padding:0;z-index:10;border-top-right-radius:3px;border-bottom-right-radius:3px;border:1px solid;border-left:0;}.source-sidebar-expanded #sidebar-toggle{left:unset;top:unset;width:unset;border-top-right-radius:unset;border-bottom-right-radius:unset;position:sticky;border:0;border-bottom:1px solid;}#copy-path,#help-button{display:none;}.item-table,.item-row,.item-left,.item-right,.search-results>a,.search-results>a>div{display:block;}.search-results>a{padding:5px 0px;}.search-results>a>div.desc,.item-right{padding-left:2em;}.source-sidebar-expanded .source .sidebar{max-width:100vw;width:100vw;}details.rustdoc-toggle:not(.top-doc)>summary{margin-left:10px;}.impl-items>details.rustdoc-toggle>summary:not(.hideme)::before,#main-content>details.rustdoc-toggle:not(.top-doc)>summary::before,#main-content>div>details.rustdoc-toggle>summary::before{left:-11px;}.impl-items>.item-info{margin-left:34px;}.source nav.sub{margin:0;padding:8px;}}@media (min-width:701px){.scraped-example-title{position:absolute;z-index:10;background:var(--main-background-color);bottom:8px;right:5px;padding:2px 4px;box-shadow:0 0 4px var(--main-background-color);}}@media print{nav.sidebar,nav.sub,.out-of-band,a.srclink,#copy-path,details.rustdoc-toggle[open] >summary::before,details.rustdoc-toggle>summary::before,details.rustdoc-toggle.top-doc>summary{display:none;}.docblock{margin-left:0;}main{padding:10px;}}@media (max-width:464px){.docblock{margin-left:12px;}.docblock code{overflow-wrap:break-word;overflow-wrap:anywhere;}nav.sub{flex-direction:column;}.search-form{align-self:stretch;}.sub-logo-container>img{height:35px;width:35px;}#sidebar-toggle{top:10px;}.source-sidebar-expanded #sidebar-toggle{top:unset;}}.variant,.implementors-toggle>summary,.impl,#implementors-list>.docblock,.impl-items>section,.impl-items>.rustdoc-toggle>summary,.methods>section,.methods>.rustdoc-toggle>summary{margin-bottom:0.75em;}.variants>.docblock,.impl-items>.rustdoc-toggle[open]:not(:last-child),.methods>.rustdoc-toggle[open]:not(:last-child),.implementors-toggle[open]:not(:last-child){margin-bottom:2em;}#trait-implementations-list .impl-items>.rustdoc-toggle:not(:last-child),#synthetic-implementations-list .impl-items>.rustdoc-toggle:not(:last-child),#blanket-implementations-list .impl-items>.rustdoc-toggle:not(:last-child){margin-bottom:1em;}.scraped-example-list .scrape-help{margin-left:10px;padding:0 4px;font-weight:normal;font-size:12px;position:relative;bottom:1px;border-width:1px;border-style:solid;border-radius:50px;}.scraped-example{position:relative;}.scraped-example .code-wrapper{position:relative;display:flex;flex-direction:row;flex-wrap:wrap;width:100%;}.scraped-example:not(.expanded) .code-wrapper{max-height:calc(1.5em * 5 + 10px);}.scraped-example:not(.expanded) .code-wrapper pre{overflow-y:hidden;padding-bottom:0;max-height:calc(1.5em * 5 + 10px);}.more-scraped-examples .scraped-example:not(.expanded) .code-wrapper,.more-scraped-examples .scraped-example:not(.expanded) .code-wrapper pre{max-height:calc(1.5em * 10 + 10px);}.scraped-example .code-wrapper .next,.scraped-example .code-wrapper .prev,.scraped-example .code-wrapper .expand{color:var(--main-color);position:absolute;top:0.25em;z-index:1;padding:0;background:none;border:none;-webkit-appearance:none;opacity:1;}.scraped-example .code-wrapper .prev{right:2.25em;}.scraped-example .code-wrapper .next{right:1.25em;}.scraped-example .code-wrapper .expand{right:0.25em;}.scraped-example:not(.expanded) .code-wrapper:before,.scraped-example:not(.expanded) .code-wrapper:after{content:" ";width:100%;height:5px;position:absolute;z-index:1;}.scraped-example:not(.expanded) .code-wrapper:before{top:0;}.scraped-example:not(.expanded) .code-wrapper:after{bottom:0;}.scraped-example .code-wrapper .src-line-numbers{margin:0;padding:14px 0;}.scraped-example .code-wrapper .src-line-numbers a,.scraped-example .code-wrapper .src-line-numbers span{padding:0 14px;}.scraped-example .code-wrapper .example-wrap{display:grid;grid-template-columns:max-content auto;width:100%;overflow-x:auto;overflow-y:hidden;margin-bottom:0;}.scraped-example:not(.expanded) .code-wrapper .example-wrap{overflow-x:hidden;}.scraped-example .code-wrapper .example-wrap pre.rust{overflow-x:inherit;width:inherit;overflow-y:hidden;}.more-examples-toggle{max-width:calc(100% + 25px);margin-top:10px;margin-left:-25px;}.more-examples-toggle .hide-more{margin-left:25px;margin-bottom:5px;cursor:pointer;}.more-scraped-examples{margin-left:5px;display:flex;flex-direction:row;}.more-scraped-examples-inner{width:calc(100% - 20px);}.toggle-line{align-self:stretch;margin-right:10px;margin-top:5px;padding:0 4px;cursor:pointer;}.toggle-line-inner{min-width:2px;height:100%;}.more-scraped-examples .scraped-example{margin-bottom:20px;}.more-scraped-examples .scraped-example:last-child{margin-bottom:0;}.example-links a{margin-top:20px;}.example-links ul{margin-bottom:0;} \ No newline at end of file diff --git a/docs/static.files/rustdoc-ac92e1bbe349e143.css b/docs/static.files/rustdoc-ac92e1bbe349e143.css new file mode 100644 index 0000000000..27e3d9d5ac --- /dev/null +++ b/docs/static.files/rustdoc-ac92e1bbe349e143.css @@ -0,0 +1,18 @@ + :root{--nav-sub-mobile-padding:8px;--search-typename-width:6.75rem;--desktop-sidebar-width:200px;--src-sidebar-width:300px;--desktop-sidebar-z-index:100;}@font-face {font-family:'Fira Sans';font-style:normal;font-weight:400;src:local('Fira Sans'),url("FiraSans-Regular-018c141bf0843ffd.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Fira Sans';font-style:normal;font-weight:500;src:local('Fira Sans Medium'),url("FiraSans-Medium-8f9a781e4970d388.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:normal;font-weight:400;src:local('Source Serif 4'),url("SourceSerif4-Regular-46f98efaafac5295.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:italic;font-weight:400;src:local('Source Serif 4 Italic'),url("SourceSerif4-It-acdfaf1a8af734b1.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:normal;font-weight:700;src:local('Source Serif 4 Bold'),url("SourceSerif4-Bold-a2c9cd1067f8b328.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:normal;font-weight:400;src:url("SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:italic;font-weight:400;src:url("SourceCodePro-It-1cc31594bf4f1f79.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:normal;font-weight:600;src:url("SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'NanumBarunGothic';src:url("NanumBarunGothic-0f09457c7a19b7c6.ttf.woff2") format("woff2");font-display:swap;unicode-range:U+AC00-D7AF,U+1100-11FF,U+3130-318F,U+A960-A97F,U+D7B0-D7FF;}*{box-sizing:border-box;}body{font:1rem/1.5 "Source Serif 4",NanumBarunGothic,serif;margin:0;position:relative;overflow-wrap:break-word;overflow-wrap:anywhere;font-feature-settings:"kern","liga";background-color:var(--main-background-color);color:var(--main-color);}h1{font-size:1.5rem;}h2{font-size:1.375rem;}h3{font-size:1.25rem;}h1,h2,h3,h4,h5,h6{font-weight:500;}h1,h2,h3,h4{margin:25px 0 15px 0;padding-bottom:6px;}.docblock h3,.docblock h4,h5,h6{margin:15px 0 5px 0;}.docblock>h2:first-child,.docblock>h3:first-child,.docblock>h4:first-child,.docblock>h5:first-child,.docblock>h6:first-child{margin-top:0;}.main-heading h1{margin:0;padding:0;flex-grow:1;overflow-wrap:break-word;overflow-wrap:anywhere;}.main-heading{display:flex;flex-wrap:wrap;padding-bottom:6px;margin-bottom:15px;}.content h2,.top-doc .docblock>h3,.top-doc .docblock>h4{border-bottom:1px solid var(--headings-border-bottom-color);}h1,h2{line-height:1.25;padding-top:3px;padding-bottom:9px;}h3.code-header{font-size:1.125rem;}h4.code-header{font-size:1rem;}.code-header{font-weight:600;margin:0;padding:0;white-space:pre-wrap;}#crate-search,h1,h2,h3,h4,h5,h6,.sidebar,.mobile-topbar,.search-input,.search-results .result-name,.item-name>a,.out-of-band,span.since,a.src,#help-button>a,summary.hideme,.scraped-example-list,ul.all-items{font-family:"Fira Sans",Arial,NanumBarunGothic,sans-serif;}#toggle-all-docs,a.anchor,.section-header a,#src-sidebar a,.rust a,.sidebar h2 a,.sidebar h3 a,.mobile-topbar h2 a,h1 a,.search-results a,.stab,.result-name i{color:var(--main-color);}span.enum,a.enum,span.struct,a.struct,span.union,a.union,span.primitive,a.primitive,span.type,a.type,span.foreigntype,a.foreigntype{color:var(--type-link-color);}span.trait,a.trait,span.traitalias,a.traitalias{color:var(--trait-link-color);}span.associatedtype,a.associatedtype,span.constant,a.constant,span.static,a.static{color:var(--assoc-item-link-color);}span.fn,a.fn,span.method,a.method,span.tymethod,a.tymethod{color:var(--function-link-color);}span.attr,a.attr,span.derive,a.derive,span.macro,a.macro{color:var(--macro-link-color);}span.mod,a.mod{color:var(--mod-link-color);}span.keyword,a.keyword{color:var(--keyword-link-color);}a{color:var(--link-color);text-decoration:none;}ol,ul{padding-left:24px;}ul ul,ol ul,ul ol,ol ol{margin-bottom:.625em;}p,.docblock>.warning{margin:0 0 .75em 0;}p:last-child,.docblock>.warning:last-child{margin:0;}button{padding:1px 6px;cursor:pointer;}button#toggle-all-docs{padding:0;background:none;border:none;-webkit-appearance:none;opacity:1;}.rustdoc{display:flex;flex-direction:row;flex-wrap:nowrap;}main{position:relative;flex-grow:1;padding:10px 15px 40px 45px;min-width:0;}.src main{padding:15px;}.width-limiter{max-width:960px;margin-right:auto;}details:not(.toggle) summary{margin-bottom:.6em;}code,pre,a.test-arrow,.code-header{font-family:"Source Code Pro",monospace;}.docblock code,.docblock-short code{border-radius:3px;padding:0 0.125em;}.docblock pre code,.docblock-short pre code{padding:0;}pre{padding:14px;line-height:1.5;}pre.item-decl{overflow-x:auto;}.item-decl .type-contents-toggle{contain:initial;}.src .content pre{padding:20px;}.rustdoc.src .example-wrap pre.src-line-numbers{padding:20px 0 20px 4px;}img{max-width:100%;}.sub-logo-container,.logo-container{line-height:0;display:block;}.sub-logo-container{margin-right:32px;}.sub-logo-container>img{height:60px;width:60px;object-fit:contain;}.rust-logo{filter:var(--rust-logo-filter);}.sidebar{font-size:0.875rem;flex:0 0 var(--desktop-sidebar-width);width:var(--desktop-sidebar-width);overflow-y:scroll;overscroll-behavior:contain;position:sticky;height:100vh;top:0;left:0;z-index:var(--desktop-sidebar-z-index);}.rustdoc.src .sidebar{flex-basis:50px;border-right:1px solid;overflow-x:hidden;overflow-y:hidden;}.hide-sidebar .sidebar,.hide-sidebar .sidebar-resizer{display:none;}.sidebar-resizer{touch-action:none;width:9px;cursor:col-resize;z-index:calc(var(--desktop-sidebar-z-index) + 1);position:fixed;height:100%;left:calc(var(--desktop-sidebar-width) + 1px);}.rustdoc.src .sidebar-resizer{left:49px;}.src-sidebar-expanded .rustdoc.src .sidebar-resizer{left:var(--src-sidebar-width);}.sidebar-resizing{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;}.sidebar-resizing*{cursor:col-resize !important;}.sidebar-resizing .sidebar{position:fixed;}.sidebar-resizing>body{padding-left:var(--resizing-sidebar-width);}.sidebar-resizer:hover,.sidebar-resizer:active,.sidebar-resizer:focus,.sidebar-resizer.active{width:10px;margin:0;left:var(--desktop-sidebar-width);border-left:solid 1px var(--sidebar-resizer-hover);}.src-sidebar-expanded .rustdoc.src .sidebar-resizer:hover,.src-sidebar-expanded .rustdoc.src .sidebar-resizer:active,.src-sidebar-expanded .rustdoc.src .sidebar-resizer:focus,.src-sidebar-expanded .rustdoc.src .sidebar-resizer.active{left:calc(var(--src-sidebar-width) - 1px);}@media (pointer:coarse){.sidebar-resizer{display:none !important;}}.sidebar-resizer.active{padding:0 140px;width:2px;margin-left:-140px;border-left:none;}.sidebar-resizer.active:before{border-left:solid 2px var(--sidebar-resizer-active);display:block;height:100%;content:"";}.sidebar,.mobile-topbar,.sidebar-menu-toggle,#src-sidebar-toggle,#src-sidebar{background-color:var(--sidebar-background-color);}#src-sidebar-toggle>button:hover,#src-sidebar-toggle>button:focus{background-color:var(--sidebar-background-color-hover);}.src .sidebar>*:not(#src-sidebar-toggle){visibility:hidden;}.src-sidebar-expanded .src .sidebar{overflow-y:auto;flex-basis:var(--src-sidebar-width);width:var(--src-sidebar-width);}.src-sidebar-expanded .src .sidebar>*:not(#src-sidebar-toggle){visibility:visible;}#all-types{margin-top:1em;}*{scrollbar-width:initial;scrollbar-color:var(--scrollbar-color);}.sidebar{scrollbar-width:thin;scrollbar-color:var(--scrollbar-color);}::-webkit-scrollbar{width:12px;}.sidebar::-webkit-scrollbar{width:8px;}::-webkit-scrollbar-track{-webkit-box-shadow:inset 0;background-color:var(--scrollbar-track-background-color);}.sidebar::-webkit-scrollbar-track{background-color:var(--scrollbar-track-background-color);}::-webkit-scrollbar-thumb,.sidebar::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb-background-color);}.hidden{display:none !important;}.logo-container>img{height:48px;width:48px;}ul.block,.block li{padding:0;margin:0;list-style:none;}.sidebar-elems a,.sidebar>h2 a{display:block;padding:0.25rem;margin-left:-0.25rem;margin-right:0.25rem;}.sidebar h2{overflow-wrap:anywhere;padding:0;margin:0.7rem 0;}.sidebar h3{font-size:1.125rem;padding:0;margin:0;}.sidebar-elems,.sidebar>.version,.sidebar>h2{padding-left:24px;}.sidebar a{color:var(--sidebar-link-color);}.sidebar .current,.sidebar .current a,.sidebar-crate a.logo-container:hover+h2 a,.sidebar a:hover:not(.logo-container){background-color:var(--sidebar-current-link-background-color);}.sidebar-elems .block{margin-bottom:2em;}.sidebar-elems .block li a{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;}.sidebar-crate{display:flex;align-items:center;justify-content:center;margin:14px 32px 1rem;row-gap:10px;column-gap:32px;flex-wrap:wrap;}.sidebar-crate h2{flex-grow:1;margin:0 -8px;align-self:start;}.sidebar-crate .logo-container{margin:0 -16px 0 -16px;text-align:center;}.sidebar-crate h2 a{display:block;margin:0 calc(-24px + 0.25rem) 0 -0.5rem;padding:calc((16px - 0.57rem ) / 2 ) 0.25rem;padding-left:0.5rem;}.sidebar-crate h2 .version{display:block;font-weight:normal;font-size:1rem;overflow-wrap:break-word;margin-top:calc((-16px + 0.57rem ) / 2 );}.sidebar-crate+.version{margin-top:-1rem;margin-bottom:1rem;}.mobile-topbar{display:none;}.rustdoc .example-wrap{display:flex;position:relative;margin-bottom:10px;}.rustdoc .example-wrap:last-child{margin-bottom:0px;}.rustdoc .example-wrap pre{margin:0;flex-grow:1;}.rustdoc:not(.src) .example-wrap pre{overflow:auto hidden;}.rustdoc .example-wrap pre.example-line-numbers,.rustdoc .example-wrap pre.src-line-numbers{flex-grow:0;min-width:fit-content;overflow:initial;text-align:right;-webkit-user-select:none;user-select:none;padding:14px 8px;color:var(--src-line-numbers-span-color);}.rustdoc .example-wrap pre.src-line-numbers{padding:14px 0;}.src-line-numbers a,.src-line-numbers span{color:var(--src-line-numbers-span-color);padding:0 8px;}.src-line-numbers :target{background-color:transparent;border-right:none;padding:0 8px;}.src-line-numbers .line-highlighted{background-color:var(--src-line-number-highlighted-background-color);}.search-loading{text-align:center;}.docblock-short{overflow-wrap:break-word;overflow-wrap:anywhere;}.docblock :not(pre)>code,.docblock-short code{white-space:pre-wrap;}.top-doc .docblock h2{font-size:1.375rem;}.top-doc .docblock h3{font-size:1.25rem;}.top-doc .docblock h4,.top-doc .docblock h5{font-size:1.125rem;}.top-doc .docblock h6{font-size:1rem;}.docblock h5{font-size:1rem;}.docblock h6{font-size:0.875rem;}.docblock{margin-left:24px;position:relative;}.docblock>:not(.more-examples-toggle):not(.example-wrap){max-width:100%;overflow-x:auto;}.out-of-band{flex-grow:0;font-size:1.125rem;}.docblock code,.docblock-short code,pre,.rustdoc.src .example-wrap{background-color:var(--code-block-background-color);}#main-content{position:relative;}.docblock table{margin:.5em 0;border-collapse:collapse;}.docblock table td,.docblock table th{padding:.5em;border:1px solid var(--border-color);}.docblock table tbody tr:nth-child(2n){background:var(--table-alt-row-background-color);}div.where{white-space:pre-wrap;font-size:0.875rem;}.item-info{display:block;margin-left:24px;}.item-info code{font-size:0.875rem;}#main-content>.item-info{margin-left:0;}nav.sub{flex-grow:1;flex-flow:row nowrap;margin:4px 0 25px 0;display:flex;align-items:center;}.search-form{position:relative;display:flex;height:34px;flex-grow:1;}.src nav.sub{margin:0 0 15px 0;}.section-header{display:block;position:relative;}.section-header:hover>.anchor,.impl:hover>.anchor,.trait-impl:hover>.anchor,.variant:hover>.anchor{display:initial;}.anchor{display:none;position:absolute;left:-0.5em;background:none !important;}.anchor.field{left:-5px;}.section-header>.anchor{left:-15px;padding-right:8px;}h2.section-header>.anchor{padding-right:6px;}.main-heading a:hover,.example-wrap .rust a:hover,.all-items a:hover,.docblock a:not(.test-arrow):not(.scrape-help):not(.tooltip):hover,.docblock-short a:not(.test-arrow):not(.scrape-help):not(.tooltip):hover,.item-info a{text-decoration:underline;}.crate.block li.current a{font-weight:500;}table,.item-table{overflow-wrap:break-word;}.item-table{display:table;padding:0;margin:0;}.item-table>li{display:table-row;}.item-table>li>div{display:table-cell;}.item-table>li>.item-name{padding-right:1.25rem;}.search-results-title{margin-top:0;white-space:nowrap;display:flex;align-items:baseline;}#crate-search-div{position:relative;min-width:5em;}#crate-search{min-width:115px;padding:0 23px 0 4px;max-width:100%;text-overflow:ellipsis;border:1px solid var(--border-color);border-radius:4px;outline:none;cursor:pointer;-moz-appearance:none;-webkit-appearance:none;text-indent:0.01px;background-color:var(--main-background-color);color:inherit;line-height:1.5;font-weight:500;}#crate-search:hover,#crate-search:focus{border-color:var(--crate-search-hover-border);}#crate-search-div::after{pointer-events:none;width:100%;height:100%;position:absolute;top:0;left:0;content:"";background-repeat:no-repeat;background-size:20px;background-position:calc(100% - 2px) 56%;background-image:url('data:image/svg+xml, \ + ');filter:var(--crate-search-div-filter);}#crate-search-div:hover::after,#crate-search-div:focus-within::after{filter:var(--crate-search-div-hover-filter);}#crate-search>option{font-size:1rem;}.search-input{-webkit-appearance:none;outline:none;border:1px solid var(--border-color);border-radius:2px;padding:8px;font-size:1rem;flex-grow:1;background-color:var(--button-background-color);color:var(--search-color);}.search-input:focus{border-color:var(--search-input-focused-border-color);}.search-results{display:none;}.search-results.active{display:block;}.search-results>a{display:flex;margin-left:2px;margin-right:2px;border-bottom:1px solid var(--search-result-border-color);gap:1em;}.search-results>a>div.desc{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;flex:2;}.search-results a:hover,.search-results a:focus{background-color:var(--search-result-link-focus-background-color);}.search-results .result-name{display:flex;align-items:center;justify-content:start;flex:3;}.search-results .result-name .alias{color:var(--search-results-alias-color);}.search-results .result-name .grey{color:var(--search-results-grey-color);}.search-results .result-name .typename{color:var(--search-results-grey-color);font-size:0.875rem;width:var(--search-typename-width);}.search-results .result-name .path{word-break:break-all;max-width:calc(100% - var(--search-typename-width));display:inline-block;}.search-results .result-name .path>*{display:inline;}.popover{position:absolute;top:100%;right:0;z-index:calc(var(--desktop-sidebar-z-index) + 1);margin-top:7px;border-radius:3px;border:1px solid var(--border-color);background-color:var(--main-background-color);color:var(--main-color);--popover-arrow-offset:11px;}.popover::before{content:'';position:absolute;right:var(--popover-arrow-offset);border:solid var(--border-color);border-width:1px 1px 0 0;background-color:var(--main-background-color);padding:4px;transform:rotate(-45deg);top:-5px;}.setting-line{margin:1.2em 0.6em;}.setting-radio input,.setting-check input{margin-right:0.3em;height:1.2rem;width:1.2rem;border:2px solid var(--settings-input-border-color);outline:none;-webkit-appearance:none;cursor:pointer;}.setting-radio input{border-radius:50%;}.setting-radio span,.setting-check span{padding-bottom:1px;}.setting-radio{margin-top:0.1em;margin-bottom:0.1em;min-width:3.8em;padding:0.3em;display:inline-flex;align-items:center;cursor:pointer;}.setting-radio+.setting-radio{margin-left:0.5em;}.setting-check{margin-right:20px;display:flex;align-items:center;cursor:pointer;}.setting-radio input:checked{box-shadow:inset 0 0 0 3px var(--main-background-color);background-color:var(--settings-input-color);}.setting-check input:checked{background-color:var(--settings-input-color);border-width:1px;content:url('data:image/svg+xml,\ + \ + ');}.setting-radio input:focus,.setting-check input:focus{box-shadow:0 0 1px 1px var(--settings-input-color);}.setting-radio input:checked:focus{box-shadow:inset 0 0 0 3px var(--main-background-color),0 0 2px 2px var(--settings-input-color);}.setting-radio input:hover,.setting-check input:hover{border-color:var(--settings-input-color) !important;}#help.popover{max-width:600px;--popover-arrow-offset:48px;}#help dt{float:left;clear:left;margin-right:0.5rem;}#help span.top,#help span.bottom{text-align:center;display:block;font-size:1.125rem;}#help span.top{margin:10px 0;border-bottom:1px solid var(--border-color);padding-bottom:4px;margin-bottom:6px;}#help span.bottom{clear:both;border-top:1px solid var(--border-color);}.side-by-side>div{width:50%;float:left;padding:0 20px 20px 17px;}.item-info .stab{display:block;padding:3px;margin-bottom:5px;}.item-name .stab{margin-left:0.3125em;}.stab{padding:0 2px;font-size:0.875rem;font-weight:normal;color:var(--main-color);background-color:var(--stab-background-color);width:fit-content;white-space:pre-wrap;border-radius:3px;display:inline;vertical-align:baseline;}.stab.portability>code{background:none;color:var(--stab-code-color);}.stab .emoji,.item-info .stab::before{font-size:1.25rem;}.stab .emoji{margin-right:0.3rem;}.item-info .stab::before{content:"\0";width:0;display:inline-block;color:transparent;}.emoji{text-shadow:1px 0 0 black,-1px 0 0 black,0 1px 0 black,0 -1px 0 black;}.since{font-weight:normal;font-size:initial;}.rightside{padding-left:12px;float:right;}.rightside:not(a),.out-of-band{color:var(--right-side-color);}pre.rust{tab-size:4;-moz-tab-size:4;}pre.rust .kw{color:var(--code-highlight-kw-color);}pre.rust .kw-2{color:var(--code-highlight-kw-2-color);}pre.rust .lifetime{color:var(--code-highlight-lifetime-color);}pre.rust .prelude-ty{color:var(--code-highlight-prelude-color);}pre.rust .prelude-val{color:var(--code-highlight-prelude-val-color);}pre.rust .string{color:var(--code-highlight-string-color);}pre.rust .number{color:var(--code-highlight-number-color);}pre.rust .bool-val{color:var(--code-highlight-literal-color);}pre.rust .self{color:var(--code-highlight-self-color);}pre.rust .attr{color:var(--code-highlight-attribute-color);}pre.rust .macro,pre.rust .macro-nonterminal{color:var(--code-highlight-macro-color);}pre.rust .question-mark{font-weight:bold;color:var(--code-highlight-question-mark-color);}pre.rust .comment{color:var(--code-highlight-comment-color);}pre.rust .doccomment{color:var(--code-highlight-doc-comment-color);}.rustdoc.src .example-wrap pre.rust a{background:var(--codeblock-link-background);}.example-wrap.compile_fail,.example-wrap.should_panic{border-left:2px solid var(--codeblock-error-color);}.ignore.example-wrap{border-left:2px solid var(--codeblock-ignore-color);}.example-wrap.compile_fail:hover,.example-wrap.should_panic:hover{border-left:2px solid var(--codeblock-error-hover-color);}.example-wrap.ignore:hover{border-left:2px solid var(--codeblock-ignore-hover-color);}.example-wrap.compile_fail .tooltip,.example-wrap.should_panic .tooltip{color:var(--codeblock-error-color);}.example-wrap.ignore .tooltip{color:var(--codeblock-ignore-color);}.example-wrap.compile_fail:hover .tooltip,.example-wrap.should_panic:hover .tooltip{color:var(--codeblock-error-hover-color);}.example-wrap.ignore:hover .tooltip{color:var(--codeblock-ignore-hover-color);}.example-wrap .tooltip{position:absolute;display:block;left:-25px;top:5px;margin:0;line-height:1;}.example-wrap.compile_fail .tooltip,.example-wrap.should_panic .tooltip,.example-wrap.ignore .tooltip{font-weight:bold;font-size:1.25rem;}.content .docblock .warning{border-left:2px solid var(--warning-border-color);padding:14px;position:relative;overflow-x:visible !important;}.content .docblock .warning::before{color:var(--warning-border-color);content:"ⓘ";position:absolute;left:-25px;top:5px;font-weight:bold;font-size:1.25rem;}a.test-arrow{visibility:hidden;position:absolute;padding:5px 10px 5px 10px;border-radius:5px;font-size:1.375rem;top:5px;right:5px;z-index:1;color:var(--test-arrow-color);background-color:var(--test-arrow-background-color);}a.test-arrow:hover{color:var(--test-arrow-hover-color);background-color:var(--test-arrow-hover-background-color);}.example-wrap:hover .test-arrow{visibility:visible;}.code-attribute{font-weight:300;color:var(--code-attribute-color);}.item-spacer{width:100%;height:12px;display:block;}.out-of-band>span.since{font-size:1.25rem;}.sub-variant h4{font-size:1rem;font-weight:400;margin-top:0;margin-bottom:0;}.sub-variant{margin-left:24px;margin-bottom:40px;}.sub-variant>.sub-variant-field{margin-left:24px;}:target{padding-right:3px;background-color:var(--target-background-color);border-right:3px solid var(--target-border-color);}.code-header a.tooltip{color:inherit;margin-right:15px;position:relative;}.code-header a.tooltip:hover{color:var(--link-color);}a.tooltip:hover::after{position:absolute;top:calc(100% - 10px);left:-15px;right:-15px;height:20px;content:"\00a0";}.fade-out{opacity:0;transition:opacity 0.45s cubic-bezier(0,0,0.1,1.0);}.popover.tooltip .content{margin:0.25em 0.5em;}.popover.tooltip .content pre,.popover.tooltip .content code{background:transparent;margin:0;padding:0;font-size:1.25rem;white-space:pre-wrap;}.popover.tooltip .content>h3:first-child{margin:0 0 5px 0;}.search-failed{text-align:center;margin-top:20px;display:none;}.search-failed.active{display:block;}.search-failed>ul{text-align:left;max-width:570px;margin-left:auto;margin-right:auto;}#search-tabs{display:flex;flex-direction:row;gap:1px;margin-bottom:4px;}#search-tabs button{text-align:center;font-size:1.125rem;border:0;border-top:2px solid;flex:1;line-height:1.5;color:inherit;}#search-tabs button:not(.selected){background-color:var(--search-tab-button-not-selected-background);border-top-color:var(--search-tab-button-not-selected-border-top-color);}#search-tabs button:hover,#search-tabs button.selected{background-color:var(--search-tab-button-selected-background);border-top-color:var(--search-tab-button-selected-border-top-color);}#search-tabs .count{font-size:1rem;font-variant-numeric:tabular-nums;color:var(--search-tab-title-count-color);}#search .error code{border-radius:3px;background-color:var(--search-error-code-background-color);}.search-corrections{font-weight:normal;}#src-sidebar-toggle{position:sticky;top:0;left:0;font-size:1.25rem;border-bottom:1px solid;display:flex;height:40px;justify-content:stretch;align-items:stretch;z-index:10;}#src-sidebar{width:100%;overflow:auto;}#src-sidebar>.title{font-size:1.5rem;text-align:center;border-bottom:1px solid var(--border-color);margin-bottom:6px;}#src-sidebar div.files>a:hover,details.dir-entry summary:hover,#src-sidebar div.files>a:focus,details.dir-entry summary:focus{background-color:var(--src-sidebar-background-hover);}#src-sidebar div.files>a.selected{background-color:var(--src-sidebar-background-selected);}#src-sidebar-toggle>button{font-size:inherit;font-weight:bold;background:none;color:inherit;text-align:center;border:none;outline:none;flex:1 1;-webkit-appearance:none;opacity:1;}#settings-menu,#help-button{margin-left:4px;display:flex;}#sidebar-button{display:none;}.hide-sidebar #sidebar-button{display:flex;margin-right:4px;position:fixed;left:6px;height:34px;width:34px;background-color:var(--main-background-color);z-index:1;}#settings-menu>a,#help-button>a,#sidebar-button>a{display:flex;align-items:center;justify-content:center;background-color:var(--button-background-color);border:1px solid var(--border-color);border-radius:2px;color:var(--settings-button-color);font-size:20px;width:33px;}#settings-menu>a:hover,#settings-menu>a:focus,#help-button>a:hover,#help-button>a:focus,#sidebar-button>a:hover,#sidebar-button>a:focus{border-color:var(--settings-button-border-focus);}#sidebar-button>a:before{content:url('data:image/svg+xml,\ + \ + \ + ');width:22px;height:22px;}#copy-path{color:var(--copy-path-button-color);background:var(--main-background-color);height:34px;margin-left:10px;padding:0;padding-left:2px;border:0;width:33px;}#copy-path>img{filter:var(--copy-path-img-filter);}#copy-path:hover>img{filter:var(--copy-path-img-hover-filter);}@keyframes rotating{from{transform:rotate(0deg);}to{transform:rotate(360deg);}}#settings-menu.rotate>a img{animation:rotating 2s linear infinite;}kbd{display:inline-block;padding:3px 5px;font:15px monospace;line-height:10px;vertical-align:middle;border:solid 1px var(--border-color);border-radius:3px;color:var(--kbd-color);background-color:var(--kbd-background);box-shadow:inset 0 -1px 0 var(--kbd-box-shadow-color);}ul.all-items>li{list-style:none;}details.dir-entry{padding-left:4px;}details.dir-entry>summary{margin:0 0 0 -4px;padding:0 0 0 4px;cursor:pointer;}details.dir-entry div.folders,details.dir-entry div.files{padding-left:23px;}details.dir-entry a{display:block;}details.toggle{contain:layout;position:relative;}details.toggle>summary.hideme{cursor:pointer;font-size:1rem;}details.toggle>summary{list-style:none;outline:none;}details.toggle>summary::-webkit-details-marker,details.toggle>summary::marker{display:none;}details.toggle>summary.hideme>span{margin-left:9px;}details.toggle>summary::before{background:url('data:image/svg+xml,') no-repeat top left;content:"";cursor:pointer;width:16px;height:16px;display:inline-block;vertical-align:middle;opacity:.5;filter:var(--toggle-filter);}details.toggle>summary.hideme>span,.more-examples-toggle summary,.more-examples-toggle .hide-more{color:var(--toggles-color);}details.toggle>summary::after{content:"Expand";overflow:hidden;width:0;height:0;position:absolute;}details.toggle>summary.hideme::after{content:"";}details.toggle>summary:focus::before,details.toggle>summary:hover::before{opacity:1;}details.toggle>summary:focus-visible::before{outline:1px dotted #000;outline-offset:1px;}details.non-exhaustive{margin-bottom:8px;}details.toggle>summary.hideme::before{position:relative;}details.toggle>summary:not(.hideme)::before{position:absolute;left:-24px;top:4px;}.impl-items>details.toggle>summary:not(.hideme)::before{position:absolute;left:-24px;}details.toggle[open] >summary.hideme{position:absolute;}details.toggle[open] >summary.hideme>span{display:none;}details.toggle[open] >summary::before{background:url('data:image/svg+xml,') no-repeat top left;}details.toggle[open] >summary::after{content:"Collapse";}.docblock summary>*{display:inline-block;}.docblock>.example-wrap:first-child .tooltip{margin-top:16px;}@media (max-width:850px){#search-tabs .count{display:block;}}@media (max-width:700px){*[id]{scroll-margin-top:45px;}.hide-sidebar #sidebar-button{position:static;}.rustdoc{display:block;}main{padding-left:15px;padding-top:0px;}.main-heading{flex-direction:column;}.out-of-band{text-align:left;margin-left:initial;padding:initial;}.out-of-band .since::before{content:"Since ";}.sidebar .logo-container,.sidebar .location,.sidebar-resizer{display:none;}.sidebar{position:fixed;top:45px;left:-1000px;z-index:11;height:calc(100vh - 45px);width:200px;}.src main,.rustdoc.src .sidebar{top:0;padding:0;height:100vh;border:0;}.sidebar.shown,.src-sidebar-expanded .src .sidebar,.rustdoc:not(.src) .sidebar:focus-within{left:0;}.mobile-topbar h2{padding-bottom:0;margin:auto 0.5em auto auto;overflow:hidden;font-size:24px;}.mobile-topbar h2 a{display:block;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;}.mobile-topbar .logo-container>img{max-width:35px;max-height:35px;margin:5px 0 5px 20px;}.mobile-topbar{display:flex;flex-direction:row;position:sticky;z-index:10;font-size:2rem;height:45px;width:100%;left:0;top:0;}.hide-sidebar .mobile-topbar{display:none;}.sidebar-menu-toggle{width:45px;font-size:32px;border:none;color:var(--main-color);}.hide-sidebar .sidebar-menu-toggle{display:none;}.sidebar-elems{margin-top:1em;}.anchor{display:none !important;}#main-content>details.toggle>summary::before,#main-content>div>details.toggle>summary::before{left:-11px;}#src-sidebar-toggle{position:fixed;left:1px;top:100px;width:30px;font-size:1.5rem;padding:0;z-index:10;border-top-right-radius:3px;border-bottom-right-radius:3px;border:1px solid;border-left:0;}.src-sidebar-expanded #src-sidebar-toggle{left:unset;top:unset;width:unset;border-top-right-radius:unset;border-bottom-right-radius:unset;position:sticky;border:0;border-bottom:1px solid;}#copy-path,#help-button{display:none;}#sidebar-button>a:before{content:url('data:image/svg+xml,\ + \ + \ + ');width:22px;height:22px;}.item-table,.item-row,.item-table>li,.item-table>li>div,.search-results>a,.search-results>a>div{display:block;}.search-results>a{padding:5px 0px;}.search-results>a>div.desc,.item-table>li>div.desc{padding-left:2em;}.search-results .result-name{display:block;}.search-results .result-name .typename{width:initial;margin-right:0;}.search-results .result-name .typename,.search-results .result-name .path{display:inline;}.src-sidebar-expanded .src .sidebar{max-width:100vw;width:100vw;}details.toggle:not(.top-doc)>summary{margin-left:10px;}.impl-items>details.toggle>summary:not(.hideme)::before,#main-content>details.toggle:not(.top-doc)>summary::before,#main-content>div>details.toggle>summary::before{left:-11px;}.impl-items>.item-info{margin-left:34px;}.src nav.sub{margin:0;padding:var(--nav-sub-mobile-padding);}}@media (min-width:701px){.scraped-example-title{position:absolute;z-index:10;background:var(--main-background-color);bottom:8px;right:5px;padding:2px 4px;box-shadow:0 0 4px var(--main-background-color);}}@media print{nav.sidebar,nav.sub,.out-of-band,a.src,#copy-path,details.toggle[open] >summary::before,details.toggle>summary::before,details.toggle.top-doc>summary{display:none;}.docblock{margin-left:0;}main{padding:10px;}}@media (max-width:464px){.docblock{margin-left:12px;}.docblock code{overflow-wrap:break-word;overflow-wrap:anywhere;}nav.sub{flex-direction:column;}.search-form{align-self:stretch;}.sub-logo-container>img{height:35px;width:35px;margin-bottom:var(--nav-sub-mobile-padding);}}.variant,.implementors-toggle>summary,.impl,#implementors-list>.docblock,.impl-items>section,.impl-items>.toggle>summary,.methods>section,.methods>.toggle>summary{margin-bottom:0.75em;}.variants>.docblock,.implementors-toggle>.docblock,.impl-items>.toggle[open]:not(:last-child),.methods>.toggle[open]:not(:last-child),.implementors-toggle[open]:not(:last-child){margin-bottom:2em;}#trait-implementations-list .impl-items>.toggle:not(:last-child),#synthetic-implementations-list .impl-items>.toggle:not(:last-child),#blanket-implementations-list .impl-items>.toggle:not(:last-child){margin-bottom:1em;}.scraped-example-list .scrape-help{margin-left:10px;padding:0 4px;font-weight:normal;font-size:12px;position:relative;bottom:1px;border:1px solid var(--scrape-example-help-border-color);border-radius:50px;color:var(--scrape-example-help-color);}.scraped-example-list .scrape-help:hover{border-color:var(--scrape-example-help-hover-border-color);color:var(--scrape-example-help-hover-color);}.scraped-example{position:relative;}.scraped-example .code-wrapper{position:relative;display:flex;flex-direction:row;flex-wrap:wrap;width:100%;}.scraped-example:not(.expanded) .code-wrapper{max-height:calc(1.5em * 5 + 10px);}.scraped-example:not(.expanded) .code-wrapper pre{overflow-y:hidden;padding-bottom:0;max-height:calc(1.5em * 5 + 10px);}.more-scraped-examples .scraped-example:not(.expanded) .code-wrapper,.more-scraped-examples .scraped-example:not(.expanded) .code-wrapper pre{max-height:calc(1.5em * 10 + 10px);}.scraped-example .code-wrapper .next,.scraped-example .code-wrapper .prev,.scraped-example .code-wrapper .expand{color:var(--main-color);position:absolute;top:0.25em;z-index:1;padding:0;background:none;border:none;-webkit-appearance:none;opacity:1;}.scraped-example .code-wrapper .prev{right:2.25em;}.scraped-example .code-wrapper .next{right:1.25em;}.scraped-example .code-wrapper .expand{right:0.25em;}.scraped-example:not(.expanded) .code-wrapper::before,.scraped-example:not(.expanded) .code-wrapper::after{content:" ";width:100%;height:5px;position:absolute;z-index:1;}.scraped-example:not(.expanded) .code-wrapper::before{top:0;background:linear-gradient(to bottom,var(--scrape-example-code-wrapper-background-start),var(--scrape-example-code-wrapper-background-end));}.scraped-example:not(.expanded) .code-wrapper::after{bottom:0;background:linear-gradient(to top,var(--scrape-example-code-wrapper-background-start),var(--scrape-example-code-wrapper-background-end));}.scraped-example .code-wrapper .example-wrap{width:100%;overflow-y:hidden;margin-bottom:0;}.scraped-example:not(.expanded) .code-wrapper .example-wrap{overflow-x:hidden;}.scraped-example .example-wrap .rust span.highlight{background:var(--scrape-example-code-line-highlight);}.scraped-example .example-wrap .rust span.highlight.focus{background:var(--scrape-example-code-line-highlight-focus);}.more-examples-toggle{max-width:calc(100% + 25px);margin-top:10px;margin-left:-25px;}.more-examples-toggle .hide-more{margin-left:25px;cursor:pointer;}.more-scraped-examples{margin-left:25px;position:relative;}.toggle-line{position:absolute;top:5px;bottom:0;right:calc(100% + 10px);padding:0 4px;cursor:pointer;}.toggle-line-inner{min-width:2px;height:100%;background:var(--scrape-example-toggle-line-background);}.toggle-line:hover .toggle-line-inner{background:var(--scrape-example-toggle-line-hover-background);}.more-scraped-examples .scraped-example,.example-links{margin-top:20px;}.more-scraped-examples .scraped-example:first-child{margin-top:5px;}.example-links ul{margin-bottom:0;}:root[data-theme="light"]{--main-background-color:white;--main-color:black;--settings-input-color:#2196f3;--settings-input-border-color:#717171;--settings-button-color:#000;--settings-button-border-focus:#717171;--sidebar-background-color:#f5f5f5;--sidebar-background-color-hover:#e0e0e0;--code-block-background-color:#f5f5f5;--scrollbar-track-background-color:#dcdcdc;--scrollbar-thumb-background-color:rgba(36,37,39,0.6);--scrollbar-color:rgba(36,37,39,0.6) #d9d9d9;--headings-border-bottom-color:#ddd;--border-color:#e0e0e0;--button-background-color:#fff;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:none;--search-input-focused-border-color:#66afe9;--copy-path-button-color:#999;--copy-path-img-filter:invert(50%);--copy-path-img-hover-filter:invert(35%);--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--warning-border-color:#ff8e00;--type-link-color:#ad378a;--trait-link-color:#6e4fc9;--assoc-item-link-color:#3873ad;--function-link-color:#ad7c37;--macro-link-color:#068000;--keyword-link-color:#3873ad;--mod-link-color:#3873ad;--link-color:#3873ad;--sidebar-link-color:#356da4;--sidebar-current-link-background-color:#fff;--search-result-link-focus-background-color:#ccc;--search-result-border-color:#aaa3;--search-color:#000;--search-error-code-background-color:#d0cccc;--search-results-alias-color:#000;--search-results-grey-color:#999;--search-tab-title-count-color:#888;--search-tab-button-not-selected-border-top-color:#e6e6e6;--search-tab-button-not-selected-background:#e6e6e6;--search-tab-button-selected-border-top-color:#0089ff;--search-tab-button-selected-background:#fff;--stab-background-color:#fff5d6;--stab-code-color:#000;--code-highlight-kw-color:#8959a8;--code-highlight-kw-2-color:#4271ae;--code-highlight-lifetime-color:#b76514;--code-highlight-prelude-color:#4271ae;--code-highlight-prelude-val-color:#c82829;--code-highlight-number-color:#718c00;--code-highlight-string-color:#718c00;--code-highlight-literal-color:#c82829;--code-highlight-attribute-color:#c82829;--code-highlight-self-color:#c82829;--code-highlight-macro-color:#3e999f;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#8e908c;--code-highlight-doc-comment-color:#4d4d4c;--src-line-numbers-span-color:#c67e2d;--src-line-number-highlighted-background-color:#fdffd3;--test-arrow-color:#f5f5f5;--test-arrow-background-color:rgba(78,139,202,0.2);--test-arrow-hover-color:#f5f5f5;--test-arrow-hover-background-color:rgb(78,139,202);--target-background-color:#fdffd3;--target-border-color:#ad7c37;--kbd-color:#000;--kbd-background:#fafbfc;--kbd-box-shadow-color:#c6cbd1;--rust-logo-filter:initial;--crate-search-div-filter:invert(100%) sepia(0%) saturate(4223%) hue-rotate(289deg) brightness(114%) contrast(76%);--crate-search-div-hover-filter:invert(44%) sepia(18%) saturate(23%) hue-rotate(317deg) brightness(96%) contrast(93%);--crate-search-hover-border:#717171;--src-sidebar-background-selected:#fff;--src-sidebar-background-hover:#e0e0e0;--table-alt-row-background-color:#f5f5f5;--codeblock-link-background:#eee;--scrape-example-toggle-line-background:#ccc;--scrape-example-toggle-line-hover-background:#999;--scrape-example-code-line-highlight:#fcffd6;--scrape-example-code-line-highlight-focus:#f6fdb0;--scrape-example-help-border-color:#555;--scrape-example-help-color:#333;--scrape-example-help-hover-border-color:#000;--scrape-example-help-hover-color:#000;--scrape-example-code-wrapper-background-start:rgba(255,255,255,1);--scrape-example-code-wrapper-background-end:rgba(255,255,255,0);--sidebar-resizer-hover:hsl(207,90%,66%);--sidebar-resizer-active:hsl(207,90%,54%);}:root[data-theme="dark"]{--main-background-color:#353535;--main-color:#ddd;--settings-input-color:#2196f3;--settings-input-border-color:#999;--settings-button-color:#000;--settings-button-border-focus:#ffb900;--sidebar-background-color:#505050;--sidebar-background-color-hover:#676767;--code-block-background-color:#2A2A2A;--scrollbar-track-background-color:#717171;--scrollbar-thumb-background-color:rgba(32,34,37,.6);--scrollbar-color:rgba(32,34,37,.6) #5a5a5a;--headings-border-bottom-color:#d2d2d2;--border-color:#e0e0e0;--button-background-color:#f0f0f0;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:invert(100%);--search-input-focused-border-color:#008dfd;--copy-path-button-color:#999;--copy-path-img-filter:invert(50%);--copy-path-img-hover-filter:invert(65%);--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--warning-border-color:#ff8e00;--type-link-color:#2dbfb8;--trait-link-color:#b78cf2;--assoc-item-link-color:#d2991d;--function-link-color:#2bab63;--macro-link-color:#09bd00;--keyword-link-color:#d2991d;--mod-link-color:#d2991d;--link-color:#d2991d;--sidebar-link-color:#fdbf35;--sidebar-current-link-background-color:#444;--search-result-link-focus-background-color:#616161;--search-result-border-color:#aaa3;--search-color:#111;--search-error-code-background-color:#484848;--search-results-alias-color:#fff;--search-results-grey-color:#ccc;--search-tab-title-count-color:#888;--search-tab-button-not-selected-border-top-color:#252525;--search-tab-button-not-selected-background:#252525;--search-tab-button-selected-border-top-color:#0089ff;--search-tab-button-selected-background:#353535;--stab-background-color:#314559;--stab-code-color:#e6e1cf;--code-highlight-kw-color:#ab8ac1;--code-highlight-kw-2-color:#769acb;--code-highlight-lifetime-color:#d97f26;--code-highlight-prelude-color:#769acb;--code-highlight-prelude-val-color:#ee6868;--code-highlight-number-color:#83a300;--code-highlight-string-color:#83a300;--code-highlight-literal-color:#ee6868;--code-highlight-attribute-color:#ee6868;--code-highlight-self-color:#ee6868;--code-highlight-macro-color:#3e999f;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#8d8d8b;--code-highlight-doc-comment-color:#8ca375;--src-line-numbers-span-color:#3b91e2;--src-line-number-highlighted-background-color:#0a042f;--test-arrow-color:#dedede;--test-arrow-background-color:rgba(78,139,202,0.2);--test-arrow-hover-color:#dedede;--test-arrow-hover-background-color:#4e8bca;--target-background-color:#494a3d;--target-border-color:#bb7410;--kbd-color:#000;--kbd-background:#fafbfc;--kbd-box-shadow-color:#c6cbd1;--rust-logo-filter:drop-shadow(1px 0 0px #fff) drop-shadow(0 1px 0 #fff) drop-shadow(-1px 0 0 #fff) drop-shadow(0 -1px 0 #fff);--crate-search-div-filter:invert(94%) sepia(0%) saturate(721%) hue-rotate(255deg) brightness(90%) contrast(90%);--crate-search-div-hover-filter:invert(69%) sepia(60%) saturate(6613%) hue-rotate(184deg) brightness(100%) contrast(91%);--crate-search-hover-border:#2196f3;--src-sidebar-background-selected:#333;--src-sidebar-background-hover:#444;--table-alt-row-background-color:#2a2a2a;--codeblock-link-background:#333;--scrape-example-toggle-line-background:#999;--scrape-example-toggle-line-hover-background:#c5c5c5;--scrape-example-code-line-highlight:#5b3b01;--scrape-example-code-line-highlight-focus:#7c4b0f;--scrape-example-help-border-color:#aaa;--scrape-example-help-color:#eee;--scrape-example-help-hover-border-color:#fff;--scrape-example-help-hover-color:#fff;--scrape-example-code-wrapper-background-start:rgba(53,53,53,1);--scrape-example-code-wrapper-background-end:rgba(53,53,53,0);--sidebar-resizer-hover:hsl(207,30%,54%);--sidebar-resizer-active:hsl(207,90%,54%);}:root[data-theme="ayu"]{--main-background-color:#0f1419;--main-color:#c5c5c5;--settings-input-color:#ffb454;--settings-input-border-color:#999;--settings-button-color:#fff;--settings-button-border-focus:#e0e0e0;--sidebar-background-color:#14191f;--sidebar-background-color-hover:rgba(70,70,70,0.33);--code-block-background-color:#191f26;--scrollbar-track-background-color:transparent;--scrollbar-thumb-background-color:#5c6773;--scrollbar-color:#5c6773 #24292f;--headings-border-bottom-color:#5c6773;--border-color:#5c6773;--button-background-color:#141920;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:invert(100%);--search-input-focused-border-color:#5c6773;--copy-path-button-color:#fff;--copy-path-img-filter:invert(70%);--copy-path-img-hover-filter:invert(100%);--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--warning-border-color:#ff8e00;--type-link-color:#ffa0a5;--trait-link-color:#39afd7;--assoc-item-link-color:#39afd7;--function-link-color:#fdd687;--macro-link-color:#a37acc;--keyword-link-color:#39afd7;--mod-link-color:#39afd7;--link-color:#39afd7;--sidebar-link-color:#53b1db;--sidebar-current-link-background-color:transparent;--search-result-link-focus-background-color:#3c3c3c;--search-result-border-color:#aaa3;--search-color:#fff;--search-error-code-background-color:#4f4c4c;--search-results-alias-color:#c5c5c5;--search-results-grey-color:#999;--search-tab-title-count-color:#888;--search-tab-button-not-selected-border-top-color:none;--search-tab-button-not-selected-background:transparent !important;--search-tab-button-selected-border-top-color:none;--search-tab-button-selected-background:#141920 !important;--stab-background-color:#314559;--stab-code-color:#e6e1cf;--code-highlight-kw-color:#ff7733;--code-highlight-kw-2-color:#ff7733;--code-highlight-lifetime-color:#ff7733;--code-highlight-prelude-color:#69f2df;--code-highlight-prelude-val-color:#ff7733;--code-highlight-number-color:#b8cc52;--code-highlight-string-color:#b8cc52;--code-highlight-literal-color:#ff7733;--code-highlight-attribute-color:#e6e1cf;--code-highlight-self-color:#36a3d9;--code-highlight-macro-color:#a37acc;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#788797;--code-highlight-doc-comment-color:#a1ac88;--src-line-numbers-span-color:#5c6773;--src-line-number-highlighted-background-color:rgba(255,236,164,0.06);--test-arrow-color:#788797;--test-arrow-background-color:rgba(57,175,215,0.09);--test-arrow-hover-color:#c5c5c5;--test-arrow-hover-background-color:rgba(57,175,215,0.368);--target-background-color:rgba(255,236,164,0.06);--target-border-color:rgba(255,180,76,0.85);--kbd-color:#c5c5c5;--kbd-background:#314559;--kbd-box-shadow-color:#5c6773;--rust-logo-filter:drop-shadow(1px 0 0px #fff) drop-shadow(0 1px 0 #fff) drop-shadow(-1px 0 0 #fff) drop-shadow(0 -1px 0 #fff);--crate-search-div-filter:invert(41%) sepia(12%) saturate(487%) hue-rotate(171deg) brightness(94%) contrast(94%);--crate-search-div-hover-filter:invert(98%) sepia(12%) saturate(81%) hue-rotate(343deg) brightness(113%) contrast(76%);--crate-search-hover-border:#e0e0e0;--src-sidebar-background-selected:#14191f;--src-sidebar-background-hover:#14191f;--table-alt-row-background-color:#191f26;--codeblock-link-background:#333;--scrape-example-toggle-line-background:#999;--scrape-example-toggle-line-hover-background:#c5c5c5;--scrape-example-code-line-highlight:#5b3b01;--scrape-example-code-line-highlight-focus:#7c4b0f;--scrape-example-help-border-color:#aaa;--scrape-example-help-color:#eee;--scrape-example-help-hover-border-color:#fff;--scrape-example-help-hover-color:#fff;--scrape-example-code-wrapper-background-start:rgba(15,20,25,1);--scrape-example-code-wrapper-background-end:rgba(15,20,25,0);--sidebar-resizer-hover:hsl(34,50%,33%);--sidebar-resizer-active:hsl(34,100%,66%);}:root[data-theme="ayu"] h1,:root[data-theme="ayu"] h2,:root[data-theme="ayu"] h3,:root[data-theme="ayu"] h4,:where(:root[data-theme="ayu"]) h1 a,:root[data-theme="ayu"] .sidebar h2 a,:root[data-theme="ayu"] .sidebar h3 a,:root[data-theme="ayu"] #source-sidebar>.title{color:#fff;}:root[data-theme="ayu"] .docblock code{color:#ffb454;}:root[data-theme="ayu"] .docblock a>code{color:#39AFD7 !important;}:root[data-theme="ayu"] .code-header,:root[data-theme="ayu"] .docblock pre>code,:root[data-theme="ayu"] pre,:root[data-theme="ayu"] pre>code,:root[data-theme="ayu"] .item-info code,:root[data-theme="ayu"] .rustdoc.source .example-wrap{color:#e6e1cf;}:root[data-theme="ayu"] .sidebar .current,:root[data-theme="ayu"] .sidebar .current a,:root[data-theme="ayu"] .sidebar a:hover,:root[data-theme="ayu"] #src-sidebar div.files>a:hover,:root[data-theme="ayu"] details.dir-entry summary:hover,:root[data-theme="ayu"] #src-sidebar div.files>a:focus,:root[data-theme="ayu"] details.dir-entry summary:focus,:root[data-theme="ayu"] #src-sidebar div.files>a.selected{color:#ffb44c;}:root[data-theme="ayu"] .sidebar-elems .location{color:#ff7733;}:root[data-theme="ayu"] .src-line-numbers .line-highlighted{color:#708090;padding-right:7px;border-right:1px solid #ffb44c;}:root[data-theme="ayu"] .search-results a:hover,:root[data-theme="ayu"] .search-results a:focus{color:#fff !important;background-color:#3c3c3c;}:root[data-theme="ayu"] .search-results a{color:#0096cf;}:root[data-theme="ayu"] .search-results a div.desc{color:#c5c5c5;}:root[data-theme="ayu"] .result-name .primitive>i,:root[data-theme="ayu"] .result-name .keyword>i{color:#788797;}:root[data-theme="ayu"] #search-tabs>button.selected{border-bottom:1px solid #ffb44c !important;border-top:none;}:root[data-theme="ayu"] #search-tabs>button:not(.selected){border:none;background-color:transparent !important;}:root[data-theme="ayu"] #search-tabs>button:hover{border-bottom:1px solid rgba(242,151,24,0.3);}:root[data-theme="ayu"] #settings-menu>a img,:root[data-theme="ayu"] #sidebar-button>a:before{filter:invert(100);} \ No newline at end of file diff --git a/docs/static.files/search-2b6ce74ff89ae146.js b/docs/static.files/search-2b6ce74ff89ae146.js new file mode 100644 index 0000000000..0545970307 --- /dev/null +++ b/docs/static.files/search-2b6ce74ff89ae146.js @@ -0,0 +1,5 @@ +"use strict";if(!Array.prototype.toSpliced){Array.prototype.toSpliced=function(){const me=this.slice();Array.prototype.splice.apply(me,arguments);return me}}(function(){const itemTypes=["keyword","primitive","mod","externcrate","import","struct","enum","fn","type","static","trait","impl","tymethod","method","structfield","variant","macro","associatedtype","constant","associatedconstant","union","foreigntype","existential","attr","derive","traitalias","generic",];const longItemTypes=["keyword","primitive type","module","extern crate","re-export","struct","enum","function","type alias","static","trait","","trait method","method","struct field","enum variant","macro","assoc type","constant","assoc const","union","foreign type","existential type","attribute macro","derive macro","trait alias",];const TY_GENERIC=itemTypes.indexOf("generic");const ROOT_PATH=typeof window!=="undefined"?window.rootPath:"../";function printTab(nb){let iter=0;let foundCurrentTab=false;let foundCurrentResultSet=false;onEachLazy(document.getElementById("search-tabs").childNodes,elem=>{if(nb===iter){addClass(elem,"selected");foundCurrentTab=true}else{removeClass(elem,"selected")}iter+=1});const isTypeSearch=(nb>0||iter===1);iter=0;onEachLazy(document.getElementById("results").childNodes,elem=>{if(nb===iter){addClass(elem,"active");foundCurrentResultSet=true}else{removeClass(elem,"active")}iter+=1});if(foundCurrentTab&&foundCurrentResultSet){searchState.currentTab=nb;const correctionsElem=document.getElementsByClassName("search-corrections");if(isTypeSearch){removeClass(correctionsElem[0],"hidden")}else{addClass(correctionsElem[0],"hidden")}}else if(nb!==0){printTab(0)}}const editDistanceState={current:[],prev:[],prevPrev:[],calculate:function calculate(a,b,limit){if(a.lengthlimit){return limit+1}while(b.length>0&&b[0]===a[0]){a=a.substring(1);b=b.substring(1)}while(b.length>0&&b[b.length-1]===a[a.length-1]){a=a.substring(0,a.length-1);b=b.substring(0,b.length-1)}if(b.length===0){return minDist}const aLength=a.length;const bLength=b.length;for(let i=0;i<=bLength;++i){this.current[i]=0;this.prev[i]=i;this.prevPrev[i]=Number.MAX_VALUE}for(let i=1;i<=aLength;++i){this.current[0]=i;const aIdx=i-1;for(let j=1;j<=bLength;++j){const bIdx=j-1;const substitutionCost=a[aIdx]===b[bIdx]?0:1;this.current[j]=Math.min(this.prev[j]+1,this.current[j-1]+1,this.prev[j-1]+substitutionCost);if((i>1)&&(j>1)&&(a[aIdx]===b[bIdx-1])&&(a[aIdx-1]===b[bIdx])){this.current[j]=Math.min(this.current[j],this.prevPrev[j-2]+1)}}const prevPrevTmp=this.prevPrev;this.prevPrev=this.prev;this.prev=this.current;this.current=prevPrevTmp}const distance=this.prev[bLength];return distance<=limit?distance:(limit+1)},};function editDistance(a,b,limit){return editDistanceState.calculate(a,b,limit)}function initSearch(rawSearchIndex){const MAX_RESULTS=200;const NO_TYPE_FILTER=-1;let searchIndex;let functionTypeFingerprint;let currentResults;let typeNameIdMap;const ALIASES=new Map();let typeNameIdOfArray;let typeNameIdOfSlice;let typeNameIdOfArrayOrSlice;function buildTypeMapIndex(name,isAssocType){if(name===""||name===null){return null}if(typeNameIdMap.has(name)){const obj=typeNameIdMap.get(name);obj.assocOnly=isAssocType&&obj.assocOnly;return obj.id}else{const id=typeNameIdMap.size;typeNameIdMap.set(name,{id,assocOnly:isAssocType});return id}}function isSpecialStartCharacter(c){return"<\"".indexOf(c)!==-1}function isEndCharacter(c){return"=,>-]".indexOf(c)!==-1}function isErrorCharacter(c){return"()".indexOf(c)!==-1}function itemTypeFromName(typename){const index=itemTypes.findIndex(i=>i===typename);if(index<0){throw["Unknown type filter ",typename]}return index}function getStringElem(query,parserState,isInGenerics){if(isInGenerics){throw["Unexpected ","\""," in generics"]}else if(query.literalSearch){throw["Cannot have more than one literal search element"]}else if(parserState.totalElems-parserState.genericsElems>0){throw["Cannot use literal search when there is more than one element"]}parserState.pos+=1;const start=parserState.pos;const end=getIdentEndPosition(parserState);if(parserState.pos>=parserState.length){throw["Unclosed ","\""]}else if(parserState.userQuery[end]!=="\""){throw["Unexpected ",parserState.userQuery[end]," in a string element"]}else if(start===end){throw["Cannot have empty string element"]}parserState.pos+=1;query.literalSearch=true}function isPathStart(parserState){return parserState.userQuery.slice(parserState.pos,parserState.pos+2)==="::"}function isReturnArrow(parserState){return parserState.userQuery.slice(parserState.pos,parserState.pos+2)==="->"}function isIdentCharacter(c){return(c==="_"||(c>="0"&&c<="9")||(c>="a"&&c<="z")||(c>="A"&&c<="Z"))}function isSeparatorCharacter(c){return c===","||c==="="}function isPathSeparator(c){return c===":"||c===" "}function prevIs(parserState,lookingFor){let pos=parserState.pos;while(pos>0){const c=parserState.userQuery[pos-1];if(c===lookingFor){return true}else if(c!==" "){break}pos-=1}return false}function isLastElemGeneric(elems,parserState){return(elems.length>0&&elems[elems.length-1].generics.length>0)||prevIs(parserState,">")}function skipWhitespace(parserState){while(parserState.pos0){throw["Cannot have more than one element if you use quotes"]}const typeFilter=parserState.typeFilter;parserState.typeFilter=null;if(name==="!"){if(typeFilter!==null&&typeFilter!=="primitive"){throw["Invalid search type: primitive never type ","!"," and ",typeFilter," both specified",]}if(generics.length!==0){throw["Never type ","!"," does not accept generic parameters",]}const bindingName=parserState.isInBinding;parserState.isInBinding=null;return{name:"never",id:null,fullPath:["never"],pathWithoutLast:[],pathLast:"never",normalizedPathLast:"never",generics:[],bindings:new Map(),typeFilter:"primitive",bindingName,}}const quadcolon=/::\s*::/.exec(path);if(path.startsWith("::")){throw["Paths cannot start with ","::"]}else if(path.endsWith("::")){throw["Paths cannot end with ","::"]}else if(quadcolon!==null){throw["Unexpected ",quadcolon[0]]}const pathSegments=path.split(/(?:::\s*)|(?:\s+(?:::\s*)?)/);if(pathSegments.length===0||(pathSegments.length===1&&pathSegments[0]==="")){if(generics.length>0||prevIs(parserState,">")){throw["Found generics without a path"]}else{throw["Unexpected ",parserState.userQuery[parserState.pos]]}}for(const[i,pathSegment]of pathSegments.entries()){if(pathSegment==="!"){if(i!==0){throw["Never type ","!"," is not associated item"]}pathSegments[i]="never"}}parserState.totalElems+=1;if(isInGenerics){parserState.genericsElems+=1}const bindingName=parserState.isInBinding;parserState.isInBinding=null;const bindings=new Map();const pathLast=pathSegments[pathSegments.length-1];return{name:name.trim(),id:null,fullPath:pathSegments,pathWithoutLast:pathSegments.slice(0,pathSegments.length-1),pathLast,normalizedPathLast:pathLast.replace(/_/g,""),generics:generics.filter(gen=>{if(gen.bindingName!==null){bindings.set(gen.bindingName.name,[gen,...gen.bindingName.generics]);return false}return true}),bindings,typeFilter,bindingName,}}function getIdentEndPosition(parserState){const start=parserState.pos;let end=parserState.pos;let foundExclamation=-1;while(parserState.pos=end){throw["Found generics without a path"]}parserState.pos+=1;getItemsBefore(query,parserState,generics,">")}if(isStringElem){skipWhitespace(parserState)}if(start>=end&&generics.length===0){return}if(parserState.userQuery[parserState.pos]==="="){if(parserState.isInBinding){throw["Cannot write ","="," twice in a binding"]}if(!isInGenerics){throw["Type parameter ","="," must be within generics list"]}const name=parserState.userQuery.slice(start,end).trim();if(name==="!"){throw["Type parameter ","="," key cannot be ","!"," never type"]}if(name.includes("!")){throw["Type parameter ","="," key cannot be ","!"," macro"]}if(name.includes("::")){throw["Type parameter ","="," key cannot contain ","::"," path"]}if(name.includes(":")){throw["Type parameter ","="," key cannot contain ",":"," type"]}parserState.isInBinding={name,generics}}else{elems.push(createQueryElement(query,parserState,parserState.userQuery.slice(start,end),generics,isInGenerics))}}}function getItemsBefore(query,parserState,elems,endChar){let foundStopChar=true;let start=parserState.pos;const oldTypeFilter=parserState.typeFilter;parserState.typeFilter=null;const oldIsInBinding=parserState.isInBinding;parserState.isInBinding=null;let extra="";if(endChar===">"){extra="<"}else if(endChar==="]"){extra="["}else if(endChar===""){extra="->"}else{extra=endChar}while(parserState.pos"]}else if(prevIs(parserState,"\"")){throw["Cannot have more than one element if you use quotes"]}if(endChar!==""){throw["Expected ",",",", ","=",", or ",endChar,...extra,", found ",c,]}throw["Expected ",","," or ","=",...extra,", found ",c,]}const posBefore=parserState.pos;start=parserState.pos;getNextElem(query,parserState,elems,endChar!=="");if(endChar!==""&&parserState.pos>=parserState.length){throw["Unclosed ",extra]}if(posBefore===parserState.pos){parserState.pos+=1}foundStopChar=false}if(parserState.pos>=parserState.length&&endChar!==""){throw["Unclosed ",extra]}parserState.pos+=1;parserState.typeFilter=oldTypeFilter;parserState.isInBinding=oldIsInBinding}function checkExtraTypeFilterCharacters(start,parserState){const query=parserState.userQuery.slice(start,parserState.pos).trim();for(const c in query){if(!isIdentCharacter(query[c])){throw["Unexpected ",query[c]," in type filter (before ",":",")",]}}}function parseInput(query,parserState){let foundStopChar=true;let start=parserState.pos;while(parserState.pos"){if(isReturnArrow(parserState)){break}throw["Unexpected ",c," (did you mean ","->","?)"]}throw["Unexpected ",c]}else if(c===":"&&!isPathStart(parserState)){if(parserState.typeFilter!==null){throw["Unexpected ",":"," (expected path after type filter ",parserState.typeFilter+":",")",]}else if(query.elems.length===0){throw["Expected type filter before ",":"]}else if(query.literalSearch){throw["Cannot use quotes on type filter"]}const typeFilterElem=query.elems.pop();checkExtraTypeFilterCharacters(start,parserState);parserState.typeFilter=typeFilterElem.name;parserState.pos+=1;parserState.totalElems-=1;query.literalSearch=false;foundStopChar=true;continue}else if(c===" "){skipWhitespace(parserState);continue}if(!foundStopChar){let extra="";if(isLastElemGeneric(query.elems,parserState)){extra=[" after ",">"]}else if(prevIs(parserState,"\"")){throw["Cannot have more than one element if you use quotes"]}if(parserState.typeFilter!==null){throw["Expected ",","," or ","->",...extra,", found ",c,]}throw["Expected ",",",", ",":"," or ","->",...extra,", found ",c,]}const before=query.elems.length;start=parserState.pos;getNextElem(query,parserState,query.elems,false);if(query.elems.length===before){parserState.pos+=1}foundStopChar=false}if(parserState.typeFilter!==null){throw["Unexpected ",":"," (expected path after type filter ",parserState.typeFilter+":",")",]}while(parserState.pos"]}break}else{parserState.pos+=1}}}function newParsedQuery(userQuery){return{original:userQuery,userQuery:userQuery.toLowerCase(),elems:[],returned:[],foundElems:0,totalElems:0,literalSearch:false,error:null,correction:null,proposeCorrectionFrom:null,proposeCorrectionTo:null,typeFingerprint:new Uint32Array(4),}}function buildUrl(search,filterCrates){let extra="?search="+encodeURIComponent(search);if(filterCrates!==null){extra+="&filter-crate="+encodeURIComponent(filterCrates)}return getNakedUrl()+extra+window.location.hash}function getFilterCrates(){const elem=document.getElementById("crate-search");if(elem&&elem.value!=="all crates"&&rawSearchIndex.has(elem.value)){return elem.value}return null}function parseQuery(userQuery){function convertTypeFilterOnElem(elem){if(elem.typeFilter!==null){let typeFilter=elem.typeFilter;if(typeFilter==="const"){typeFilter="constant"}elem.typeFilter=itemTypeFromName(typeFilter)}else{elem.typeFilter=NO_TYPE_FILTER}for(const elem2 of elem.generics){convertTypeFilterOnElem(elem2)}for(const constraints of elem.bindings.values()){for(const constraint of constraints){convertTypeFilterOnElem(constraint)}}}userQuery=userQuery.trim().replace(/\r|\n|\t/g," ");const parserState={length:userQuery.length,pos:0,totalElems:0,genericsElems:0,typeFilter:null,isInBinding:null,userQuery:userQuery.toLowerCase(),};let query=newParsedQuery(userQuery);try{parseInput(query,parserState);for(const elem of query.elems){convertTypeFilterOnElem(elem)}for(const elem of query.returned){convertTypeFilterOnElem(elem)}}catch(err){query=newParsedQuery(userQuery);query.error=err;return query}if(!query.literalSearch){query.literalSearch=parserState.totalElems>1}query.foundElems=query.elems.length+query.returned.length;query.totalElems=parserState.totalElems;return query}function createQueryResults(results_in_args,results_returned,results_others,parsedQuery){return{"in_args":results_in_args,"returned":results_returned,"others":results_others,"query":parsedQuery,}}function execQuery(parsedQuery,filterCrates,currentCrate){const results_others=new Map(),results_in_args=new Map(),results_returned=new Map();function transformResults(results){const duplicates=new Set();const out=[];for(const result of results){if(result.id!==-1){const obj=searchIndex[result.id];obj.dist=result.dist;const res=buildHrefAndPath(obj);obj.displayPath=pathSplitter(res[0]);obj.fullPath=obj.displayPath+obj.name;obj.fullPath+="|"+obj.ty;if(duplicates.has(obj.fullPath)){continue}duplicates.add(obj.fullPath);obj.href=res[1];out.push(obj);if(out.length>=MAX_RESULTS){break}}}return out}function sortResults(results,isType,preferredCrate){if(results.size===0){return[]}const userQuery=parsedQuery.userQuery;const result_list=[];for(const result of results.values()){result.item=searchIndex[result.id];result.word=searchIndex[result.id].word;result_list.push(result)}result_list.sort((aaa,bbb)=>{let a,b;a=(aaa.word!==userQuery);b=(bbb.word!==userQuery);if(a!==b){return a-b}a=(aaa.index<0);b=(bbb.index<0);if(a!==b){return a-b}a=aaa.path_dist;b=bbb.path_dist;if(a!==b){return a-b}a=aaa.index;b=bbb.index;if(a!==b){return a-b}a=(aaa.dist);b=(bbb.dist);if(a!==b){return a-b}a=aaa.item.deprecated;b=bbb.item.deprecated;if(a!==b){return a-b}a=(aaa.item.crate!==preferredCrate);b=(bbb.item.crate!==preferredCrate);if(a!==b){return a-b}a=aaa.word.length;b=bbb.word.length;if(a!==b){return a-b}a=aaa.word;b=bbb.word;if(a!==b){return(a>b?+1:-1)}a=(aaa.item.desc==="");b=(bbb.item.desc==="");if(a!==b){return a-b}a=aaa.item.ty;b=bbb.item.ty;if(a!==b){return a-b}a=aaa.item.path;b=bbb.item.path;if(a!==b){return(a>b?+1:-1)}return 0});return transformResults(result_list)}function unifyFunctionTypes(fnTypesIn,queryElems,whereClause,mgensIn,solutionCb){const mgens=mgensIn===null?null:new Map(mgensIn);if(queryElems.length===0){return!solutionCb||solutionCb(mgens)}if(!fnTypesIn||fnTypesIn.length===0){return false}const ql=queryElems.length;const fl=fnTypesIn.length;if(ql===1&&queryElems[0].generics.length===0&&queryElems[0].bindings.size===0){const queryElem=queryElems[0];for(const fnType of fnTypesIn){if(!unifyFunctionTypeIsMatchCandidate(fnType,queryElem,whereClause,mgens)){continue}if(fnType.id<0&&queryElem.id<0){if(mgens&&mgens.has(fnType.id)&&mgens.get(fnType.id)!==queryElem.id){continue}const mgensScratch=new Map(mgens);mgensScratch.set(fnType.id,queryElem.id);if(!solutionCb||solutionCb(mgensScratch)){return true}}else if(!solutionCb||solutionCb(mgens?new Map(mgens):null)){return true}}for(const fnType of fnTypesIn){if(!unifyFunctionTypeIsUnboxCandidate(fnType,queryElem,whereClause,mgens)){continue}if(fnType.id<0){if(mgens&&mgens.has(fnType.id)&&mgens.get(fnType.id)!==0){continue}const mgensScratch=new Map(mgens);mgensScratch.set(fnType.id,0);if(unifyFunctionTypes(whereClause[(-fnType.id)-1],queryElems,whereClause,mgensScratch,solutionCb)){return true}}else if(unifyFunctionTypes([...fnType.generics,...Array.from(fnType.bindings.values()).flat()],queryElems,whereClause,mgens?new Map(mgens):null,solutionCb)){return true}}return false}const fnTypes=fnTypesIn.slice();const flast=fl-1;const qlast=ql-1;const queryElem=queryElems[qlast];let queryElemsTmp=null;for(let i=flast;i>=0;i-=1){const fnType=fnTypes[i];if(!unifyFunctionTypeIsMatchCandidate(fnType,queryElem,whereClause,mgens)){continue}let mgensScratch;if(fnType.id<0){mgensScratch=new Map(mgens);if(mgensScratch.has(fnType.id)&&mgensScratch.get(fnType.id)!==queryElem.id){continue}mgensScratch.set(fnType.id,queryElem.id)}else{mgensScratch=mgens}fnTypes[i]=fnTypes[flast];fnTypes.length=flast;if(!queryElemsTmp){queryElemsTmp=queryElems.slice(0,qlast)}const passesUnification=unifyFunctionTypes(fnTypes,queryElemsTmp,whereClause,mgensScratch,mgensScratch=>{if(fnType.generics.length===0&&queryElem.generics.length===0&&fnType.bindings.size===0&&queryElem.bindings.size===0){return!solutionCb||solutionCb(mgensScratch)}const solution=unifyFunctionTypeCheckBindings(fnType,queryElem,whereClause,mgensScratch);if(!solution){return false}const simplifiedGenerics=solution.simplifiedGenerics;for(const simplifiedMgens of solution.mgens){const passesUnification=unifyFunctionTypes(simplifiedGenerics,queryElem.generics,whereClause,simplifiedMgens,solutionCb);if(passesUnification){return true}}return false});if(passesUnification){return true}fnTypes[flast]=fnTypes[i];fnTypes[i]=fnType;fnTypes.length=fl}for(let i=flast;i>=0;i-=1){const fnType=fnTypes[i];if(!unifyFunctionTypeIsUnboxCandidate(fnType,queryElem,whereClause,mgens)){continue}let mgensScratch;if(fnType.id<0){mgensScratch=new Map(mgens);if(mgensScratch.has(fnType.id)&&mgensScratch.get(fnType.id)!==0){continue}mgensScratch.set(fnType.id,0)}else{mgensScratch=mgens}const generics=fnType.id<0?whereClause[(-fnType.id)-1]:fnType.generics;const bindings=fnType.bindings?Array.from(fnType.bindings.values()).flat():[];const passesUnification=unifyFunctionTypes(fnTypes.toSpliced(i,1,...generics,...bindings),queryElems,whereClause,mgensScratch,solutionCb);if(passesUnification){return true}}return false}function unifyFunctionTypeIsMatchCandidate(fnType,queryElem,whereClause,mgensIn){if(!typePassesFilter(queryElem.typeFilter,fnType.ty)){return false}if(fnType.id<0&&queryElem.id<0){if(mgensIn){if(mgensIn.has(fnType.id)&&mgensIn.get(fnType.id)!==queryElem.id){return false}for(const[fid,qid]of mgensIn.entries()){if(fnType.id!==fid&&queryElem.id===qid){return false}if(fnType.id===fid&&queryElem.id!==qid){return false}}}return true}else{if(queryElem.id===typeNameIdOfArrayOrSlice&&(fnType.id===typeNameIdOfSlice||fnType.id===typeNameIdOfArray)){}else if(fnType.id!==queryElem.id||queryElem.id===null){return false}if((fnType.generics.length+fnType.bindings.size)===0&&queryElem.generics.length!==0){return false}if(fnType.bindings.size0){const fnTypePath=fnType.path!==undefined&&fnType.path!==null?fnType.path.split("::"):[];if(queryElemPathLength>fnTypePath.length){return false}let i=0;for(const path of fnTypePath){if(path===queryElem.pathWithoutLast[i]){i+=1;if(i>=queryElemPathLength){break}}}if(i0){let mgensSolutionSet=[mgensIn];for(const[name,constraints]of queryElem.bindings.entries()){if(mgensSolutionSet.length===0){return false}if(!fnType.bindings.has(name)){return false}const fnTypeBindings=fnType.bindings.get(name);mgensSolutionSet=mgensSolutionSet.flatMap(mgens=>{const newSolutions=[];unifyFunctionTypes(fnTypeBindings,constraints,whereClause,mgens,newMgens=>{newSolutions.push(newMgens);return false});return newSolutions})}if(mgensSolutionSet.length===0){return false}const binds=Array.from(fnType.bindings.entries()).flatMap(entry=>{const[name,constraints]=entry;if(queryElem.bindings.has(name)){return[]}else{return constraints}});if(simplifiedGenerics.length>0){simplifiedGenerics=[...simplifiedGenerics,...binds]}else{simplifiedGenerics=binds}return{simplifiedGenerics,mgens:mgensSolutionSet}}return{simplifiedGenerics,mgens:[mgensIn]}}function unifyFunctionTypeIsUnboxCandidate(fnType,queryElem,whereClause,mgens){if(fnType.id<0&&queryElem.id>=0){if(!whereClause){return false}if(mgens&&mgens.has(fnType.id)&&mgens.get(fnType.id)!==0){return false}const mgensTmp=new Map(mgens);mgensTmp.set(fnType.id,null);return checkIfInList(whereClause[(-fnType.id)-1],queryElem,whereClause,mgensTmp)}else if(fnType.generics.length>0||fnType.bindings.size>0){const simplifiedGenerics=[...fnType.generics,...Array.from(fnType.bindings.values()).flat(),];return checkIfInList(simplifiedGenerics,queryElem,whereClause,mgens)}return false}function checkIfInList(list,elem,whereClause,mgens){for(const entry of list){if(checkType(entry,elem,whereClause,mgens)){return true}}return false}function checkType(row,elem,whereClause,mgens){if(row.bindings.size===0&&elem.bindings.size===0){if(elem.id<0){return row.id<0||checkIfInList(row.generics,elem,whereClause,mgens)}if(row.id>0&&elem.id>0&&elem.pathWithoutLast.length===0&&typePassesFilter(elem.typeFilter,row.ty)&&elem.generics.length===0&&elem.id!==typeNameIdOfArrayOrSlice){return row.id===elem.id||checkIfInList(row.generics,elem,whereClause,mgens)}}return unifyFunctionTypes([row],[elem],whereClause,mgens)}function checkPath(contains,ty,maxEditDistance){if(contains.length===0){return 0}let ret_dist=maxEditDistance+1;const path=ty.path.split("::");if(ty.parent&&ty.parent.name){path.push(ty.parent.name.toLowerCase())}const length=path.length;const clength=contains.length;pathiter:for(let i=length-clength;i>=0;i-=1){let dist_total=0;for(let x=0;xmaxEditDistance){continue pathiter}dist_total+=dist}ret_dist=Math.min(ret_dist,Math.round(dist_total/clength))}return ret_dist}function typePassesFilter(filter,type){if(filter<=NO_TYPE_FILTER||filter===type)return true;const name=itemTypes[type];switch(itemTypes[filter]){case"constant":return name==="associatedconstant";case"fn":return name==="method"||name==="tymethod";case"type":return name==="primitive"||name==="associatedtype";case"trait":return name==="traitalias"}return false}function createAliasFromItem(item){return{crate:item.crate,name:item.name,path:item.path,desc:item.desc,ty:item.ty,parent:item.parent,type:item.type,is_alias:true,deprecated:item.deprecated,implDisambiguator:item.implDisambiguator,}}function handleAliases(ret,query,filterCrates,currentCrate){const lowerQuery=query.toLowerCase();const aliases=[];const crateAliases=[];if(filterCrates!==null){if(ALIASES.has(filterCrates)&&ALIASES.get(filterCrates).has(lowerQuery)){const query_aliases=ALIASES.get(filterCrates).get(lowerQuery);for(const alias of query_aliases){aliases.push(createAliasFromItem(searchIndex[alias]))}}}else{for(const[crate,crateAliasesIndex]of ALIASES){if(crateAliasesIndex.has(lowerQuery)){const pushTo=crate===currentCrate?crateAliases:aliases;const query_aliases=crateAliasesIndex.get(lowerQuery);for(const alias of query_aliases){pushTo.push(createAliasFromItem(searchIndex[alias]))}}}}const sortFunc=(aaa,bbb)=>{if(aaa.path{alias.alias=query;const res=buildHrefAndPath(alias);alias.displayPath=pathSplitter(res[0]);alias.fullPath=alias.displayPath+alias.name;alias.href=res[1];ret.others.unshift(alias);if(ret.others.length>MAX_RESULTS){ret.others.pop()}};aliases.forEach(pushFunc);crateAliases.forEach(pushFunc)}function addIntoResults(results,fullId,id,index,dist,path_dist,maxEditDistance){if(dist<=maxEditDistance||index!==-1){if(results.has(fullId)){const result=results.get(fullId);if(result.dontValidate||result.dist<=dist){return}}results.set(fullId,{id:id,index:index,dontValidate:parsedQuery.literalSearch,dist:dist,path_dist:path_dist,})}}function handleSingleArg(row,pos,elem,results_others,results_in_args,results_returned,maxEditDistance){if(!row||(filterCrates!==null&&row.crate!==filterCrates)){return}let path_dist=0;const fullId=row.id;const tfpDist=compareTypeFingerprints(fullId,parsedQuery.typeFingerprint);if(tfpDist!==null){const in_args=row.type&&row.type.inputs&&checkIfInList(row.type.inputs,elem,row.type.where_clause);const returned=row.type&&row.type.output&&checkIfInList(row.type.output,elem,row.type.where_clause);if(in_args){results_in_args.max_dist=Math.max(results_in_args.max_dist||0,tfpDist);const maxDist=results_in_args.sizenormalizedIndex&&normalizedIndex!==-1)){index=normalizedIndex}if(elem.fullPath.length>1){path_dist=checkPath(elem.pathWithoutLast,row,maxEditDistance);if(path_dist>maxEditDistance){return}}if(parsedQuery.literalSearch){if(row.word===elem.pathLast){addIntoResults(results_others,fullId,pos,index,0,path_dist)}return}const dist=editDistance(row.normalizedName,elem.normalizedPathLast,maxEditDistance);if(index===-1&&dist+path_dist>maxEditDistance){return}addIntoResults(results_others,fullId,pos,index,dist,path_dist,maxEditDistance)}function handleArgs(row,pos,results){if(!row||(filterCrates!==null&&row.crate!==filterCrates)||!row.type){return}const tfpDist=compareTypeFingerprints(row.id,parsedQuery.typeFingerprint);if(tfpDist===null){return}if(results.size>=MAX_RESULTS&&tfpDist>results.max_dist){return}if(!unifyFunctionTypes(row.type.inputs,parsedQuery.elems,row.type.where_clause,null,mgens=>{return unifyFunctionTypes(row.type.output,parsedQuery.returned,row.type.where_clause,mgens)})){return}results.max_dist=Math.max(results.max_dist||0,tfpDist);addIntoResults(results,row.id,pos,0,tfpDist,0,Number.MAX_VALUE)}function innerRunQuery(){let queryLen=0;for(const elem of parsedQuery.elems){queryLen+=elem.name.length}for(const elem of parsedQuery.returned){queryLen+=elem.name.length}const maxEditDistance=Math.floor(queryLen/3);const genericSymbols=new Map();function convertNameToId(elem,isAssocType){if(typeNameIdMap.has(elem.normalizedPathLast)&&(isAssocType||!typeNameIdMap.get(elem.normalizedPathLast).assocOnly)){elem.id=typeNameIdMap.get(elem.normalizedPathLast).id}else if(!parsedQuery.literalSearch){let match=null;let matchDist=maxEditDistance+1;let matchName="";for(const[name,{id,assocOnly}]of typeNameIdMap){const dist=editDistance(name,elem.normalizedPathLast,maxEditDistance);if(dist<=matchDist&&dist<=maxEditDistance&&(isAssocType||!assocOnly)){if(dist===matchDist&&matchName>name){continue}match=id;matchDist=dist;matchName=name}}if(match!==null){parsedQuery.correction=matchName}elem.id=match}if((elem.id===null&&parsedQuery.totalElems>1&&elem.typeFilter===-1&&elem.generics.length===0&&elem.bindings.size===0)||elem.typeFilter===TY_GENERIC){if(genericSymbols.has(elem.name)){elem.id=genericSymbols.get(elem.name)}else{elem.id=-(genericSymbols.size+1);genericSymbols.set(elem.name,elem.id)}if(elem.typeFilter===-1&&elem.name.length>=3){const maxPartDistance=Math.floor(elem.name.length/3);let matchDist=maxPartDistance+1;let matchName="";for(const name of typeNameIdMap.keys()){const dist=editDistance(name,elem.name,maxPartDistance);if(dist<=matchDist&&dist<=maxPartDistance){if(dist===matchDist&&matchName>name){continue}matchDist=dist;matchName=name}}if(matchName!==""){parsedQuery.proposeCorrectionFrom=elem.name;parsedQuery.proposeCorrectionTo=matchName}}elem.typeFilter=TY_GENERIC}if(elem.generics.length>0&&elem.typeFilter===TY_GENERIC){parsedQuery.error=["Generic type parameter ",elem.name," does not accept generic parameters",]}for(const elem2 of elem.generics){convertNameToId(elem2)}elem.bindings=new Map(Array.from(elem.bindings.entries()).map(entry=>{const[name,constraints]=entry;if(!typeNameIdMap.has(name)){parsedQuery.error=["Type parameter ",name," does not exist",];return[null,[]]}for(const elem2 of constraints){convertNameToId(elem2)}return[typeNameIdMap.get(name).id,constraints]}))}const fps=new Set();for(const elem of parsedQuery.elems){convertNameToId(elem);buildFunctionTypeFingerprint(elem,parsedQuery.typeFingerprint,fps)}for(const elem of parsedQuery.returned){convertNameToId(elem);buildFunctionTypeFingerprint(elem,parsedQuery.typeFingerprint,fps)}if(parsedQuery.foundElems===1&&parsedQuery.returned.length===0){if(parsedQuery.elems.length===1){const elem=parsedQuery.elems[0];for(let i=0,nSearchIndex=searchIndex.length;i0){const sortQ=(a,b)=>{const ag=a.generics.length===0&&a.bindings.size===0;const bg=b.generics.length===0&&b.bindings.size===0;if(ag!==bg){return ag-bg}const ai=a.id>0;const bi=b.id>0;return ai-bi};parsedQuery.elems.sort(sortQ);parsedQuery.returned.sort(sortQ);for(let i=0,nSearchIndex=searchIndex.length;i");if(tmp.endsWith("")){return tmp.slice(0,tmp.length-6)}return tmp}function addTab(array,query,display){const extraClass=display?" active":"";const output=document.createElement("div");if(array.length>0){output.className="search-results "+extraClass;array.forEach(item=>{const name=item.name;const type=itemTypes[item.ty];const longType=longItemTypes[item.ty];const typeName=longType.length!==0?`${longType}`:"?";const link=document.createElement("a");link.className="result-"+type;link.href=item.href;const resultName=document.createElement("div");resultName.className="result-name";resultName.insertAdjacentHTML("beforeend",`${typeName}`);link.appendChild(resultName);let alias=" ";if(item.is_alias){alias=`
    \ +${item.alias} - see \ +
    `}resultName.insertAdjacentHTML("beforeend",`
    ${alias}\ +${item.displayPath}${name}\ +
    `);const description=document.createElement("div");description.className="desc";description.insertAdjacentHTML("beforeend",item.desc);link.appendChild(description);output.appendChild(link)})}else if(query.error===null){output.className="search-failed"+extraClass;output.innerHTML="No results :(
    "+"Try on DuckDuckGo?

    "+"Or try looking in one of these:"}return[output,array.length]}function makeTabHeader(tabNb,text,nbElems){const fmtNbElems=nbElems<10?`\u{2007}(${nbElems})\u{2007}\u{2007}`:nbElems<100?`\u{2007}(${nbElems})\u{2007}`:`\u{2007}(${nbElems})`;if(searchState.currentTab===tabNb){return""}return""}function showResults(results,go_to_first,filterCrates){const search=searchState.outputElement();if(go_to_first||(results.others.length===1&&getSettingValue("go-to-only-result")==="true")){window.onunload=()=>{};searchState.removeQueryParameters();const elem=document.createElement("a");elem.href=results.others[0].href;removeClass(elem,"active");document.body.appendChild(elem);elem.click();return}if(results.query===undefined){results.query=parseQuery(searchState.input.value)}currentResults=results.query.userQuery;const ret_others=addTab(results.others,results.query,true);const ret_in_args=addTab(results.in_args,results.query,false);const ret_returned=addTab(results.returned,results.query,false);let currentTab=searchState.currentTab;if((currentTab===0&&ret_others[1]===0)||(currentTab===1&&ret_in_args[1]===0)||(currentTab===2&&ret_returned[1]===0)){if(ret_others[1]!==0){currentTab=0}else if(ret_in_args[1]!==0){currentTab=1}else if(ret_returned[1]!==0){currentTab=2}}let crates="";if(rawSearchIndex.size>1){crates=" in 
    "}let output=`

    Results${crates}

    `;if(results.query.error!==null){const error=results.query.error;error.forEach((value,index)=>{value=value.split("<").join("<").split(">").join(">");if(index%2!==0){error[index]=`${value.replaceAll(" ", " ")}`}else{error[index]=value}});output+=`

    Query parser error: "${error.join("")}".

    `;output+="
    "+makeTabHeader(0,"In Names",ret_others[1])+"
    ";currentTab=0}else if(results.query.foundElems<=1&&results.query.returned.length===0){output+="
    "+makeTabHeader(0,"In Names",ret_others[1])+makeTabHeader(1,"In Parameters",ret_in_args[1])+makeTabHeader(2,"In Return Types",ret_returned[1])+"
    "}else{const signatureTabTitle=results.query.elems.length===0?"In Function Return Types":results.query.returned.length===0?"In Function Parameters":"In Function Signatures";output+="
    "+makeTabHeader(0,signatureTabTitle,ret_others[1])+"
    ";currentTab=0}if(results.query.correction!==null){const orig=results.query.returned.length>0?results.query.returned[0].name:results.query.elems[0].name;output+="

    "+`Type "${orig}" not found. `+"Showing results for closest type name "+`"${results.query.correction}" instead.

    `}if(results.query.proposeCorrectionFrom!==null){const orig=results.query.proposeCorrectionFrom;const targ=results.query.proposeCorrectionTo;output+="

    "+`Type "${orig}" not found and used as generic parameter. `+`Consider searching for "${targ}" instead.

    `}const resultsElem=document.createElement("div");resultsElem.id="results";resultsElem.appendChild(ret_others[0]);resultsElem.appendChild(ret_in_args[0]);resultsElem.appendChild(ret_returned[0]);search.innerHTML=output;const crateSearch=document.getElementById("crate-search");if(crateSearch){crateSearch.addEventListener("input",updateCrate)}search.appendChild(resultsElem);searchState.showResults(search);const elems=document.getElementById("search-tabs").childNodes;searchState.focusedByTab=[];let i=0;for(const elem of elems){const j=i;elem.onclick=()=>printTab(j);searchState.focusedByTab.push(null);i+=1}printTab(currentTab)}function updateSearchHistory(url){if(!browserSupportsHistoryApi()){return}const params=searchState.getQueryStringParams();if(!history.state&&!params.search){history.pushState(null,"",url)}else{history.replaceState(null,"",url)}}function search(forced){const query=parseQuery(searchState.input.value.trim());let filterCrates=getFilterCrates();if(!forced&&query.userQuery===currentResults){if(query.userQuery.length>0){putBackSearch()}return}searchState.setLoadingSearch();const params=searchState.getQueryStringParams();if(filterCrates===null&¶ms["filter-crate"]!==undefined){filterCrates=params["filter-crate"]}searchState.title="Results for "+query.original+" - Rust";updateSearchHistory(buildUrl(query.original,filterCrates));showResults(execQuery(query,filterCrates,window.currentCrate),params.go_to_first,filterCrates)}function buildItemSearchTypeAll(types,lowercasePaths){return types.map(type=>buildItemSearchType(type,lowercasePaths))}function buildItemSearchType(type,lowercasePaths,isAssocType){const PATH_INDEX_DATA=0;const GENERICS_DATA=1;const BINDINGS_DATA=2;let pathIndex,generics,bindings;if(typeof type==="number"){pathIndex=type;generics=[];bindings=new Map()}else{pathIndex=type[PATH_INDEX_DATA];generics=buildItemSearchTypeAll(type[GENERICS_DATA],lowercasePaths);if(type.length>BINDINGS_DATA){bindings=new Map(type[BINDINGS_DATA].map(binding=>{const[assocType,constraints]=binding;return[buildItemSearchType(assocType,lowercasePaths,true).id,buildItemSearchTypeAll(constraints,lowercasePaths),]}))}else{bindings=new Map()}}if(pathIndex<0){return{id:pathIndex,ty:TY_GENERIC,path:null,generics,bindings,}}if(pathIndex===0){return{id:null,ty:null,path:null,generics,bindings,}}const item=lowercasePaths[pathIndex-1];return{id:buildTypeMapIndex(item.name,isAssocType),ty:item.ty,path:item.path,generics,bindings,}}function buildFunctionSearchType(functionSearchType,lowercasePaths){const INPUTS_DATA=0;const OUTPUT_DATA=1;if(functionSearchType===0){return null}let inputs,output;if(typeof functionSearchType[INPUTS_DATA]==="number"){inputs=[buildItemSearchType(functionSearchType[INPUTS_DATA],lowercasePaths)]}else{inputs=buildItemSearchTypeAll(functionSearchType[INPUTS_DATA],lowercasePaths)}if(functionSearchType.length>1){if(typeof functionSearchType[OUTPUT_DATA]==="number"){output=[buildItemSearchType(functionSearchType[OUTPUT_DATA],lowercasePaths)]}else{output=buildItemSearchTypeAll(functionSearchType[OUTPUT_DATA],lowercasePaths)}}else{output=[]}const where_clause=[];const l=functionSearchType.length;for(let i=2;i{k=(~~k+0x7ed55d16)+(k<<12);k=(k ^ 0xc761c23c)^(k>>>19);k=(~~k+0x165667b1)+(k<<5);k=(~~k+0xd3a2646c)^(k<<9);k=(~~k+0xfd7046c5)+(k<<3);return(k ^ 0xb55a4f09)^(k>>>16)};const hashint2=k=>{k=~k+(k<<15);k ^=k>>>12;k+=k<<2;k ^=k>>>4;k=Math.imul(k,2057);return k ^(k>>16)};if(input!==null){const h0a=hashint1(input);const h0b=hashint2(input);const h1a=~~(h0a+Math.imul(h0b,2));const h1b=~~(h0a+Math.imul(h0b,3));const h2a=~~(h0a+Math.imul(h0b,4));const h2b=~~(h0a+Math.imul(h0b,5));output[0]|=(1<<(h0a%32))|(1<<(h1b%32));output[1]|=(1<<(h1a%32))|(1<<(h2b%32));output[2]|=(1<<(h2a%32))|(1<<(h0b%32));fps.add(input)}for(const g of type.generics){buildFunctionTypeFingerprint(g,output,fps)}const fb={id:null,ty:0,generics:[],bindings:new Map(),};for(const[k,v]of type.bindings.entries()){fb.id=k;fb.generics=v;buildFunctionTypeFingerprint(fb,output,fps)}output[3]=fps.size}function compareTypeFingerprints(fullId,queryFingerprint){const fh0=functionTypeFingerprint[fullId*4];const fh1=functionTypeFingerprint[(fullId*4)+1];const fh2=functionTypeFingerprint[(fullId*4)+2];const[qh0,qh1,qh2]=queryFingerprint;const[in0,in1,in2]=[fh0&qh0,fh1&qh1,fh2&qh2];if((in0 ^ qh0)||(in1 ^ qh1)||(in2 ^ qh2)){return null}return functionTypeFingerprint[(fullId*4)+3]}function buildIndex(rawSearchIndex){searchIndex=[];typeNameIdMap=new Map();const charA="A".charCodeAt(0);let currentIndex=0;let id=0;typeNameIdOfArray=buildTypeMapIndex("array");typeNameIdOfSlice=buildTypeMapIndex("slice");typeNameIdOfArrayOrSlice=buildTypeMapIndex("[]");for(const crate of rawSearchIndex.values()){id+=crate.t.length+1}functionTypeFingerprint=new Uint32Array((id+1)*4);id=0;for(const[crate,crateCorpus]of rawSearchIndex){const crateRow={crate:crate,ty:3,name:crate,path:"",desc:crateCorpus.doc,parent:undefined,type:null,id:id,word:crate,normalizedName:crate.indexOf("_")===-1?crate:crate.replace(/_/g,""),deprecated:null,implDisambiguator:null,};id+=1;searchIndex.push(crateRow);currentIndex+=1;const itemTypes=crateCorpus.t;const itemNames=crateCorpus.n;const itemPaths=new Map(crateCorpus.q);const itemDescs=crateCorpus.d;const itemParentIdxs=crateCorpus.i;const itemFunctionSearchTypes=crateCorpus.f;const deprecatedItems=new Set(crateCorpus.c);const implDisambiguator=new Map(crateCorpus.b);const paths=crateCorpus.p;const aliases=crateCorpus.a;const lowercasePaths=[];let len=paths.length;let lastPath=itemPaths.get(0);for(let i=0;i2){path=itemPaths.has(elem[2])?itemPaths.get(elem[2]):lastPath;lastPath=path}lowercasePaths.push({ty:ty,name:name.toLowerCase(),path:path});paths[i]={ty:ty,name:name,path:path}}lastPath="";len=itemTypes.length;for(let i=0;i0?paths[itemParentIdxs[i]-1]:undefined,type,id:id,word,normalizedName:word.indexOf("_")===-1?word:word.replace(/_/g,""),deprecated:deprecatedItems.has(i),implDisambiguator:implDisambiguator.has(i)?implDisambiguator.get(i):null,};id+=1;searchIndex.push(row);lastPath=row.path}if(aliases){const currentCrateAliases=new Map();ALIASES.set(crate,currentCrateAliases);for(const alias_name in aliases){if(!Object.prototype.hasOwnProperty.call(aliases,alias_name)){continue}let currentNameAliases;if(currentCrateAliases.has(alias_name)){currentNameAliases=currentCrateAliases.get(alias_name)}else{currentNameAliases=[];currentCrateAliases.set(alias_name,currentNameAliases)}for(const local_alias of aliases[alias_name]){currentNameAliases.push(local_alias+currentIndex)}}}currentIndex+=itemTypes.length}}function onSearchSubmit(e){e.preventDefault();searchState.clearInputTimeout();search()}function putBackSearch(){const search_input=searchState.input;if(!searchState.input){return}if(search_input.value!==""&&!searchState.isDisplayed()){searchState.showResults();if(browserSupportsHistoryApi()){history.replaceState(null,"",buildUrl(search_input.value,getFilterCrates()))}document.title=searchState.title}}function registerSearchEvents(){const params=searchState.getQueryStringParams();if(searchState.input.value===""){searchState.input.value=params.search||""}const searchAfter500ms=()=>{searchState.clearInputTimeout();if(searchState.input.value.length===0){searchState.hideResults()}else{searchState.timeout=setTimeout(search,500)}};searchState.input.onkeyup=searchAfter500ms;searchState.input.oninput=searchAfter500ms;document.getElementsByClassName("search-form")[0].onsubmit=onSearchSubmit;searchState.input.onchange=e=>{if(e.target!==document.activeElement){return}searchState.clearInputTimeout();setTimeout(search,0)};searchState.input.onpaste=searchState.input.onchange;searchState.outputElement().addEventListener("keydown",e=>{if(e.altKey||e.ctrlKey||e.shiftKey||e.metaKey){return}if(e.which===38){const previous=document.activeElement.previousElementSibling;if(previous){previous.focus()}else{searchState.focus()}e.preventDefault()}else if(e.which===40){const next=document.activeElement.nextElementSibling;if(next){next.focus()}const rect=document.activeElement.getBoundingClientRect();if(window.innerHeight-rect.bottom{if(e.which===40){focusSearchResult();e.preventDefault()}});searchState.input.addEventListener("focus",()=>{putBackSearch()});searchState.input.addEventListener("blur",()=>{searchState.input.placeholder=searchState.input.origPlaceholder});if(browserSupportsHistoryApi()){const previousTitle=document.title;window.addEventListener("popstate",e=>{const params=searchState.getQueryStringParams();document.title=previousTitle;currentResults=null;if(params.search&¶ms.search.length>0){searchState.input.value=params.search;e.preventDefault();search()}else{searchState.input.value="";searchState.hideResults()}})}window.onpageshow=()=>{const qSearch=searchState.getQueryStringParams().search;if(searchState.input.value===""&&qSearch){searchState.input.value=qSearch}search()}}function updateCrate(ev){if(ev.target.value==="all crates"){const query=searchState.input.value.trim();updateSearchHistory(buildUrl(query,null))}currentResults=null;search(true)}buildIndex(rawSearchIndex);if(typeof window!=="undefined"){registerSearchEvents();if(window.searchState.getQueryStringParams().search){search()}}if(typeof exports!=="undefined"){exports.initSearch=initSearch;exports.execQuery=execQuery;exports.parseQuery=parseQuery}}if(typeof window!=="undefined"){window.initSearch=initSearch;if(window.searchIndex!==undefined){initSearch(window.searchIndex)}}else{initSearch(new Map())}})() \ No newline at end of file diff --git a/docs/static.files/search-444266647c4dba98.js b/docs/static.files/search-444266647c4dba98.js deleted file mode 100644 index bf59e1d8eb..0000000000 --- a/docs/static.files/search-444266647c4dba98.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(function(){const itemTypes=["mod","externcrate","import","struct","enum","fn","type","static","trait","impl","tymethod","method","structfield","variant","macro","primitive","associatedtype","constant","associatedconstant","union","foreigntype","keyword","existential","attr","derive","traitalias",];const TY_PRIMITIVE=itemTypes.indexOf("primitive");const TY_KEYWORD=itemTypes.indexOf("keyword");const ROOT_PATH=typeof window!=="undefined"?window.rootPath:"../";function hasOwnPropertyRustdoc(obj,property){return Object.prototype.hasOwnProperty.call(obj,property)}function printTab(nb){let iter=0;let foundCurrentTab=false;let foundCurrentResultSet=false;onEachLazy(document.getElementById("titles").childNodes,elem=>{if(nb===iter){addClass(elem,"selected");foundCurrentTab=true}else{removeClass(elem,"selected")}iter+=1});iter=0;onEachLazy(document.getElementById("results").childNodes,elem=>{if(nb===iter){addClass(elem,"active");foundCurrentResultSet=true}else{removeClass(elem,"active")}iter+=1});if(foundCurrentTab&&foundCurrentResultSet){searchState.currentTab=nb}else if(nb!==0){printTab(0)}}const levenshtein_row2=[];function levenshtein(s1,s2){if(s1===s2){return 0}const s1_len=s1.length,s2_len=s2.length;if(s1_len&&s2_len){let i1=0,i2=0,a,b,c,c2;const row=levenshtein_row2;while(i1-".indexOf(c)!==-1}function isStopCharacter(c){return isWhitespace(c)||isEndCharacter(c)}function isErrorCharacter(c){return"()".indexOf(c)!==-1}function itemTypeFromName(typename){for(let i=0,len=itemTypes.length;i0){throw new Error("Cannot use literal search when there is more than one element")}parserState.pos+=1;const start=parserState.pos;const end=getIdentEndPosition(parserState);if(parserState.pos>=parserState.length){throw new Error("Unclosed `\"`")}else if(parserState.userQuery[end]!=="\""){throw new Error(`Unexpected \`${parserState.userQuery[end]}\` in a string element`)}else if(start===end){throw new Error("Cannot have empty string element")}parserState.pos+=1;query.literalSearch=true}function isPathStart(parserState){return parserState.userQuery.slice(parserState.pos,parserState.pos+2)==="::"}function isReturnArrow(parserState){return parserState.userQuery.slice(parserState.pos,parserState.pos+2)==="->"}function isIdentCharacter(c){return(c==="_"||(c>="0"&&c<="9")||(c>="a"&&c<="z")||(c>="A"&&c<="Z"))}function isSeparatorCharacter(c){return c===","||isWhitespaceCharacter(c)}function isWhitespaceCharacter(c){return c===" "||c==="\t"}function createQueryElement(query,parserState,name,generics,isInGenerics){if(name==="*"||(name.length===0&&generics.length===0)){return}if(query.literalSearch&&parserState.totalElems-parserState.genericsElems>0){throw new Error("You cannot have more than one element if you use quotes")}const pathSegments=name.split("::");if(pathSegments.length>1){for(let i=0,len=pathSegments.length;i=end){throw new Error("Found generics without a path")}parserState.pos+=1;getItemsBefore(query,parserState,generics,">")}if(start>=end&&generics.length===0){return}elems.push(createQueryElement(query,parserState,parserState.userQuery.slice(start,end),generics,isInGenerics))}function getItemsBefore(query,parserState,elems,endChar){let foundStopChar=true;while(parserState.pos"){extra="`<`"}else if(endChar===""){extra="`->`"}throw new Error("Unexpected `"+c+"` after "+extra)}if(!foundStopChar){if(endChar!==""){throw new Error(`Expected \`,\`, \` \` or \`${endChar}\`, found \`${c}\``)}throw new Error(`Expected \`,\` or \` \`, found \`${c}\``)}const posBefore=parserState.pos;getNextElem(query,parserState,elems,endChar===">");if(posBefore===parserState.pos){parserState.pos+=1}foundStopChar=false}parserState.pos+=1}function checkExtraTypeFilterCharacters(parserState){const query=parserState.userQuery;for(let pos=0;pos"){if(isReturnArrow(parserState)){break}throw new Error(`Unexpected \`${c}\` (did you mean \`->\`?)`)}throw new Error(`Unexpected \`${c}\``)}else if(c===":"&&!isPathStart(parserState)){if(parserState.typeFilter!==null){throw new Error("Unexpected `:`")}if(query.elems.length===0){throw new Error("Expected type filter before `:`")}else if(query.elems.length!==1||parserState.totalElems!==1){throw new Error("Unexpected `:`")}else if(query.literalSearch){throw new Error("You cannot use quotes on type filter")}checkExtraTypeFilterCharacters(parserState);parserState.typeFilter=query.elems.pop().name;parserState.pos+=1;parserState.totalElems=0;query.literalSearch=false;foundStopChar=true;continue}if(!foundStopChar){if(parserState.typeFilter!==null){throw new Error(`Expected \`,\`, \` \` or \`->\`, found \`${c}\``)}throw new Error(`Expected \`,\`, \` \`, \`:\` or \`->\`, found \`${c}\``)}before=query.elems.length;getNextElem(query,parserState,query.elems,false);if(query.elems.length===before){parserState.pos+=1}foundStopChar=false}while(parserState.pos`")}break}else{parserState.pos+=1}}}function newParsedQuery(userQuery){return{original:userQuery,userQuery:userQuery.toLowerCase(),typeFilter:NO_TYPE_FILTER,elems:[],returned:[],foundElems:0,literalSearch:false,error:null,}}function buildUrl(search,filterCrates){let extra="?search="+encodeURIComponent(search);if(filterCrates!==null){extra+="&filter-crate="+encodeURIComponent(filterCrates)}return getNakedUrl()+extra+window.location.hash}function getFilterCrates(){const elem=document.getElementById("crate-search");if(elem&&elem.value!=="all crates"&&hasOwnPropertyRustdoc(rawSearchIndex,elem.value)){return elem.value}return null}function parseQuery(userQuery){userQuery=userQuery.trim();const parserState={length:userQuery.length,pos:0,totalElems:0,genericsElems:0,typeFilter:null,userQuery:userQuery.toLowerCase(),};let query=newParsedQuery(userQuery);try{parseInput(query,parserState);if(parserState.typeFilter!==null){let typeFilter=parserState.typeFilter;if(typeFilter==="const"){typeFilter="constant"}query.typeFilter=itemTypeFromName(typeFilter)}}catch(err){query=newParsedQuery(userQuery);query.error=err.message;query.typeFilter=-1;return query}if(!query.literalSearch){query.literalSearch=parserState.totalElems>1}query.foundElems=query.elems.length+query.returned.length;return query}function createQueryResults(results_in_args,results_returned,results_others,parsedQuery){return{"in_args":results_in_args,"returned":results_returned,"others":results_others,"query":parsedQuery,}}function execQuery(parsedQuery,searchWords,filterCrates,currentCrate){const results_others={},results_in_args={},results_returned={};function transformResults(results){const duplicates={};const out=[];for(const result of results){if(result.id>-1){const obj=searchIndex[result.id];obj.lev=result.lev;const res=buildHrefAndPath(obj);obj.displayPath=pathSplitter(res[0]);obj.fullPath=obj.displayPath+obj.name;obj.fullPath+="|"+obj.ty;if(duplicates[obj.fullPath]){continue}duplicates[obj.fullPath]=true;obj.href=res[1];out.push(obj);if(out.length>=MAX_RESULTS){break}}}return out}function sortResults(results,isType,preferredCrate){const userQuery=parsedQuery.userQuery;const ar=[];for(const entry in results){if(hasOwnPropertyRustdoc(results,entry)){const result=results[entry];result.word=searchWords[result.id];result.item=searchIndex[result.id]||{};ar.push(result)}}results=ar;if(results.length===0){return[]}results.sort((aaa,bbb)=>{let a,b;a=(aaa.word!==userQuery);b=(bbb.word!==userQuery);if(a!==b){return a-b}a=(aaa.lev);b=(bbb.lev);if(a!==b){return a-b}a=(aaa.item.crate!==preferredCrate);b=(bbb.item.crate!==preferredCrate);if(a!==b){return a-b}a=aaa.word.length;b=bbb.word.length;if(a!==b){return a-b}a=aaa.word;b=bbb.word;if(a!==b){return(a>b?+1:-1)}a=(aaa.index<0);b=(bbb.index<0);if(a!==b){return a-b}a=aaa.index;b=bbb.index;if(a!==b){return a-b}if((aaa.item.ty===TY_PRIMITIVE&&bbb.item.ty!==TY_KEYWORD)||(aaa.item.ty===TY_KEYWORD&&bbb.item.ty!==TY_PRIMITIVE)){return-1}if((bbb.item.ty===TY_PRIMITIVE&&aaa.item.ty!==TY_PRIMITIVE)||(bbb.item.ty===TY_KEYWORD&&aaa.item.ty!==TY_KEYWORD)){return 1}a=(aaa.item.desc==="");b=(bbb.item.desc==="");if(a!==b){return a-b}a=aaa.item.ty;b=bbb.item.ty;if(a!==b){return a-b}a=aaa.item.path;b=bbb.item.path;if(a!==b){return(a>b?+1:-1)}return 0});let nameSplit=null;if(parsedQuery.elems.length===1){const hasPath=typeof parsedQuery.elems[0].path==="undefined";nameSplit=hasPath?null:parsedQuery.elems[0].path}for(const result of results){if(result.dontValidate){continue}const name=result.item.name.toLowerCase(),path=result.item.path.toLowerCase(),parent=result.item.parent;if(!isType&&!validateResult(name,path,nameSplit,parent)){result.id=-1}}return transformResults(results)}function checkGenerics(row,elem,defaultLev){if(row.generics.length===0){return elem.generics.length===0?defaultLev:MAX_LEV_DISTANCE+1}else if(row.generics.length>0&&row.generics[0].name===null){return checkGenerics(row.generics[0],elem,defaultLev)}let elem_name;if(elem.generics.length>0&&row.generics.length>=elem.generics.length){const elems=Object.create(null);for(const entry of row.generics){elem_name=entry.name;if(elem_name===""){if(checkGenerics(entry,elem,MAX_LEV_DISTANCE+1)!==0){return MAX_LEV_DISTANCE+1}continue}if(elems[elem_name]===undefined){elems[elem_name]=0}elems[elem_name]+=1}for(const generic of elem.generics){let match=null;if(elems[generic.name]){match=generic.name}else{for(elem_name in elems){if(!hasOwnPropertyRustdoc(elems,elem_name)){continue}if(elem_name===generic){match=elem_name;break}}}if(match===null){return MAX_LEV_DISTANCE+1}elems[match]-=1;if(elems[match]===0){delete elems[match]}}return 0}return MAX_LEV_DISTANCE+1}function checkIfInGenerics(row,elem){let lev=MAX_LEV_DISTANCE+1;for(const entry of row.generics){lev=Math.min(checkType(entry,elem,true),lev);if(lev===0){break}}return lev}function checkType(row,elem,literalSearch){if(row.name===null){if(row.generics.length>0){return checkIfInGenerics(row,elem)}return MAX_LEV_DISTANCE+1}let lev=levenshtein(row.name,elem.name);if(literalSearch){if(lev!==0){if(elem.generics.length===0){const checkGeneric=row.generics.length>0;if(checkGeneric&&row.generics.findIndex(tmp_elem=>tmp_elem.name===elem.name)!==-1){return 0}}return MAX_LEV_DISTANCE+1}else if(elem.generics.length>0){return checkGenerics(row,elem,MAX_LEV_DISTANCE+1)}return 0}else if(row.generics.length>0){if(elem.generics.length===0){if(lev===0){return 0}lev=checkIfInGenerics(row,elem);return lev+0.5}else if(lev>MAX_LEV_DISTANCE){return checkIfInGenerics(row,elem)}else{const tmp_lev=checkGenerics(row,elem,lev);if(tmp_lev>MAX_LEV_DISTANCE){return MAX_LEV_DISTANCE+1}return(tmp_lev+lev)/2}}else if(elem.generics.length>0){return MAX_LEV_DISTANCE+1}return lev}function findArg(row,elem,typeFilter){let lev=MAX_LEV_DISTANCE+1;if(row&&row.type&&row.type.inputs&&row.type.inputs.length>0){for(const input of row.type.inputs){if(!typePassesFilter(typeFilter,input.ty)){continue}lev=Math.min(lev,checkType(input,elem,parsedQuery.literalSearch));if(lev===0){return 0}}}return parsedQuery.literalSearch?MAX_LEV_DISTANCE+1:lev}function checkReturned(row,elem,typeFilter){let lev=MAX_LEV_DISTANCE+1;if(row&&row.type&&row.type.output.length>0){const ret=row.type.output;for(const ret_ty of ret){if(!typePassesFilter(typeFilter,ret_ty.ty)){continue}lev=Math.min(lev,checkType(ret_ty,elem,parsedQuery.literalSearch));if(lev===0){return 0}}}return parsedQuery.literalSearch?MAX_LEV_DISTANCE+1:lev}function checkPath(contains,ty){if(contains.length===0){return 0}let ret_lev=MAX_LEV_DISTANCE+1;const path=ty.path.split("::");if(ty.parent&&ty.parent.name){path.push(ty.parent.name.toLowerCase())}const length=path.length;const clength=contains.length;if(clength>length){return MAX_LEV_DISTANCE+1}for(let i=0;ilength){break}let lev_total=0;let aborted=false;for(let x=0;xMAX_LEV_DISTANCE){aborted=true;break}lev_total+=lev}if(!aborted){ret_lev=Math.min(ret_lev,Math.round(lev_total/clength))}}return ret_lev}function typePassesFilter(filter,type){if(filter<=NO_TYPE_FILTER||filter===type)return true;const name=itemTypes[type];switch(itemTypes[filter]){case"constant":return name==="associatedconstant";case"fn":return name==="method"||name==="tymethod";case"type":return name==="primitive"||name==="associatedtype";case"trait":return name==="traitalias"}return false}function createAliasFromItem(item){return{crate:item.crate,name:item.name,path:item.path,desc:item.desc,ty:item.ty,parent:item.parent,type:item.type,is_alias:true,}}function handleAliases(ret,query,filterCrates,currentCrate){const lowerQuery=query.toLowerCase();const aliases=[];const crateAliases=[];if(filterCrates!==null){if(ALIASES[filterCrates]&&ALIASES[filterCrates][lowerQuery]){const query_aliases=ALIASES[filterCrates][lowerQuery];for(const alias of query_aliases){aliases.push(createAliasFromItem(searchIndex[alias]))}}}else{Object.keys(ALIASES).forEach(crate=>{if(ALIASES[crate][lowerQuery]){const pushTo=crate===currentCrate?crateAliases:aliases;const query_aliases=ALIASES[crate][lowerQuery];for(const alias of query_aliases){pushTo.push(createAliasFromItem(searchIndex[alias]))}}})}const sortFunc=(aaa,bbb)=>{if(aaa.path{alias.alias=query;const res=buildHrefAndPath(alias);alias.displayPath=pathSplitter(res[0]);alias.fullPath=alias.displayPath+alias.name;alias.href=res[1];ret.others.unshift(alias);if(ret.others.length>MAX_RESULTS){ret.others.pop()}};aliases.forEach(pushFunc);crateAliases.forEach(pushFunc)}function addIntoResults(results,fullId,id,index,lev){if(lev===0||(!parsedQuery.literalSearch&&lev<=MAX_LEV_DISTANCE)){if(results[fullId]!==undefined){const result=results[fullId];if(result.dontValidate||result.lev<=lev){return}}results[fullId]={id:id,index:index,dontValidate:parsedQuery.literalSearch,lev:lev,}}}function handleSingleArg(row,pos,elem,results_others,results_in_args,results_returned){if(!row||(filterCrates!==null&&row.crate!==filterCrates)){return}let lev,lev_add=0,index=-1;const fullId=row.id;const in_args=findArg(row,elem,parsedQuery.typeFilter);const returned=checkReturned(row,elem,parsedQuery.typeFilter);addIntoResults(results_in_args,fullId,pos,index,in_args);addIntoResults(results_returned,fullId,pos,index,returned);if(!typePassesFilter(parsedQuery.typeFilter,row.ty)){return}const searchWord=searchWords[pos];if(parsedQuery.literalSearch){if(searchWord===elem.name){addIntoResults(results_others,fullId,pos,-1,0)}return}if(elem.name.length===0){if(row.type!==null){lev=checkGenerics(row.type,elem,MAX_LEV_DISTANCE+1);addIntoResults(results_others,fullId,pos,index,lev)}return}if(elem.fullPath.length>1){lev=checkPath(elem.pathWithoutLast,row);if(lev>MAX_LEV_DISTANCE||(parsedQuery.literalSearch&&lev!==0)){return}else if(lev>0){lev_add=lev/10}}if(searchWord.indexOf(elem.pathLast)>-1||row.normalizedName.indexOf(elem.pathLast)>-1){index=row.normalizedName.indexOf(elem.pathLast)}lev=levenshtein(searchWord,elem.pathLast);if(lev>0&&elem.pathLast.length>2&&searchWord.indexOf(elem.pathLast)>-1){if(elem.pathLast.length<6){lev=1}else{lev=0}}lev+=lev_add;if(lev>MAX_LEV_DISTANCE){return}else if(index!==-1&&elem.fullPath.length<2){lev-=1}if(lev<0){lev=0}addIntoResults(results_others,fullId,pos,index,lev)}function handleArgs(row,pos,results){if(!row||(filterCrates!==null&&row.crate!==filterCrates)){return}let totalLev=0;let nbLev=0;function checkArgs(elems,callback){for(const elem of elems){const lev=callback(row,elem,NO_TYPE_FILTER);if(lev<=1){nbLev+=1;totalLev+=lev}else{return false}}return true}if(!checkArgs(parsedQuery.elems,findArg)){return}if(!checkArgs(parsedQuery.returned,checkReturned)){return}if(nbLev===0){return}const lev=Math.round(totalLev/nbLev);addIntoResults(results,row.id,pos,0,lev)}function innerRunQuery(){let elem,i,nSearchWords,in_returned,row;if(parsedQuery.foundElems===1){if(parsedQuery.elems.length===1){elem=parsedQuery.elems[0];for(i=0,nSearchWords=searchWords.length;i0){for(i=0,nSearchWords=searchWords.length;i-1||path.indexOf(key)>-1||(parent!==undefined&&parent.name!==undefined&&parent.name.toLowerCase().indexOf(key)>-1)||levenshtein(name,key)<=MAX_LEV_DISTANCE)){return false}}return true}function nextTab(direction){const next=(searchState.currentTab+direction+3)%searchState.focusedByTab.length;searchState.focusedByTab[searchState.currentTab]=document.activeElement;printTab(next);focusSearchResult()}function focusSearchResult(){const target=searchState.focusedByTab[searchState.currentTab]||document.querySelectorAll(".search-results.active a").item(0)||document.querySelectorAll("#titles > button").item(searchState.currentTab);searchState.focusedByTab[searchState.currentTab]=null;if(target){target.focus()}}function buildHrefAndPath(item){let displayPath;let href;const type=itemTypes[item.ty];const name=item.name;let path=item.path;if(type==="mod"){displayPath=path+"::";href=ROOT_PATH+path.replace(/::/g,"/")+"/"+name+"/index.html"}else if(type==="import"){displayPath=item.path+"::";href=ROOT_PATH+item.path.replace(/::/g,"/")+"/index.html#reexport."+name}else if(type==="primitive"||type==="keyword"){displayPath="";href=ROOT_PATH+path.replace(/::/g,"/")+"/"+type+"."+name+".html"}else if(type==="externcrate"){displayPath="";href=ROOT_PATH+name+"/index.html"}else if(item.parent!==undefined){const myparent=item.parent;let anchor="#"+type+"."+name;const parentType=itemTypes[myparent.ty];let pageType=parentType;let pageName=myparent.name;if(parentType==="primitive"){displayPath=myparent.name+"::"}else if(type==="structfield"&&parentType==="variant"){const enumNameIdx=item.path.lastIndexOf("::");const enumName=item.path.substr(enumNameIdx+2);path=item.path.substr(0,enumNameIdx);displayPath=path+"::"+enumName+"::"+myparent.name+"::";anchor="#variant."+myparent.name+".field."+name;pageType="enum";pageName=enumName}else{displayPath=path+"::"+myparent.name+"::"}href=ROOT_PATH+path.replace(/::/g,"/")+"/"+pageType+"."+pageName+".html"+anchor}else{displayPath=item.path+"::";href=ROOT_PATH+item.path.replace(/::/g,"/")+"/"+type+"."+name+".html"}return[displayPath,href]}function pathSplitter(path){const tmp=""+path.replace(/::/g,"::");if(tmp.endsWith("")){return tmp.slice(0,tmp.length-6)}return tmp}function addTab(array,query,display){let extraClass="";if(display===true){extraClass=" active"}const output=document.createElement("div");let length=0;if(array.length>0){output.className="search-results "+extraClass;array.forEach(item=>{const name=item.name;const type=itemTypes[item.ty];length+=1;let extra="";if(type==="primitive"){extra=" (primitive type)"}else if(type==="keyword"){extra=" (keyword)"}const link=document.createElement("a");link.className="result-"+type;link.href=item.href;const resultName=document.createElement("div");resultName.className="result-name";if(item.is_alias){const alias=document.createElement("span");alias.className="alias";const bold=document.createElement("b");bold.innerText=item.alias;alias.appendChild(bold);alias.insertAdjacentHTML("beforeend"," - see ");resultName.appendChild(alias)}resultName.insertAdjacentHTML("beforeend",item.displayPath+""+name+extra+"");link.appendChild(resultName);const description=document.createElement("div");description.className="desc";description.insertAdjacentHTML("beforeend",item.desc);link.appendChild(description);output.appendChild(link)})}else if(query.error===null){output.className="search-failed"+extraClass;output.innerHTML="No results :(
    "+"Try on DuckDuckGo?

    "+"Or try looking in one of these:"}return[output,length]}function makeTabHeader(tabNb,text,nbElems){if(searchState.currentTab===tabNb){return""}return""}function showResults(results,go_to_first,filterCrates){const search=searchState.outputElement();if(go_to_first||(results.others.length===1&&getSettingValue("go-to-only-result")==="true"&&(!search.firstChild||search.firstChild.innerText!==searchState.loadingText))){const elem=document.createElement("a");elem.href=results.others[0].href;removeClass(elem,"active");document.body.appendChild(elem);elem.click();return}if(results.query===undefined){results.query=parseQuery(searchState.input.value)}currentResults=results.query.userQuery;const ret_others=addTab(results.others,results.query,true);const ret_in_args=addTab(results.in_args,results.query,false);const ret_returned=addTab(results.returned,results.query,false);let currentTab=searchState.currentTab;if((currentTab===0&&ret_others[1]===0)||(currentTab===1&&ret_in_args[1]===0)||(currentTab===2&&ret_returned[1]===0)){if(ret_others[1]!==0){currentTab=0}else if(ret_in_args[1]!==0){currentTab=1}else if(ret_returned[1]!==0){currentTab=2}}let crates="";const crates_list=Object.keys(rawSearchIndex);if(crates_list.length>1){crates=" in 
    "}let output=`

    Results${crates}

    `;if(results.query.error!==null){output+=`

    Query parser error: "${results.query.error}".

    `;output+="
    "+makeTabHeader(0,"In Names",ret_others[1])+"
    ";currentTab=0}else if(results.query.foundElems<=1&&results.query.returned.length===0){output+="
    "+makeTabHeader(0,"In Names",ret_others[1])+makeTabHeader(1,"In Parameters",ret_in_args[1])+makeTabHeader(2,"In Return Types",ret_returned[1])+"
    "}else{const signatureTabTitle=results.query.elems.length===0?"In Function Return Types":results.query.returned.length===0?"In Function Parameters":"In Function Signatures";output+="
    "+makeTabHeader(0,signatureTabTitle,ret_others[1])+"
    ";currentTab=0}const resultsElem=document.createElement("div");resultsElem.id="results";resultsElem.appendChild(ret_others[0]);resultsElem.appendChild(ret_in_args[0]);resultsElem.appendChild(ret_returned[0]);search.innerHTML=output;const crateSearch=document.getElementById("crate-search");if(crateSearch){crateSearch.addEventListener("input",updateCrate)}search.appendChild(resultsElem);searchState.showResults(search);const elems=document.getElementById("titles").childNodes;searchState.focusedByTab=[];let i=0;for(const elem of elems){const j=i;elem.onclick=()=>printTab(j);searchState.focusedByTab.push(null);i+=1}printTab(currentTab)}function search(e,forced){if(e){e.preventDefault()}const query=parseQuery(searchState.input.value.trim());let filterCrates=getFilterCrates();if(!forced&&query.userQuery===currentResults){if(query.userQuery.length>0){putBackSearch()}return}searchState.setLoadingSearch();const params=searchState.getQueryStringParams();if(filterCrates===null&¶ms["filter-crate"]!==undefined){filterCrates=params["filter-crate"]}searchState.title="Results for "+query.original+" - Rust";if(browserSupportsHistoryApi()){const newURL=buildUrl(query.original,filterCrates);if(!history.state&&!params.search){history.pushState(null,"",newURL)}else{history.replaceState(null,"",newURL)}}showResults(execQuery(query,searchWords,filterCrates,window.currentCrate),params.go_to_first,filterCrates)}function buildItemSearchTypeAll(types,lowercasePaths){const PATH_INDEX_DATA=0;const GENERICS_DATA=1;return types.map(type=>{let pathIndex,generics;if(typeof type==="number"){pathIndex=type;generics=[]}else{pathIndex=type[PATH_INDEX_DATA];generics=buildItemSearchTypeAll(type[GENERICS_DATA],lowercasePaths)}return{name:pathIndex===0?null:lowercasePaths[pathIndex-1].name,ty:pathIndex===0?null:lowercasePaths[pathIndex-1].ty,generics:generics,}})}function buildFunctionSearchType(functionSearchType,lowercasePaths){const INPUTS_DATA=0;const OUTPUT_DATA=1;if(functionSearchType===0){return null}let inputs,output;if(typeof functionSearchType[INPUTS_DATA]==="number"){const pathIndex=functionSearchType[INPUTS_DATA];inputs=[{name:pathIndex===0?null:lowercasePaths[pathIndex-1].name,ty:pathIndex===0?null:lowercasePaths[pathIndex-1].ty,generics:[],}]}else{inputs=buildItemSearchTypeAll(functionSearchType[INPUTS_DATA],lowercasePaths)}if(functionSearchType.length>1){if(typeof functionSearchType[OUTPUT_DATA]==="number"){const pathIndex=functionSearchType[OUTPUT_DATA];output=[{name:pathIndex===0?null:lowercasePaths[pathIndex-1].name,ty:pathIndex===0?null:lowercasePaths[pathIndex-1].ty,generics:[],}]}else{output=buildItemSearchTypeAll(functionSearchType[OUTPUT_DATA],lowercasePaths)}}else{output=[]}return{inputs,output,}}function buildIndex(rawSearchIndex){searchIndex=[];const searchWords=[];let i,word;let currentIndex=0;let id=0;for(const crate in rawSearchIndex){if(!hasOwnPropertyRustdoc(rawSearchIndex,crate)){continue}let crateSize=0;const crateCorpus=rawSearchIndex[crate];searchWords.push(crate);const crateRow={crate:crate,ty:1,name:crate,path:"",desc:crateCorpus.doc,parent:undefined,type:null,id:id,normalizedName:crate.indexOf("_")===-1?crate:crate.replace(/_/g,""),};id+=1;searchIndex.push(crateRow);currentIndex+=1;const itemTypes=crateCorpus.t;const itemNames=crateCorpus.n;const itemPaths=crateCorpus.q;const itemDescs=crateCorpus.d;const itemParentIdxs=crateCorpus.i;const itemFunctionSearchTypes=crateCorpus.f;const paths=crateCorpus.p;const aliases=crateCorpus.a;const lowercasePaths=[];let len=paths.length;for(i=0;i0?paths[itemParentIdxs[i]-1]:undefined,type:buildFunctionSearchType(itemFunctionSearchTypes[i],lowercasePaths),id:id,normalizedName:word.indexOf("_")===-1?word:word.replace(/_/g,""),};id+=1;searchIndex.push(row);lastPath=row.path;crateSize+=1}if(aliases){ALIASES[crate]=Object.create(null);for(const alias_name in aliases){if(!hasOwnPropertyRustdoc(aliases,alias_name)){continue}if(!hasOwnPropertyRustdoc(ALIASES[crate],alias_name)){ALIASES[crate][alias_name]=[]}for(const local_alias of aliases[alias_name]){ALIASES[crate][alias_name].push(local_alias+currentIndex)}}}currentIndex+=crateSize}return searchWords}function onSearchSubmit(e){e.preventDefault();searchState.clearInputTimeout();search()}function putBackSearch(){const search_input=searchState.input;if(!searchState.input){return}if(search_input.value!==""&&!searchState.isDisplayed()){searchState.showResults();if(browserSupportsHistoryApi()){history.replaceState(null,"",buildUrl(search_input.value,getFilterCrates()))}document.title=searchState.title}}function registerSearchEvents(){const params=searchState.getQueryStringParams();if(searchState.input.value===""){searchState.input.value=params.search||""}const searchAfter500ms=()=>{searchState.clearInputTimeout();if(searchState.input.value.length===0){if(browserSupportsHistoryApi()){history.replaceState(null,window.currentCrate+" - Rust",getNakedUrl()+window.location.hash)}searchState.hideResults()}else{searchState.timeout=setTimeout(search,500)}};searchState.input.onkeyup=searchAfter500ms;searchState.input.oninput=searchAfter500ms;document.getElementsByClassName("search-form")[0].onsubmit=onSearchSubmit;searchState.input.onchange=e=>{if(e.target!==document.activeElement){return}searchState.clearInputTimeout();setTimeout(search,0)};searchState.input.onpaste=searchState.input.onchange;searchState.outputElement().addEventListener("keydown",e=>{if(e.altKey||e.ctrlKey||e.shiftKey||e.metaKey){return}if(e.which===38){const previous=document.activeElement.previousElementSibling;if(previous){previous.focus()}else{searchState.focus()}e.preventDefault()}else if(e.which===40){const next=document.activeElement.nextElementSibling;if(next){next.focus()}const rect=document.activeElement.getBoundingClientRect();if(window.innerHeight-rect.bottom{if(e.which===40){focusSearchResult();e.preventDefault()}});searchState.input.addEventListener("focus",()=>{putBackSearch()});searchState.input.addEventListener("blur",()=>{searchState.input.placeholder=searchState.input.origPlaceholder});if(browserSupportsHistoryApi()){const previousTitle=document.title;window.addEventListener("popstate",e=>{const params=searchState.getQueryStringParams();document.title=previousTitle;currentResults=null;if(params.search&¶ms.search.length>0){searchState.input.value=params.search;search(e)}else{searchState.input.value="";searchState.hideResults()}})}window.onpageshow=()=>{const qSearch=searchState.getQueryStringParams().search;if(searchState.input.value===""&&qSearch){searchState.input.value=qSearch}search()}}function updateCrate(ev){if(ev.target.value==="all crates"){const params=searchState.getQueryStringParams();const query=searchState.input.value.trim();if(!history.state&&!params.search){history.pushState(null,"",buildUrl(query,null))}else{history.replaceState(null,"",buildUrl(query,null))}}currentResults=null;search(undefined,true)}const searchWords=buildIndex(rawSearchIndex);if(typeof window!=="undefined"){registerSearchEvents();if(window.searchState.getQueryStringParams().search){search()}}if(typeof exports!=="undefined"){exports.initSearch=initSearch;exports.execQuery=execQuery;exports.parseQuery=parseQuery}return searchWords}if(typeof window!=="undefined"){window.initSearch=initSearch;if(window.searchIndex!==undefined){initSearch(window.searchIndex)}}else{initSearch({})}})() \ No newline at end of file diff --git a/docs/static.files/settings-4313503d2e1961c2.js b/docs/static.files/settings-4313503d2e1961c2.js new file mode 100644 index 0000000000..ab425fe49d --- /dev/null +++ b/docs/static.files/settings-4313503d2e1961c2.js @@ -0,0 +1,17 @@ +"use strict";(function(){const isSettingsPage=window.location.pathname.endsWith("/settings.html");function changeSetting(settingName,value){if(settingName==="theme"){const useSystem=value==="system preference"?"true":"false";updateLocalStorage("use-system-theme",useSystem)}updateLocalStorage(settingName,value);switch(settingName){case"theme":case"preferred-dark-theme":case"preferred-light-theme":updateTheme();updateLightAndDark();break;case"line-numbers":if(value===true){window.rustdoc_add_line_numbers_to_examples()}else{window.rustdoc_remove_line_numbers_from_examples()}break;case"hide-sidebar":if(value===true){addClass(document.documentElement,"hide-sidebar")}else{removeClass(document.documentElement,"hide-sidebar")}break}}function showLightAndDark(){removeClass(document.getElementById("preferred-light-theme"),"hidden");removeClass(document.getElementById("preferred-dark-theme"),"hidden")}function hideLightAndDark(){addClass(document.getElementById("preferred-light-theme"),"hidden");addClass(document.getElementById("preferred-dark-theme"),"hidden")}function updateLightAndDark(){const useSystem=getSettingValue("use-system-theme");if(useSystem==="true"||(useSystem===null&&getSettingValue("theme")===null)){showLightAndDark()}else{hideLightAndDark()}}function setEvents(settingsElement){updateLightAndDark();onEachLazy(settingsElement.querySelectorAll("input[type=\"checkbox\"]"),toggle=>{const settingId=toggle.id;const settingValue=getSettingValue(settingId);if(settingValue!==null){toggle.checked=settingValue==="true"}toggle.onchange=()=>{changeSetting(toggle.id,toggle.checked)}});onEachLazy(settingsElement.querySelectorAll("input[type=\"radio\"]"),elem=>{const settingId=elem.name;let settingValue=getSettingValue(settingId);if(settingId==="theme"){const useSystem=getSettingValue("use-system-theme");if(useSystem==="true"||settingValue===null){settingValue=useSystem==="false"?"light":"system preference"}}if(settingValue!==null&&settingValue!=="null"){elem.checked=settingValue===elem.value}elem.addEventListener("change",ev=>{changeSetting(ev.target.name,ev.target.value)})})}function buildSettingsPageSections(settings){let output="";for(const setting of settings){const js_data_name=setting["js_name"];const setting_name=setting["name"];if(setting["options"]!==undefined){output+=`\ +
    +
    ${setting_name}
    +
    `;onEach(setting["options"],option=>{const checked=option===setting["default"]?" checked":"";const full=`${js_data_name}-${option.replace(/ /g,"-")}`;output+=`\ + `});output+=`\ +
    +
    `}else{const checked=setting["default"]===true?" checked":"";output+=`\ +
    \ + \ +
    `}}return output}function buildSettingsPage(){const theme_names=getVar("themes").split(",").filter(t=>t);theme_names.push("light","dark","ayu");const settings=[{"name":"Theme","js_name":"theme","default":"system preference","options":theme_names.concat("system preference"),},{"name":"Preferred light theme","js_name":"preferred-light-theme","default":"light","options":theme_names,},{"name":"Preferred dark theme","js_name":"preferred-dark-theme","default":"dark","options":theme_names,},{"name":"Auto-hide item contents for large items","js_name":"auto-hide-large-items","default":true,},{"name":"Auto-hide item methods' documentation","js_name":"auto-hide-method-docs","default":false,},{"name":"Auto-hide trait implementation documentation","js_name":"auto-hide-trait-implementations","default":false,},{"name":"Directly go to item in search if there is only one result","js_name":"go-to-only-result","default":false,},{"name":"Show line numbers on code examples","js_name":"line-numbers","default":false,},{"name":"Hide persistent navigation bar","js_name":"hide-sidebar","default":false,},{"name":"Disable keyboard shortcuts","js_name":"disable-shortcuts","default":false,},];const elementKind=isSettingsPage?"section":"div";const innerHTML=`
    ${buildSettingsPageSections(settings)}
    `;const el=document.createElement(elementKind);el.id="settings";if(!isSettingsPage){el.className="popover"}el.innerHTML=innerHTML;if(isSettingsPage){document.getElementById(MAIN_ID).appendChild(el)}else{el.setAttribute("tabindex","-1");getSettingsButton().appendChild(el)}return el}const settingsMenu=buildSettingsPage();function displaySettings(){settingsMenu.style.display="";onEachLazy(settingsMenu.querySelectorAll("input[type='checkbox']"),el=>{const val=getSettingValue(el.id);const checked=val==="true";if(checked!==el.checked&&val!==null){el.checked=checked}})}function settingsBlurHandler(event){blurHandler(event,getSettingsButton(),window.hidePopoverMenus)}if(isSettingsPage){getSettingsButton().onclick=event=>{event.preventDefault()}}else{const settingsButton=getSettingsButton();const settingsMenu=document.getElementById("settings");settingsButton.onclick=event=>{if(settingsMenu.contains(event.target)){return}event.preventDefault();const shouldDisplaySettings=settingsMenu.style.display==="none";window.hideAllModals();if(shouldDisplaySettings){displaySettings()}};settingsButton.onblur=settingsBlurHandler;settingsButton.querySelector("a").onblur=settingsBlurHandler;onEachLazy(settingsMenu.querySelectorAll("input"),el=>{el.onblur=settingsBlurHandler});settingsMenu.onblur=settingsBlurHandler}setTimeout(()=>{setEvents(settingsMenu);if(!isSettingsPage){displaySettings()}removeClass(getSettingsButton(),"rotate")},0)})() \ No newline at end of file diff --git a/docs/static.files/settings-af96d9e2fc13e081.css b/docs/static.files/settings-af96d9e2fc13e081.css deleted file mode 100644 index d94744e6fa..0000000000 --- a/docs/static.files/settings-af96d9e2fc13e081.css +++ /dev/null @@ -1,3 +0,0 @@ -.setting-line{margin:0.6em 0 0.6em 0.3em;position:relative;}.setting-line .choices{display:flex;flex-wrap:wrap;}.setting-line .radio-line input,.setting-line .toggle input{margin-right:0.3em;height:1.2rem;width:1.2rem;color:inherit;border:1px solid currentColor;outline:none;-webkit-appearance:none;cursor:pointer;}.setting-line .radio-line input{border-radius:50%;}.setting-line .toggle input:checked{content:url('data:image/svg+xml,\ - \ - ');}.setting-line .radio-line input+span,.setting-line .toggle span{padding-bottom:1px;}.radio-line .setting-name{width:100%;}.radio-line .choice{margin-top:0.1em;margin-bottom:0.1em;min-width:3.8em;padding:0.3em;display:flex;align-items:center;cursor:pointer;}.radio-line .choice+.choice{margin-left:0.5em;}.toggle{position:relative;width:100%;margin-right:20px;display:flex;align-items:center;cursor:pointer;}.setting-line>.sub-settings{padding-left:42px;width:100%;display:block;}#settings .setting-line{margin:1.2em 0.6em;}.setting-line .radio-line input:checked{box-shadow:inset 0 0 0 3px var(--main-background-color);background-color:var(--settings-input-color);}.setting-line .toggle input:checked{background-color:var(--settings-input-color);}.setting-line .radio-line input:focus,.setting-line .toggle input:focus{box-shadow:0 0 1px 1px var(--settings-input-color);}.setting-line .radio-line input:checked:focus{box-shadow:inset 0 0 0 3px var(--main-background-color),0 0 2px 2px var(--settings-input-color);}.setting-line .radio-line input:hover,.setting-line .toggle input:hover{border-color:var(--settings-input-color) !important;} \ No newline at end of file diff --git a/docs/static.files/settings-bebeae96e00e4617.js b/docs/static.files/settings-bebeae96e00e4617.js deleted file mode 100644 index 4d73ec358b..0000000000 --- a/docs/static.files/settings-bebeae96e00e4617.js +++ /dev/null @@ -1,13 +0,0 @@ -"use strict";(function(){const isSettingsPage=window.location.pathname.endsWith("/settings.html");function changeSetting(settingName,value){if(settingName==="theme"){const useSystem=value==="system preference"?"true":"false";updateLocalStorage("use-system-theme",useSystem)}updateLocalStorage(settingName,value);switch(settingName){case"theme":case"preferred-dark-theme":case"preferred-light-theme":updateSystemTheme();updateLightAndDark();break;case"line-numbers":if(value===true){window.rustdoc_add_line_numbers_to_examples()}else{window.rustdoc_remove_line_numbers_from_examples()}break}}function handleKey(ev){if(ev.ctrlKey||ev.altKey||ev.metaKey){return}switch(getVirtualKey(ev)){case"Enter":case"Return":case"Space":ev.target.checked=!ev.target.checked;ev.preventDefault();break}}function showLightAndDark(){removeClass(document.getElementById("preferred-light-theme").parentElement,"hidden");removeClass(document.getElementById("preferred-dark-theme").parentElement,"hidden")}function hideLightAndDark(){addClass(document.getElementById("preferred-light-theme").parentElement,"hidden");addClass(document.getElementById("preferred-dark-theme").parentElement,"hidden")}function updateLightAndDark(){const useSystem=getSettingValue("use-system-theme");if(useSystem==="true"||(useSystem===null&&getSettingValue("theme")===null)){showLightAndDark()}else{hideLightAndDark()}}function setEvents(settingsElement){updateLightAndDark();onEachLazy(settingsElement.querySelectorAll("input[type=\"checkbox\"]"),toggle=>{const settingId=toggle.id;const settingValue=getSettingValue(settingId);if(settingValue!==null){toggle.checked=settingValue==="true"}toggle.onchange=function(){changeSetting(this.id,this.checked)};toggle.onkeyup=handleKey;toggle.onkeyrelease=handleKey});onEachLazy(settingsElement.getElementsByClassName("select-wrapper"),elem=>{const select=elem.getElementsByTagName("select")[0];const settingId=select.id;const settingValue=getSettingValue(settingId);if(settingValue!==null){select.value=settingValue}select.onchange=function(){changeSetting(this.id,this.value)}});onEachLazy(settingsElement.querySelectorAll("input[type=\"radio\"]"),elem=>{const settingId=elem.name;let settingValue=getSettingValue(settingId);if(settingId==="theme"){const useSystem=getSettingValue("use-system-theme");if(useSystem==="true"||settingValue===null){if(useSystem!=="false"){settingValue="system preference"}else{settingValue="light"}}}if(settingValue!==null&&settingValue!=="null"){elem.checked=settingValue===elem.value}elem.addEventListener("change",ev=>{changeSetting(ev.target.name,ev.target.value)})})}function buildSettingsPageSections(settings){let output="";for(const setting of settings){output+="
    ";const js_data_name=setting["js_name"];const setting_name=setting["name"];if(setting["options"]!==undefined){output+=`\ -
    - ${setting_name} -
    `;onEach(setting["options"],option=>{const checked=option===setting["default"]?" checked":"";const full=`${js_data_name}-${option.replace(/ /g,"-")}`;output+=`\ -`});output+="
    "}else{const checked=setting["default"]===true?" checked":"";output+=`\ -`}output+="
    "}return output}function buildSettingsPage(){const theme_names=getVar("themes").split(",").filter(t=>t);theme_names.push("light","dark","ayu");const settings=[{"name":"Theme","js_name":"theme","default":"system preference","options":theme_names.concat("system preference"),},{"name":"Preferred light theme","js_name":"preferred-light-theme","default":"light","options":theme_names,},{"name":"Preferred dark theme","js_name":"preferred-dark-theme","default":"dark","options":theme_names,},{"name":"Auto-hide item contents for large items","js_name":"auto-hide-large-items","default":true,},{"name":"Auto-hide item methods' documentation","js_name":"auto-hide-method-docs","default":false,},{"name":"Auto-hide trait implementation documentation","js_name":"auto-hide-trait-implementations","default":false,},{"name":"Directly go to item in search if there is only one result","js_name":"go-to-only-result","default":false,},{"name":"Show line numbers on code examples","js_name":"line-numbers","default":false,},{"name":"Disable keyboard shortcuts","js_name":"disable-shortcuts","default":false,},];const elementKind=isSettingsPage?"section":"div";const innerHTML=`
    ${buildSettingsPageSections(settings)}
    `;const el=document.createElement(elementKind);el.id="settings";if(!isSettingsPage){el.className="popover"}el.innerHTML=innerHTML;if(isSettingsPage){document.getElementById(MAIN_ID).appendChild(el)}else{el.setAttribute("tabindex","-1");getSettingsButton().appendChild(el)}return el}const settingsMenu=buildSettingsPage();function displaySettings(){settingsMenu.style.display=""}function settingsBlurHandler(event){blurHandler(event,getSettingsButton(),window.hidePopoverMenus)}if(isSettingsPage){getSettingsButton().onclick=function(event){event.preventDefault()}}else{const settingsButton=getSettingsButton();const settingsMenu=document.getElementById("settings");settingsButton.onclick=function(event){if(elemIsInParent(event.target,settingsMenu)){return}event.preventDefault();const shouldDisplaySettings=settingsMenu.style.display==="none";window.hideAllModals();if(shouldDisplaySettings){displaySettings()}};settingsButton.onblur=settingsBlurHandler;settingsButton.querySelector("a").onblur=settingsBlurHandler;onEachLazy(settingsMenu.querySelectorAll("input"),el=>{el.onblur=settingsBlurHandler});settingsMenu.onblur=settingsBlurHandler}setTimeout(()=>{setEvents(settingsMenu);if(!isSettingsPage){displaySettings()}removeClass(getSettingsButton(),"rotate")},0)})() \ No newline at end of file diff --git a/docs/static.files/source-script-5cf2e01a42cc9858.js b/docs/static.files/source-script-5cf2e01a42cc9858.js deleted file mode 100644 index f033213ebb..0000000000 --- a/docs/static.files/source-script-5cf2e01a42cc9858.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(function(){const rootPath=document.getElementById("rustdoc-vars").attributes["data-root-path"].value;const NAME_OFFSET=0;const DIRS_OFFSET=1;const FILES_OFFSET=2;function closeSidebarIfMobile(){if(window.innerWidth"){window.rustdocMobileScrollLock();addClass(document.documentElement,"source-sidebar-expanded");child.innerText="<";updateLocalStorage("source-sidebar-show","true")}else{window.rustdocMobileScrollUnlock();removeClass(document.documentElement,"source-sidebar-expanded");child.innerText=">";updateLocalStorage("source-sidebar-show","false")}}function createSidebarToggle(){const sidebarToggle=document.createElement("div");sidebarToggle.id="sidebar-toggle";const inner=document.createElement("button");if(getCurrentValue("source-sidebar-show")==="true"){inner.innerText="<"}else{inner.innerText=">"}inner.onclick=toggleSidebar;sidebarToggle.appendChild(inner);return sidebarToggle}function createSourceSidebar(){const container=document.querySelector("nav.sidebar");const sidebarToggle=createSidebarToggle();container.insertBefore(sidebarToggle,container.firstChild);const sidebar=document.createElement("div");sidebar.id="source-sidebar";let hasFoundFile=false;const title=document.createElement("div");title.className="title";title.innerText="Files";sidebar.appendChild(title);Object.keys(sourcesIndex).forEach(key=>{sourcesIndex[key][NAME_OFFSET]=key;hasFoundFile=createDirEntry(sourcesIndex[key],sidebar,"",hasFoundFile)});container.appendChild(sidebar);const selected_elem=sidebar.getElementsByClassName("selected")[0];if(typeof selected_elem!=="undefined"){selected_elem.focus()}}const lineNumbersRegex=/^#?(\d+)(?:-(\d+))?$/;function highlightSourceLines(match){if(typeof match==="undefined"){match=window.location.hash.match(lineNumbersRegex)}if(!match){return}let from=parseInt(match[1],10);let to=from;if(typeof match[2]!=="undefined"){to=parseInt(match[2],10)}if(to{onEachLazy(e.getElementsByTagName("a"),i_e=>{removeClass(i_e,"line-highlighted")})});for(let i=from;i<=to;++i){elem=document.getElementById(i);if(!elem){break}addClass(elem,"line-highlighted")}}const handleSourceHighlight=(function(){let prev_line_id=0;const set_fragment=name=>{const x=window.scrollX,y=window.scrollY;if(browserSupportsHistoryApi()){history.replaceState(null,null,"#"+name);highlightSourceLines()}else{location.replace("#"+name)}window.scrollTo(x,y)};return ev=>{let cur_line_id=parseInt(ev.target.id,10);if(isNaN(cur_line_id)||ev.ctrlKey||ev.altKey||ev.metaKey){return}ev.preventDefault();if(ev.shiftKey&&prev_line_id){if(prev_line_id>cur_line_id){const tmp=prev_line_id;prev_line_id=cur_line_id;cur_line_id=tmp}set_fragment(prev_line_id+"-"+cur_line_id)}else{prev_line_id=cur_line_id;set_fragment(cur_line_id)}}}());window.addEventListener("hashchange",()=>{const match=window.location.hash.match(lineNumbersRegex);if(match){return highlightSourceLines(match)}});onEachLazy(document.getElementsByClassName("src-line-numbers"),el=>{el.addEventListener("click",handleSourceHighlight)});highlightSourceLines();window.createSourceSidebar=createSourceSidebar})() \ No newline at end of file diff --git a/docs/static.files/src-script-39ed315d46fb705f.js b/docs/static.files/src-script-39ed315d46fb705f.js new file mode 100644 index 0000000000..ef74f361ea --- /dev/null +++ b/docs/static.files/src-script-39ed315d46fb705f.js @@ -0,0 +1 @@ +"use strict";(function(){const rootPath=getVar("root-path");const NAME_OFFSET=0;const DIRS_OFFSET=1;const FILES_OFFSET=2;const RUSTDOC_MOBILE_BREAKPOINT=700;function closeSidebarIfMobile(){if(window.innerWidth{removeClass(document.documentElement,"src-sidebar-expanded");getToggleLabel().innerText=">";updateLocalStorage("source-sidebar-show","false")};window.rustdocShowSourceSidebar=()=>{addClass(document.documentElement,"src-sidebar-expanded");getToggleLabel().innerText="<";updateLocalStorage("source-sidebar-show","true")};function toggleSidebar(){const child=this.parentNode.children[0];if(child.innerText===">"){window.rustdocShowSourceSidebar()}else{window.rustdocCloseSourceSidebar()}}function createSidebarToggle(){const sidebarToggle=document.createElement("div");sidebarToggle.id="src-sidebar-toggle";const inner=document.createElement("button");if(getCurrentValue("source-sidebar-show")==="true"){inner.innerText="<"}else{inner.innerText=">"}inner.onclick=toggleSidebar;sidebarToggle.appendChild(inner);return sidebarToggle}function createSrcSidebar(){const container=document.querySelector("nav.sidebar");const sidebarToggle=createSidebarToggle();container.insertBefore(sidebarToggle,container.firstChild);const sidebar=document.createElement("div");sidebar.id="src-sidebar";let hasFoundFile=false;const title=document.createElement("div");title.className="title";title.innerText="Files";sidebar.appendChild(title);for(const[key,source]of srcIndex){source[NAME_OFFSET]=key;hasFoundFile=createDirEntry(source,sidebar,"",hasFoundFile)}container.appendChild(sidebar);const selected_elem=sidebar.getElementsByClassName("selected")[0];if(typeof selected_elem!=="undefined"){selected_elem.focus()}}function highlightSrcLines(){const match=window.location.hash.match(/^#?(\d+)(?:-(\d+))?$/);if(!match){return}let from=parseInt(match[1],10);let to=from;if(typeof match[2]!=="undefined"){to=parseInt(match[2],10)}if(to{onEachLazy(e.getElementsByTagName("a"),i_e=>{removeClass(i_e,"line-highlighted")})});for(let i=from;i<=to;++i){elem=document.getElementById(i);if(!elem){break}addClass(elem,"line-highlighted")}}const handleSrcHighlight=(function(){let prev_line_id=0;const set_fragment=name=>{const x=window.scrollX,y=window.scrollY;if(browserSupportsHistoryApi()){history.replaceState(null,null,"#"+name);highlightSrcLines()}else{location.replace("#"+name)}window.scrollTo(x,y)};return ev=>{let cur_line_id=parseInt(ev.target.id,10);if(isNaN(cur_line_id)||ev.ctrlKey||ev.altKey||ev.metaKey){return}ev.preventDefault();if(ev.shiftKey&&prev_line_id){if(prev_line_id>cur_line_id){const tmp=prev_line_id;prev_line_id=cur_line_id;cur_line_id=tmp}set_fragment(prev_line_id+"-"+cur_line_id)}else{prev_line_id=cur_line_id;set_fragment(cur_line_id)}}}());window.addEventListener("hashchange",highlightSrcLines);onEachLazy(document.getElementsByClassName("src-line-numbers"),el=>{el.addEventListener("click",handleSrcHighlight)});highlightSrcLines();window.createSrcSidebar=createSrcSidebar})() \ No newline at end of file diff --git a/docs/static.files/storage-d43fa987303ecbbb.js b/docs/static.files/storage-d43fa987303ecbbb.js deleted file mode 100644 index 017aff706c..0000000000 --- a/docs/static.files/storage-d43fa987303ecbbb.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";const darkThemes=["dark","ayu"];window.currentTheme=document.getElementById("themeStyle");window.mainTheme=document.getElementById("mainThemeStyle");window.RUSTDOC_MOBILE_BREAKPOINT=700;const settingsDataset=(function(){const settingsElement=document.getElementById("default-settings");if(settingsElement===null){return null}const dataset=settingsElement.dataset;if(dataset===undefined){return null}return dataset})();function getSettingValue(settingName){const current=getCurrentValue(settingName);if(current!==null){return current}if(settingsDataset!==null){const def=settingsDataset[settingName.replace(/-/g,"_")];if(def!==undefined){return def}}return null}const localStoredTheme=getSettingValue("theme");const savedHref=[];function hasClass(elem,className){return elem&&elem.classList&&elem.classList.contains(className)}function addClass(elem,className){if(!elem||!elem.classList){return}elem.classList.add(className)}function removeClass(elem,className){if(!elem||!elem.classList){return}elem.classList.remove(className)}function onEach(arr,func,reversed){if(arr&&arr.length>0&&func){if(reversed){const length=arr.length;for(let i=length-1;i>=0;--i){if(func(arr[i])){return true}}}else{for(const elem of arr){if(func(elem)){return true}}}}return false}function onEachLazy(lazyArray,func,reversed){return onEach(Array.prototype.slice.call(lazyArray),func,reversed)}function updateLocalStorage(name,value){try{window.localStorage.setItem("rustdoc-"+name,value)}catch(e){}}function getCurrentValue(name){try{return window.localStorage.getItem("rustdoc-"+name)}catch(e){return null}}function switchTheme(styleElem,mainStyleElem,newThemeName,saveTheme){if(saveTheme){updateLocalStorage("theme",newThemeName)}if(savedHref.length===0){onEachLazy(document.getElementsByTagName("link"),el=>{savedHref.push(el.href)})}const newHref=savedHref.find(url=>{const m=url.match(/static\.files\/(.*)-[a-f0-9]{16}\.css$/);if(m&&m[1]===newThemeName){return true}const m2=url.match(/\/([^/]*)\.css$/);if(m2&&m2[1].startsWith(newThemeName)){return true}});if(newHref&&newHref!==styleElem.href){styleElem.href=newHref}}function useSystemTheme(value){if(value===undefined){value=true}updateLocalStorage("use-system-theme",value);const toggle=document.getElementById("use-system-theme");if(toggle&&toggle instanceof HTMLInputElement){toggle.checked=value}}const updateSystemTheme=(function(){if(!window.matchMedia){return()=>{const cssTheme=getComputedStyle(document.documentElement).getPropertyValue("content");switchTheme(window.currentTheme,window.mainTheme,JSON.parse(cssTheme)||"light",true)}}const mql=window.matchMedia("(prefers-color-scheme: dark)");function handlePreferenceChange(mql){const use=theme=>{switchTheme(window.currentTheme,window.mainTheme,theme,true)};if(getSettingValue("use-system-theme")!=="false"){const lightTheme=getSettingValue("preferred-light-theme")||"light";const darkTheme=getSettingValue("preferred-dark-theme")||"dark";if(mql.matches){use(darkTheme)}else{use(lightTheme)}}else{use(getSettingValue("theme"))}}mql.addListener(handlePreferenceChange);return()=>{handlePreferenceChange(mql)}})();function switchToSavedTheme(){switchTheme(window.currentTheme,window.mainTheme,getSettingValue("theme")||"light",false)}if(getSettingValue("use-system-theme")!=="false"&&window.matchMedia){if(getSettingValue("use-system-theme")===null&&getSettingValue("preferred-dark-theme")===null&&darkThemes.indexOf(localStoredTheme)>=0){updateLocalStorage("preferred-dark-theme",localStoredTheme)}updateSystemTheme()}else{switchToSavedTheme()}if(getSettingValue("source-sidebar-show")==="true"){addClass(document.documentElement,"source-sidebar-expanded")}window.addEventListener("pageshow",ev=>{if(ev.persisted){setTimeout(switchToSavedTheme,0)}}) \ No newline at end of file diff --git a/docs/static.files/storage-f2adc0d6ca4d09fb.js b/docs/static.files/storage-f2adc0d6ca4d09fb.js new file mode 100644 index 0000000000..17233608a7 --- /dev/null +++ b/docs/static.files/storage-f2adc0d6ca4d09fb.js @@ -0,0 +1 @@ +"use strict";const builtinThemes=["light","dark","ayu"];const darkThemes=["dark","ayu"];window.currentTheme=document.getElementById("themeStyle");const settingsDataset=(function(){const settingsElement=document.getElementById("default-settings");return settingsElement&&settingsElement.dataset?settingsElement.dataset:null})();function getSettingValue(settingName){const current=getCurrentValue(settingName);if(current===null&&settingsDataset!==null){const def=settingsDataset[settingName.replace(/-/g,"_")];if(def!==undefined){return def}}return current}const localStoredTheme=getSettingValue("theme");function hasClass(elem,className){return elem&&elem.classList&&elem.classList.contains(className)}function addClass(elem,className){if(elem&&elem.classList){elem.classList.add(className)}}function removeClass(elem,className){if(elem&&elem.classList){elem.classList.remove(className)}}function onEach(arr,func){for(const elem of arr){if(func(elem)){return true}}return false}function onEachLazy(lazyArray,func){return onEach(Array.prototype.slice.call(lazyArray),func)}function updateLocalStorage(name,value){try{window.localStorage.setItem("rustdoc-"+name,value)}catch(e){}}function getCurrentValue(name){try{return window.localStorage.getItem("rustdoc-"+name)}catch(e){return null}}const getVar=(function getVar(name){const el=document.querySelector("head > meta[name='rustdoc-vars']");return el?el.attributes["data-"+name].value:null});function switchTheme(newThemeName,saveTheme){if(saveTheme){updateLocalStorage("theme",newThemeName)}document.documentElement.setAttribute("data-theme",newThemeName);if(builtinThemes.indexOf(newThemeName)!==-1){if(window.currentTheme){window.currentTheme.parentNode.removeChild(window.currentTheme);window.currentTheme=null}}else{const newHref=getVar("root-path")+newThemeName+getVar("resource-suffix")+".css";if(!window.currentTheme){if(document.readyState==="loading"){document.write(``);window.currentTheme=document.getElementById("themeStyle")}else{window.currentTheme=document.createElement("link");window.currentTheme.rel="stylesheet";window.currentTheme.id="themeStyle";window.currentTheme.href=newHref;document.documentElement.appendChild(window.currentTheme)}}else if(newHref!==window.currentTheme.href){window.currentTheme.href=newHref}}}const updateTheme=(function(){const mql=window.matchMedia("(prefers-color-scheme: dark)");function updateTheme(){if(getSettingValue("use-system-theme")!=="false"){const lightTheme=getSettingValue("preferred-light-theme")||"light";const darkTheme=getSettingValue("preferred-dark-theme")||"dark";updateLocalStorage("use-system-theme","true");switchTheme(mql.matches?darkTheme:lightTheme,true)}else{switchTheme(getSettingValue("theme"),false)}}mql.addEventListener("change",updateTheme);return updateTheme})();if(getSettingValue("use-system-theme")!=="false"&&window.matchMedia){if(getSettingValue("use-system-theme")===null&&getSettingValue("preferred-dark-theme")===null&&darkThemes.indexOf(localStoredTheme)>=0){updateLocalStorage("preferred-dark-theme",localStoredTheme)}}updateTheme();if(getSettingValue("source-sidebar-show")==="true"){addClass(document.documentElement,"src-sidebar-expanded")}if(getSettingValue("hide-sidebar")==="true"){addClass(document.documentElement,"hide-sidebar")}function updateSidebarWidth(){const desktopSidebarWidth=getSettingValue("desktop-sidebar-width");if(desktopSidebarWidth&&desktopSidebarWidth!=="null"){document.documentElement.style.setProperty("--desktop-sidebar-width",desktopSidebarWidth+"px")}const srcSidebarWidth=getSettingValue("src-sidebar-width");if(srcSidebarWidth&&srcSidebarWidth!=="null"){document.documentElement.style.setProperty("--src-sidebar-width",srcSidebarWidth+"px")}}updateSidebarWidth();window.addEventListener("pageshow",ev=>{if(ev.persisted){setTimeout(updateTheme,0);setTimeout(updateSidebarWidth,0)}}) \ No newline at end of file diff --git a/docs/static.files/toggle-minus-31bbd6e4c77f5c96.svg b/docs/static.files/toggle-minus-31bbd6e4c77f5c96.svg deleted file mode 100644 index 73154788a0..0000000000 --- a/docs/static.files/toggle-minus-31bbd6e4c77f5c96.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/docs/static.files/toggle-plus-1092eb4930d581b0.svg b/docs/static.files/toggle-plus-1092eb4930d581b0.svg deleted file mode 100644 index 08b17033e1..0000000000 --- a/docs/static.files/toggle-plus-1092eb4930d581b0.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/docs/static.files/wheel-5ec35bf9ca753509.svg b/docs/static.files/wheel-5ec35bf9ca753509.svg deleted file mode 100644 index 01da3b24c7..0000000000 --- a/docs/static.files/wheel-5ec35bf9ca753509.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/docs/static.files/wheel-7b819b6101059cd0.svg b/docs/static.files/wheel-7b819b6101059cd0.svg new file mode 100644 index 0000000000..83c07f63d1 --- /dev/null +++ b/docs/static.files/wheel-7b819b6101059cd0.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/trait.impl/core/clone/trait.Clone.js b/docs/trait.impl/core/clone/trait.Clone.js new file mode 100644 index 0000000000..d51323f4ed --- /dev/null +++ b/docs/trait.impl/core/clone/trait.Clone.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"glean_core":[["impl Clone for Metric"],["impl Clone for ErrorType"],["impl Clone for Datetime"],["impl Clone for StringMetric"],["impl Clone for UuidMetric"],["impl Clone for RecordedEvent"],["impl Clone for EventMetric"],["impl Clone for TimespanMetric"],["impl Clone for RemoteSettingsConfig"],["impl Clone for BooleanMetric"],["impl Clone for RateMetric"],["impl Clone for TimingDistributionMetric"],["impl Clone for PingRateLimit"],["impl Clone for HistogramType"],["impl Clone for StringListMetric"],["impl Clone for TimerId"],["impl Clone for RecordedExperiment"],["impl Clone for Rate"],["impl Clone for NumeratorMetric"],["impl Clone for DatetimeMetric"],["impl Clone for CustomDistributionMetric"],["impl Clone for MemoryDistributionMetric"],["impl Clone for CommonMetricData"],["impl Clone for DenominatorMetric"],["impl Clone for CounterMetric"],["impl Clone for PingType"],["impl Clone for PingPayload"],["impl Clone for InternalConfiguration"],["impl Clone for MemoryUnit"],["impl Clone for ObjectMetric"],["impl Clone for TextMetric"],["impl Clone for TimeUnit"],["impl Clone for QuantityMetric"],["impl Clone for Lifetime"],["impl Clone for UrlMetric"],["impl Clone for NoExtraKeys"],["impl Clone for PingRequest"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/trait.impl/core/cmp/trait.Eq.js b/docs/trait.impl/core/cmp/trait.Eq.js new file mode 100644 index 0000000000..2e003d8fb8 --- /dev/null +++ b/docs/trait.impl/core/cmp/trait.Eq.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"glean_core":[["impl Eq for RecordedExperiment"],["impl Eq for NoExtraKeys"],["impl Eq for PingUploadTask"],["impl Eq for Lifetime"],["impl Eq for ErrorType"],["impl Eq for PingRequest"],["impl Eq for RecordedEvent"],["impl Eq for TimeUnit"],["impl Eq for Rate"],["impl Eq for Datetime"],["impl Eq for TimerId"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/trait.impl/core/cmp/trait.PartialEq.js b/docs/trait.impl/core/cmp/trait.PartialEq.js new file mode 100644 index 0000000000..46bc3229f3 --- /dev/null +++ b/docs/trait.impl/core/cmp/trait.PartialEq.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"glean_core":[["impl PartialEq for Rate"],["impl PartialEq for ErrorType"],["impl PartialEq for RecordedEvent"],["impl PartialEq for Metric"],["impl PartialEq for PingUploadTask"],["impl PartialEq for PingRequest"],["impl PartialEq for NoExtraKeys"],["impl PartialEq for TimerId"],["impl PartialEq for Lifetime"],["impl PartialEq for Datetime"],["impl PartialEq for TimeUnit"],["impl PartialEq for RecordedExperiment"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/trait.impl/core/convert/trait.From.js b/docs/trait.impl/core/convert/trait.From.js new file mode 100644 index 0000000000..34d14ef7d8 --- /dev/null +++ b/docs/trait.impl/core/convert/trait.From.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"glean_core":[["impl From<Error> for Error"],["impl From<u64> for TimerId"],["impl From<StoreError> for Error"],["impl From<ErrorKind> for Error"],["impl From<Infallible> for Error"],["impl From<usize> for TimerId"],["impl From<OsString> for Error"],["impl From<(i32, i32)> for Rate"],["impl From<Error> for Error"],["impl From<UnexpectedUniFFICallbackError> for CallbackError"],["impl From<DateTime<FixedOffset>> for Datetime"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/trait.impl/core/convert/trait.TryFrom.js b/docs/trait.impl/core/convert/trait.TryFrom.js new file mode 100644 index 0000000000..520216f7f4 --- /dev/null +++ b/docs/trait.impl/core/convert/trait.TryFrom.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"glean_core":[["impl TryFrom<i32> for NoExtraKeys"],["impl TryFrom<i32> for ErrorType"],["impl TryFrom<i32> for TimeUnit"],["impl TryFrom<i32> for HistogramType"],["impl TryFrom<&str> for NoExtraKeys"],["impl TryFrom<i32> for MemoryUnit"],["impl TryFrom<i32> for Lifetime"],["impl TryFrom<String> for RemoteSettingsConfig"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/trait.impl/core/default/trait.Default.js b/docs/trait.impl/core/default/trait.Default.js new file mode 100644 index 0000000000..3e7dfe43b2 --- /dev/null +++ b/docs/trait.impl/core/default/trait.Default.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"glean_core":[["impl Default for PingPayload"],["impl Default for CommonMetricData"],["impl Default for Lifetime"],["impl Default for PingMaker"],["impl Default for PingMetadata"],["impl Default for RemoteSettingsConfig"],["impl Default for ClientInfoMetrics"],["impl Default for Datetime"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/implementors/core/error/trait.Error.js b/docs/trait.impl/core/error/trait.Error.js similarity index 80% rename from docs/implementors/core/error/trait.Error.js rename to docs/trait.impl/core/error/trait.Error.js index e53eeef444..99a65d3d5f 100644 --- a/docs/implementors/core/error/trait.Error.js +++ b/docs/trait.impl/core/error/trait.Error.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"glean_core":[["impl Error for Error"],["impl Error for ObjectError"],["impl Error for CallbackError"]] +"glean_core":[["impl Error for Error"],["impl Error for ObjectError"],["impl Error for CallbackError"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/trait.impl/core/fmt/trait.Debug.js b/docs/trait.impl/core/fmt/trait.Debug.js new file mode 100644 index 0000000000..cc9089c6c2 --- /dev/null +++ b/docs/trait.impl/core/fmt/trait.Debug.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"glean_core":[["impl Debug for UuidMetric"],["impl Debug for PingUploadTask"],["impl Debug for TimingDistributionMetric"],["impl Debug for PingUploadManager"],["impl Debug for CounterMetric"],["impl Debug for StringMetric"],["impl Debug for DatetimeMetric"],["impl Debug for DenominatorMetric"],["impl Debug for ObjectMetric"],["impl Debug for RemoteSettingsConfig"],["impl Debug for Error"],["impl Debug for ClientInfoMetrics"],["impl Debug for HistogramType"],["impl Debug for ErrorKind"],["impl Debug for CommonMetricData"],["impl Debug for UploadResult"],["impl Debug for ObjectError"],["impl Debug for Lifetime"],["impl Debug for Glean"],["impl Debug for RecordedExperiment"],["impl Debug for MemoryUnit"],["impl Debug for PingRequest"],["impl Debug for TimespanMetric"],["impl Debug for MemoryDistributionMetric"],["impl<T: Debug> Debug for LabeledMetric<T>"],["impl Debug for QuantityMetric"],["impl Debug for CallbackError"],["impl Debug for UrlMetric"],["impl Debug for TextMetric"],["impl Debug for PingType"],["impl Debug for InternalConfiguration"],["impl Debug for EventMetric"],["impl Debug for DistributionData"],["impl Debug for RecordedEvent"],["impl Debug for TimeUnit"],["impl Debug for RateMetric"],["impl Debug for TimerId"],["impl Debug for UploadTaskAction"],["impl Debug for Rate"],["impl Debug for PingPayload"],["impl Debug for Datetime"],["impl Debug for ErrorType"],["impl Debug for CustomDistributionMetric"],["impl Debug for Metric"],["impl Debug for PingRateLimit"],["impl Debug for StringListMetric"],["impl Debug for NoExtraKeys"],["impl Debug for BooleanMetric"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/trait.impl/core/fmt/trait.Display.js b/docs/trait.impl/core/fmt/trait.Display.js new file mode 100644 index 0000000000..da91c9d6b0 --- /dev/null +++ b/docs/trait.impl/core/fmt/trait.Display.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"glean_core":[["impl Display for ObjectError"],["impl Display for CallbackError"],["impl Display for Error"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/implementors/core/hash/trait.Hash.js b/docs/trait.impl/core/hash/trait.Hash.js similarity index 82% rename from docs/implementors/core/hash/trait.Hash.js rename to docs/trait.impl/core/hash/trait.Hash.js index 80e03dfec2..5b7855edb1 100644 --- a/docs/implementors/core/hash/trait.Hash.js +++ b/docs/trait.impl/core/hash/trait.Hash.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"glean_core":[["impl Hash for TimerId"],["impl Hash for NoExtraKeys"]] +"glean_core":[["impl Hash for TimerId"],["impl Hash for NoExtraKeys"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/trait.impl/core/marker/trait.Copy.js b/docs/trait.impl/core/marker/trait.Copy.js new file mode 100644 index 0000000000..a23fadfeda --- /dev/null +++ b/docs/trait.impl/core/marker/trait.Copy.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"glean_core":[["impl Copy for HistogramType"],["impl Copy for Lifetime"],["impl Copy for TimerId"],["impl Copy for NoExtraKeys"],["impl Copy for ErrorType"],["impl Copy for MemoryUnit"],["impl Copy for TimeUnit"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/implementors/core/marker/trait.Freeze.js b/docs/trait.impl/core/marker/trait.Freeze.js similarity index 100% rename from docs/implementors/core/marker/trait.Freeze.js rename to docs/trait.impl/core/marker/trait.Freeze.js diff --git a/docs/trait.impl/core/marker/trait.Send.js b/docs/trait.impl/core/marker/trait.Send.js new file mode 100644 index 0000000000..31a39902a0 --- /dev/null +++ b/docs/trait.impl/core/marker/trait.Send.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"glean_core":[["impl Send for Lifetime",1,["glean_core::common_metric_data::Lifetime"]],["impl Send for CommonMetricData",1,["glean_core::common_metric_data::CommonMetricData"]],["impl Send for Glean",1,["glean_core::core::Glean"]],["impl Send for ClientInfoMetrics",1,["glean_core::core_metrics::ClientInfoMetrics"]],["impl Send for ErrorKind",1,["glean_core::error::ErrorKind"]],["impl Send for Error",1,["glean_core::error::Error"]],["impl Send for ErrorType",1,["glean_core::error_recording::ErrorType"]],["impl Send for RecordedEvent",1,["glean_core::event_database::RecordedEvent"]],["impl Send for HistogramType",1,["glean_core::histogram::HistogramType"]],["impl Send for BooleanMetric",1,["glean_core::metrics::boolean::BooleanMetric"]],["impl Send for CounterMetric",1,["glean_core::metrics::counter::CounterMetric"]],["impl Send for CustomDistributionMetric",1,["glean_core::metrics::custom_distribution::CustomDistributionMetric"]],["impl Send for Datetime",1,["glean_core::metrics::datetime::Datetime"]],["impl Send for DatetimeMetric",1,["glean_core::metrics::datetime::DatetimeMetric"]],["impl Send for DenominatorMetric",1,["glean_core::metrics::denominator::DenominatorMetric"]],["impl Send for EventMetric",1,["glean_core::metrics::event::EventMetric"]],["impl Send for LabeledMetricData",1,["glean_core::metrics::labeled::LabeledMetricData"]],["impl<T> Send for LabeledMetric<T>
    where\n T: Send + Sync,
    ",1,["glean_core::metrics::labeled::LabeledMetric"]],["impl Send for MemoryDistributionMetric",1,["glean_core::metrics::memory_distribution::MemoryDistributionMetric"]],["impl Send for MemoryUnit",1,["glean_core::metrics::memory_unit::MemoryUnit"]],["impl Send for NumeratorMetric",1,["glean_core::metrics::numerator::NumeratorMetric"]],["impl Send for ObjectMetric",1,["glean_core::metrics::object::ObjectMetric"]],["impl Send for PingType",1,["glean_core::metrics::ping::PingType"]],["impl Send for QuantityMetric",1,["glean_core::metrics::quantity::QuantityMetric"]],["impl Send for Rate",1,["glean_core::metrics::rate::Rate"]],["impl Send for RateMetric",1,["glean_core::metrics::rate::RateMetric"]],["impl Send for RecordedExperiment",1,["glean_core::metrics::recorded_experiment::RecordedExperiment"]],["impl Send for RemoteSettingsConfig",1,["glean_core::metrics::remote_settings_config::RemoteSettingsConfig"]],["impl Send for StringMetric",1,["glean_core::metrics::string::StringMetric"]],["impl Send for StringListMetric",1,["glean_core::metrics::string_list::StringListMetric"]],["impl Send for TextMetric",1,["glean_core::metrics::text::TextMetric"]],["impl Send for TimeUnit",1,["glean_core::metrics::time_unit::TimeUnit"]],["impl Send for TimespanMetric",1,["glean_core::metrics::timespan::TimespanMetric"]],["impl Send for TimerId",1,["glean_core::metrics::timing_distribution::TimerId"]],["impl Send for TimingDistributionMetric",1,["glean_core::metrics::timing_distribution::TimingDistributionMetric"]],["impl Send for UrlMetric",1,["glean_core::metrics::url::UrlMetric"]],["impl Send for UuidMetric",1,["glean_core::metrics::uuid::UuidMetric"]],["impl Send for DistributionData",1,["glean_core::metrics::DistributionData"]],["impl Send for Metric",1,["glean_core::metrics::Metric"]],["impl<'a> Send for Ping<'a>",1,["glean_core::ping::Ping"]],["impl Send for PingMaker",1,["glean_core::ping::PingMaker"]],["impl Send for StorageManager",1,["glean_core::storage::StorageManager"]],["impl Send for NoExtraKeys",1,["glean_core::traits::event::NoExtraKeys"]],["impl Send for EventRecordingError",1,["glean_core::traits::event::EventRecordingError"]],["impl Send for ObjectError",1,["glean_core::traits::object::ObjectError"]],["impl Send for PingPayload",1,["glean_core::upload::directory::PingPayload"]],["impl Send for PingMetadata",1,["glean_core::upload::directory::PingMetadata"]],["impl Send for PingRequest",1,["glean_core::upload::request::PingRequest"]],["impl Send for UploadResult",1,["glean_core::upload::result::UploadResult"]],["impl Send for UploadTaskAction",1,["glean_core::upload::result::UploadTaskAction"]],["impl Send for PingUploadTask",1,["glean_core::upload::PingUploadTask"]],["impl Send for PingUploadManager",1,["glean_core::upload::PingUploadManager"]],["impl Send for InternalConfiguration",1,["glean_core::InternalConfiguration"]],["impl Send for PingRateLimit",1,["glean_core::PingRateLimit"]],["impl Send for CallbackError",1,["glean_core::CallbackError"]]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/trait.impl/core/marker/trait.StructuralEq.js b/docs/trait.impl/core/marker/trait.StructuralEq.js new file mode 100644 index 0000000000..d59ba62144 --- /dev/null +++ b/docs/trait.impl/core/marker/trait.StructuralEq.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"glean_core":[["impl StructuralEq for TimeUnit"],["impl StructuralEq for Rate"],["impl StructuralEq for Lifetime"],["impl StructuralEq for PingUploadTask"],["impl StructuralEq for Datetime"],["impl StructuralEq for ErrorType"],["impl StructuralEq for NoExtraKeys"],["impl StructuralEq for TimerId"],["impl StructuralEq for RecordedEvent"],["impl StructuralEq for RecordedExperiment"],["impl StructuralEq for PingRequest"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/trait.impl/core/marker/trait.StructuralPartialEq.js b/docs/trait.impl/core/marker/trait.StructuralPartialEq.js new file mode 100644 index 0000000000..f7aa5809d2 --- /dev/null +++ b/docs/trait.impl/core/marker/trait.StructuralPartialEq.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"glean_core":[["impl StructuralPartialEq for ErrorType"],["impl StructuralPartialEq for Lifetime"],["impl StructuralPartialEq for RecordedEvent"],["impl StructuralPartialEq for RecordedExperiment"],["impl StructuralPartialEq for Datetime"],["impl StructuralPartialEq for Metric"],["impl StructuralPartialEq for NoExtraKeys"],["impl StructuralPartialEq for PingUploadTask"],["impl StructuralPartialEq for Rate"],["impl StructuralPartialEq for PingRequest"],["impl StructuralPartialEq for TimerId"],["impl StructuralPartialEq for TimeUnit"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/trait.impl/core/marker/trait.Sync.js b/docs/trait.impl/core/marker/trait.Sync.js new file mode 100644 index 0000000000..62635a52cc --- /dev/null +++ b/docs/trait.impl/core/marker/trait.Sync.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"glean_core":[["impl Sync for Lifetime",1,["glean_core::common_metric_data::Lifetime"]],["impl Sync for CommonMetricData",1,["glean_core::common_metric_data::CommonMetricData"]],["impl !Sync for Glean",1,["glean_core::core::Glean"]],["impl Sync for ClientInfoMetrics",1,["glean_core::core_metrics::ClientInfoMetrics"]],["impl Sync for ErrorKind",1,["glean_core::error::ErrorKind"]],["impl Sync for Error",1,["glean_core::error::Error"]],["impl Sync for ErrorType",1,["glean_core::error_recording::ErrorType"]],["impl Sync for RecordedEvent",1,["glean_core::event_database::RecordedEvent"]],["impl Sync for HistogramType",1,["glean_core::histogram::HistogramType"]],["impl Sync for BooleanMetric",1,["glean_core::metrics::boolean::BooleanMetric"]],["impl Sync for CounterMetric",1,["glean_core::metrics::counter::CounterMetric"]],["impl Sync for CustomDistributionMetric",1,["glean_core::metrics::custom_distribution::CustomDistributionMetric"]],["impl Sync for Datetime",1,["glean_core::metrics::datetime::Datetime"]],["impl Sync for DatetimeMetric",1,["glean_core::metrics::datetime::DatetimeMetric"]],["impl Sync for DenominatorMetric",1,["glean_core::metrics::denominator::DenominatorMetric"]],["impl Sync for EventMetric",1,["glean_core::metrics::event::EventMetric"]],["impl Sync for LabeledMetricData",1,["glean_core::metrics::labeled::LabeledMetricData"]],["impl<T> Sync for LabeledMetric<T>
    where\n T: Send + Sync,
    ",1,["glean_core::metrics::labeled::LabeledMetric"]],["impl Sync for MemoryDistributionMetric",1,["glean_core::metrics::memory_distribution::MemoryDistributionMetric"]],["impl Sync for MemoryUnit",1,["glean_core::metrics::memory_unit::MemoryUnit"]],["impl Sync for NumeratorMetric",1,["glean_core::metrics::numerator::NumeratorMetric"]],["impl Sync for ObjectMetric",1,["glean_core::metrics::object::ObjectMetric"]],["impl Sync for PingType",1,["glean_core::metrics::ping::PingType"]],["impl Sync for QuantityMetric",1,["glean_core::metrics::quantity::QuantityMetric"]],["impl Sync for Rate",1,["glean_core::metrics::rate::Rate"]],["impl Sync for RateMetric",1,["glean_core::metrics::rate::RateMetric"]],["impl Sync for RecordedExperiment",1,["glean_core::metrics::recorded_experiment::RecordedExperiment"]],["impl Sync for RemoteSettingsConfig",1,["glean_core::metrics::remote_settings_config::RemoteSettingsConfig"]],["impl Sync for StringMetric",1,["glean_core::metrics::string::StringMetric"]],["impl Sync for StringListMetric",1,["glean_core::metrics::string_list::StringListMetric"]],["impl Sync for TextMetric",1,["glean_core::metrics::text::TextMetric"]],["impl Sync for TimeUnit",1,["glean_core::metrics::time_unit::TimeUnit"]],["impl Sync for TimespanMetric",1,["glean_core::metrics::timespan::TimespanMetric"]],["impl Sync for TimerId",1,["glean_core::metrics::timing_distribution::TimerId"]],["impl Sync for TimingDistributionMetric",1,["glean_core::metrics::timing_distribution::TimingDistributionMetric"]],["impl Sync for UrlMetric",1,["glean_core::metrics::url::UrlMetric"]],["impl Sync for UuidMetric",1,["glean_core::metrics::uuid::UuidMetric"]],["impl Sync for DistributionData",1,["glean_core::metrics::DistributionData"]],["impl Sync for Metric",1,["glean_core::metrics::Metric"]],["impl<'a> Sync for Ping<'a>",1,["glean_core::ping::Ping"]],["impl Sync for PingMaker",1,["glean_core::ping::PingMaker"]],["impl Sync for StorageManager",1,["glean_core::storage::StorageManager"]],["impl Sync for NoExtraKeys",1,["glean_core::traits::event::NoExtraKeys"]],["impl Sync for EventRecordingError",1,["glean_core::traits::event::EventRecordingError"]],["impl Sync for ObjectError",1,["glean_core::traits::object::ObjectError"]],["impl Sync for PingPayload",1,["glean_core::upload::directory::PingPayload"]],["impl Sync for PingMetadata",1,["glean_core::upload::directory::PingMetadata"]],["impl Sync for PingRequest",1,["glean_core::upload::request::PingRequest"]],["impl Sync for UploadResult",1,["glean_core::upload::result::UploadResult"]],["impl Sync for UploadTaskAction",1,["glean_core::upload::result::UploadTaskAction"]],["impl Sync for PingUploadTask",1,["glean_core::upload::PingUploadTask"]],["impl Sync for PingUploadManager",1,["glean_core::upload::PingUploadManager"]],["impl Sync for InternalConfiguration",1,["glean_core::InternalConfiguration"]],["impl Sync for PingRateLimit",1,["glean_core::PingRateLimit"]],["impl Sync for CallbackError",1,["glean_core::CallbackError"]]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/trait.impl/core/marker/trait.Unpin.js b/docs/trait.impl/core/marker/trait.Unpin.js new file mode 100644 index 0000000000..24dbf61859 --- /dev/null +++ b/docs/trait.impl/core/marker/trait.Unpin.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"glean_core":[["impl Unpin for Lifetime",1,["glean_core::common_metric_data::Lifetime"]],["impl Unpin for CommonMetricData",1,["glean_core::common_metric_data::CommonMetricData"]],["impl Unpin for Glean",1,["glean_core::core::Glean"]],["impl Unpin for ClientInfoMetrics",1,["glean_core::core_metrics::ClientInfoMetrics"]],["impl Unpin for ErrorKind",1,["glean_core::error::ErrorKind"]],["impl Unpin for Error",1,["glean_core::error::Error"]],["impl Unpin for ErrorType",1,["glean_core::error_recording::ErrorType"]],["impl Unpin for RecordedEvent",1,["glean_core::event_database::RecordedEvent"]],["impl Unpin for HistogramType",1,["glean_core::histogram::HistogramType"]],["impl Unpin for BooleanMetric",1,["glean_core::metrics::boolean::BooleanMetric"]],["impl Unpin for CounterMetric",1,["glean_core::metrics::counter::CounterMetric"]],["impl Unpin for CustomDistributionMetric",1,["glean_core::metrics::custom_distribution::CustomDistributionMetric"]],["impl Unpin for Datetime",1,["glean_core::metrics::datetime::Datetime"]],["impl Unpin for DatetimeMetric",1,["glean_core::metrics::datetime::DatetimeMetric"]],["impl Unpin for DenominatorMetric",1,["glean_core::metrics::denominator::DenominatorMetric"]],["impl Unpin for EventMetric",1,["glean_core::metrics::event::EventMetric"]],["impl Unpin for LabeledMetricData",1,["glean_core::metrics::labeled::LabeledMetricData"]],["impl<T> Unpin for LabeledMetric<T>
    where\n T: Unpin,
    ",1,["glean_core::metrics::labeled::LabeledMetric"]],["impl Unpin for MemoryDistributionMetric",1,["glean_core::metrics::memory_distribution::MemoryDistributionMetric"]],["impl Unpin for MemoryUnit",1,["glean_core::metrics::memory_unit::MemoryUnit"]],["impl Unpin for NumeratorMetric",1,["glean_core::metrics::numerator::NumeratorMetric"]],["impl Unpin for ObjectMetric",1,["glean_core::metrics::object::ObjectMetric"]],["impl Unpin for PingType",1,["glean_core::metrics::ping::PingType"]],["impl Unpin for QuantityMetric",1,["glean_core::metrics::quantity::QuantityMetric"]],["impl Unpin for Rate",1,["glean_core::metrics::rate::Rate"]],["impl Unpin for RateMetric",1,["glean_core::metrics::rate::RateMetric"]],["impl Unpin for RecordedExperiment",1,["glean_core::metrics::recorded_experiment::RecordedExperiment"]],["impl Unpin for RemoteSettingsConfig",1,["glean_core::metrics::remote_settings_config::RemoteSettingsConfig"]],["impl Unpin for StringMetric",1,["glean_core::metrics::string::StringMetric"]],["impl Unpin for StringListMetric",1,["glean_core::metrics::string_list::StringListMetric"]],["impl Unpin for TextMetric",1,["glean_core::metrics::text::TextMetric"]],["impl Unpin for TimeUnit",1,["glean_core::metrics::time_unit::TimeUnit"]],["impl Unpin for TimespanMetric",1,["glean_core::metrics::timespan::TimespanMetric"]],["impl Unpin for TimerId",1,["glean_core::metrics::timing_distribution::TimerId"]],["impl Unpin for TimingDistributionMetric",1,["glean_core::metrics::timing_distribution::TimingDistributionMetric"]],["impl Unpin for UrlMetric",1,["glean_core::metrics::url::UrlMetric"]],["impl Unpin for UuidMetric",1,["glean_core::metrics::uuid::UuidMetric"]],["impl Unpin for DistributionData",1,["glean_core::metrics::DistributionData"]],["impl Unpin for Metric",1,["glean_core::metrics::Metric"]],["impl<'a> Unpin for Ping<'a>",1,["glean_core::ping::Ping"]],["impl Unpin for PingMaker",1,["glean_core::ping::PingMaker"]],["impl Unpin for StorageManager",1,["glean_core::storage::StorageManager"]],["impl Unpin for NoExtraKeys",1,["glean_core::traits::event::NoExtraKeys"]],["impl Unpin for EventRecordingError",1,["glean_core::traits::event::EventRecordingError"]],["impl Unpin for ObjectError",1,["glean_core::traits::object::ObjectError"]],["impl Unpin for PingPayload",1,["glean_core::upload::directory::PingPayload"]],["impl Unpin for PingMetadata",1,["glean_core::upload::directory::PingMetadata"]],["impl Unpin for PingRequest",1,["glean_core::upload::request::PingRequest"]],["impl Unpin for UploadResult",1,["glean_core::upload::result::UploadResult"]],["impl Unpin for UploadTaskAction",1,["glean_core::upload::result::UploadTaskAction"]],["impl Unpin for PingUploadTask",1,["glean_core::upload::PingUploadTask"]],["impl Unpin for PingUploadManager",1,["glean_core::upload::PingUploadManager"]],["impl Unpin for InternalConfiguration",1,["glean_core::InternalConfiguration"]],["impl Unpin for PingRateLimit",1,["glean_core::PingRateLimit"]],["impl Unpin for CallbackError",1,["glean_core::CallbackError"]]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js b/docs/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js new file mode 100644 index 0000000000..f534e0bccd --- /dev/null +++ b/docs/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"glean_core":[["impl RefUnwindSafe for Lifetime",1,["glean_core::common_metric_data::Lifetime"]],["impl RefUnwindSafe for CommonMetricData",1,["glean_core::common_metric_data::CommonMetricData"]],["impl !RefUnwindSafe for Glean",1,["glean_core::core::Glean"]],["impl RefUnwindSafe for ClientInfoMetrics",1,["glean_core::core_metrics::ClientInfoMetrics"]],["impl !RefUnwindSafe for ErrorKind",1,["glean_core::error::ErrorKind"]],["impl !RefUnwindSafe for Error",1,["glean_core::error::Error"]],["impl RefUnwindSafe for ErrorType",1,["glean_core::error_recording::ErrorType"]],["impl RefUnwindSafe for RecordedEvent",1,["glean_core::event_database::RecordedEvent"]],["impl RefUnwindSafe for HistogramType",1,["glean_core::histogram::HistogramType"]],["impl RefUnwindSafe for BooleanMetric",1,["glean_core::metrics::boolean::BooleanMetric"]],["impl RefUnwindSafe for CounterMetric",1,["glean_core::metrics::counter::CounterMetric"]],["impl RefUnwindSafe for CustomDistributionMetric",1,["glean_core::metrics::custom_distribution::CustomDistributionMetric"]],["impl RefUnwindSafe for Datetime",1,["glean_core::metrics::datetime::Datetime"]],["impl RefUnwindSafe for DatetimeMetric",1,["glean_core::metrics::datetime::DatetimeMetric"]],["impl RefUnwindSafe for DenominatorMetric",1,["glean_core::metrics::denominator::DenominatorMetric"]],["impl RefUnwindSafe for EventMetric",1,["glean_core::metrics::event::EventMetric"]],["impl RefUnwindSafe for LabeledMetricData",1,["glean_core::metrics::labeled::LabeledMetricData"]],["impl<T> RefUnwindSafe for LabeledMetric<T>
    where\n T: RefUnwindSafe,
    ",1,["glean_core::metrics::labeled::LabeledMetric"]],["impl RefUnwindSafe for MemoryDistributionMetric",1,["glean_core::metrics::memory_distribution::MemoryDistributionMetric"]],["impl RefUnwindSafe for MemoryUnit",1,["glean_core::metrics::memory_unit::MemoryUnit"]],["impl RefUnwindSafe for NumeratorMetric",1,["glean_core::metrics::numerator::NumeratorMetric"]],["impl RefUnwindSafe for ObjectMetric",1,["glean_core::metrics::object::ObjectMetric"]],["impl RefUnwindSafe for PingType",1,["glean_core::metrics::ping::PingType"]],["impl RefUnwindSafe for QuantityMetric",1,["glean_core::metrics::quantity::QuantityMetric"]],["impl RefUnwindSafe for Rate",1,["glean_core::metrics::rate::Rate"]],["impl RefUnwindSafe for RateMetric",1,["glean_core::metrics::rate::RateMetric"]],["impl RefUnwindSafe for RecordedExperiment",1,["glean_core::metrics::recorded_experiment::RecordedExperiment"]],["impl RefUnwindSafe for RemoteSettingsConfig",1,["glean_core::metrics::remote_settings_config::RemoteSettingsConfig"]],["impl RefUnwindSafe for StringMetric",1,["glean_core::metrics::string::StringMetric"]],["impl RefUnwindSafe for StringListMetric",1,["glean_core::metrics::string_list::StringListMetric"]],["impl RefUnwindSafe for TextMetric",1,["glean_core::metrics::text::TextMetric"]],["impl RefUnwindSafe for TimeUnit",1,["glean_core::metrics::time_unit::TimeUnit"]],["impl RefUnwindSafe for TimespanMetric",1,["glean_core::metrics::timespan::TimespanMetric"]],["impl RefUnwindSafe for TimerId",1,["glean_core::metrics::timing_distribution::TimerId"]],["impl RefUnwindSafe for TimingDistributionMetric",1,["glean_core::metrics::timing_distribution::TimingDistributionMetric"]],["impl RefUnwindSafe for UrlMetric",1,["glean_core::metrics::url::UrlMetric"]],["impl RefUnwindSafe for UuidMetric",1,["glean_core::metrics::uuid::UuidMetric"]],["impl RefUnwindSafe for DistributionData",1,["glean_core::metrics::DistributionData"]],["impl RefUnwindSafe for Metric",1,["glean_core::metrics::Metric"]],["impl<'a> RefUnwindSafe for Ping<'a>",1,["glean_core::ping::Ping"]],["impl RefUnwindSafe for PingMaker",1,["glean_core::ping::PingMaker"]],["impl RefUnwindSafe for StorageManager",1,["glean_core::storage::StorageManager"]],["impl RefUnwindSafe for NoExtraKeys",1,["glean_core::traits::event::NoExtraKeys"]],["impl RefUnwindSafe for EventRecordingError",1,["glean_core::traits::event::EventRecordingError"]],["impl !RefUnwindSafe for ObjectError",1,["glean_core::traits::object::ObjectError"]],["impl RefUnwindSafe for PingPayload",1,["glean_core::upload::directory::PingPayload"]],["impl RefUnwindSafe for PingMetadata",1,["glean_core::upload::directory::PingMetadata"]],["impl RefUnwindSafe for PingRequest",1,["glean_core::upload::request::PingRequest"]],["impl RefUnwindSafe for UploadResult",1,["glean_core::upload::result::UploadResult"]],["impl RefUnwindSafe for UploadTaskAction",1,["glean_core::upload::result::UploadTaskAction"]],["impl RefUnwindSafe for PingUploadTask",1,["glean_core::upload::PingUploadTask"]],["impl RefUnwindSafe for PingUploadManager",1,["glean_core::upload::PingUploadManager"]],["impl RefUnwindSafe for InternalConfiguration",1,["glean_core::InternalConfiguration"]],["impl RefUnwindSafe for PingRateLimit",1,["glean_core::PingRateLimit"]],["impl RefUnwindSafe for CallbackError",1,["glean_core::CallbackError"]]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js b/docs/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js new file mode 100644 index 0000000000..1708927569 --- /dev/null +++ b/docs/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"glean_core":[["impl UnwindSafe for Lifetime",1,["glean_core::common_metric_data::Lifetime"]],["impl UnwindSafe for CommonMetricData",1,["glean_core::common_metric_data::CommonMetricData"]],["impl !UnwindSafe for Glean",1,["glean_core::core::Glean"]],["impl UnwindSafe for ClientInfoMetrics",1,["glean_core::core_metrics::ClientInfoMetrics"]],["impl !UnwindSafe for ErrorKind",1,["glean_core::error::ErrorKind"]],["impl !UnwindSafe for Error",1,["glean_core::error::Error"]],["impl UnwindSafe for ErrorType",1,["glean_core::error_recording::ErrorType"]],["impl UnwindSafe for RecordedEvent",1,["glean_core::event_database::RecordedEvent"]],["impl UnwindSafe for HistogramType",1,["glean_core::histogram::HistogramType"]],["impl UnwindSafe for BooleanMetric",1,["glean_core::metrics::boolean::BooleanMetric"]],["impl UnwindSafe for CounterMetric",1,["glean_core::metrics::counter::CounterMetric"]],["impl UnwindSafe for CustomDistributionMetric",1,["glean_core::metrics::custom_distribution::CustomDistributionMetric"]],["impl UnwindSafe for Datetime",1,["glean_core::metrics::datetime::Datetime"]],["impl UnwindSafe for DatetimeMetric",1,["glean_core::metrics::datetime::DatetimeMetric"]],["impl UnwindSafe for DenominatorMetric",1,["glean_core::metrics::denominator::DenominatorMetric"]],["impl UnwindSafe for EventMetric",1,["glean_core::metrics::event::EventMetric"]],["impl UnwindSafe for LabeledMetricData",1,["glean_core::metrics::labeled::LabeledMetricData"]],["impl<T> UnwindSafe for LabeledMetric<T>
    where\n T: UnwindSafe,
    ",1,["glean_core::metrics::labeled::LabeledMetric"]],["impl UnwindSafe for MemoryDistributionMetric",1,["glean_core::metrics::memory_distribution::MemoryDistributionMetric"]],["impl UnwindSafe for MemoryUnit",1,["glean_core::metrics::memory_unit::MemoryUnit"]],["impl UnwindSafe for NumeratorMetric",1,["glean_core::metrics::numerator::NumeratorMetric"]],["impl UnwindSafe for ObjectMetric",1,["glean_core::metrics::object::ObjectMetric"]],["impl UnwindSafe for PingType",1,["glean_core::metrics::ping::PingType"]],["impl UnwindSafe for QuantityMetric",1,["glean_core::metrics::quantity::QuantityMetric"]],["impl UnwindSafe for Rate",1,["glean_core::metrics::rate::Rate"]],["impl UnwindSafe for RateMetric",1,["glean_core::metrics::rate::RateMetric"]],["impl UnwindSafe for RecordedExperiment",1,["glean_core::metrics::recorded_experiment::RecordedExperiment"]],["impl UnwindSafe for RemoteSettingsConfig",1,["glean_core::metrics::remote_settings_config::RemoteSettingsConfig"]],["impl UnwindSafe for StringMetric",1,["glean_core::metrics::string::StringMetric"]],["impl UnwindSafe for StringListMetric",1,["glean_core::metrics::string_list::StringListMetric"]],["impl UnwindSafe for TextMetric",1,["glean_core::metrics::text::TextMetric"]],["impl UnwindSafe for TimeUnit",1,["glean_core::metrics::time_unit::TimeUnit"]],["impl UnwindSafe for TimespanMetric",1,["glean_core::metrics::timespan::TimespanMetric"]],["impl UnwindSafe for TimerId",1,["glean_core::metrics::timing_distribution::TimerId"]],["impl UnwindSafe for TimingDistributionMetric",1,["glean_core::metrics::timing_distribution::TimingDistributionMetric"]],["impl UnwindSafe for UrlMetric",1,["glean_core::metrics::url::UrlMetric"]],["impl UnwindSafe for UuidMetric",1,["glean_core::metrics::uuid::UuidMetric"]],["impl UnwindSafe for DistributionData",1,["glean_core::metrics::DistributionData"]],["impl UnwindSafe for Metric",1,["glean_core::metrics::Metric"]],["impl<'a> UnwindSafe for Ping<'a>",1,["glean_core::ping::Ping"]],["impl UnwindSafe for PingMaker",1,["glean_core::ping::PingMaker"]],["impl UnwindSafe for StorageManager",1,["glean_core::storage::StorageManager"]],["impl UnwindSafe for NoExtraKeys",1,["glean_core::traits::event::NoExtraKeys"]],["impl UnwindSafe for EventRecordingError",1,["glean_core::traits::event::EventRecordingError"]],["impl !UnwindSafe for ObjectError",1,["glean_core::traits::object::ObjectError"]],["impl UnwindSafe for PingPayload",1,["glean_core::upload::directory::PingPayload"]],["impl UnwindSafe for PingMetadata",1,["glean_core::upload::directory::PingMetadata"]],["impl UnwindSafe for PingRequest",1,["glean_core::upload::request::PingRequest"]],["impl UnwindSafe for UploadResult",1,["glean_core::upload::result::UploadResult"]],["impl UnwindSafe for UploadTaskAction",1,["glean_core::upload::result::UploadTaskAction"]],["impl UnwindSafe for PingUploadTask",1,["glean_core::upload::PingUploadTask"]],["impl UnwindSafe for PingUploadManager",1,["glean_core::upload::PingUploadManager"]],["impl UnwindSafe for InternalConfiguration",1,["glean_core::InternalConfiguration"]],["impl UnwindSafe for PingRateLimit",1,["glean_core::PingRateLimit"]],["impl UnwindSafe for CallbackError",1,["glean_core::CallbackError"]]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/implementors/glean_core/metrics/labeled/trait.AllowLabeled.js b/docs/trait.impl/glean_core/metrics/labeled/trait.AllowLabeled.js similarity index 100% rename from docs/implementors/glean_core/metrics/labeled/trait.AllowLabeled.js rename to docs/trait.impl/glean_core/metrics/labeled/trait.AllowLabeled.js diff --git a/docs/implementors/glean_core/metrics/trait.MetricType.js b/docs/trait.impl/glean_core/metrics/trait.MetricType.js similarity index 100% rename from docs/implementors/glean_core/metrics/trait.MetricType.js rename to docs/trait.impl/glean_core/metrics/trait.MetricType.js diff --git a/docs/implementors/glean_core/traits/event/trait.ExtraKeys.js b/docs/trait.impl/glean_core/traits/event/trait.ExtraKeys.js similarity index 100% rename from docs/implementors/glean_core/traits/event/trait.ExtraKeys.js rename to docs/trait.impl/glean_core/traits/event/trait.ExtraKeys.js diff --git a/docs/implementors/glean_core/traits/object/trait.ObjectSerialize.js b/docs/trait.impl/glean_core/traits/object/trait.ObjectSerialize.js similarity index 100% rename from docs/implementors/glean_core/traits/object/trait.ObjectSerialize.js rename to docs/trait.impl/glean_core/traits/object/trait.ObjectSerialize.js diff --git a/docs/trait.impl/serde/de/trait.Deserialize.js b/docs/trait.impl/serde/de/trait.Deserialize.js new file mode 100644 index 0000000000..7aa164404c --- /dev/null +++ b/docs/trait.impl/serde/de/trait.Deserialize.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"glean_core":[["impl<'de> Deserialize<'de> for PingMetadata"],["impl<'de> Deserialize<'de> for Metric"],["impl<'de> Deserialize<'de> for MemoryUnit"],["impl<'de> Deserialize<'de> for HistogramType"],["impl<'de> Deserialize<'de> for CommonMetricData"],["impl<'de> Deserialize<'de> for RecordedExperiment"],["impl<'de> Deserialize<'de> for RecordedEvent"],["impl<'de> Deserialize<'de> for Lifetime"],["impl<'de> Deserialize<'de> for RemoteSettingsConfig"],["impl<'de> Deserialize<'de> for TimeUnit"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/trait.impl/serde/ser/trait.Serialize.js b/docs/trait.impl/serde/ser/trait.Serialize.js new file mode 100644 index 0000000000..942ccf0311 --- /dev/null +++ b/docs/trait.impl/serde/ser/trait.Serialize.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"glean_core":[["impl Serialize for RecordedEvent"],["impl Serialize for Lifetime"],["impl Serialize for HistogramType"],["impl Serialize for PingMetadata"],["impl Serialize for MemoryUnit"],["impl Serialize for DistributionData"],["impl Serialize for RemoteSettingsConfig"],["impl Serialize for Metric"],["impl Serialize for TimeUnit"],["impl Serialize for RecordedExperiment"],["impl Serialize for CommonMetricData"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/type.impl/core/result/enum.Result.js b/docs/type.impl/core/result/enum.Result.js new file mode 100644 index 0000000000..2692a81f04 --- /dev/null +++ b/docs/type.impl/core/result/enum.Result.js @@ -0,0 +1,3 @@ +(function() {var type_impls = { +"glean_core":[["
    source§

    impl<T, E> Result<T, E>

    1.0.0 (const: 1.48.0) · source

    pub const fn is_ok(&self) -> bool

    Returns true if the result is Ok.

    \n
    Examples
    \n
    let x: Result<i32, &str> = Ok(-3);\nassert_eq!(x.is_ok(), true);\n\nlet x: Result<i32, &str> = Err(\"Some error message\");\nassert_eq!(x.is_ok(), false);
    \n
    1.70.0 · source

    pub fn is_ok_and(self, f: impl FnOnce(T) -> bool) -> bool

    Returns true if the result is Ok and the value inside of it matches a predicate.

    \n
    Examples
    \n
    let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.is_ok_and(|x| x > 1), true);\n\nlet x: Result<u32, &str> = Ok(0);\nassert_eq!(x.is_ok_and(|x| x > 1), false);\n\nlet x: Result<u32, &str> = Err(\"hey\");\nassert_eq!(x.is_ok_and(|x| x > 1), false);
    \n
    1.0.0 (const: 1.48.0) · source

    pub const fn is_err(&self) -> bool

    Returns true if the result is Err.

    \n
    Examples
    \n
    let x: Result<i32, &str> = Ok(-3);\nassert_eq!(x.is_err(), false);\n\nlet x: Result<i32, &str> = Err(\"Some error message\");\nassert_eq!(x.is_err(), true);
    \n
    1.70.0 · source

    pub fn is_err_and(self, f: impl FnOnce(E) -> bool) -> bool

    Returns true if the result is Err and the value inside of it matches a predicate.

    \n
    Examples
    \n
    use std::io::{Error, ErrorKind};\n\nlet x: Result<u32, Error> = Err(Error::new(ErrorKind::NotFound, \"!\"));\nassert_eq!(x.is_err_and(|x| x.kind() == ErrorKind::NotFound), true);\n\nlet x: Result<u32, Error> = Err(Error::new(ErrorKind::PermissionDenied, \"!\"));\nassert_eq!(x.is_err_and(|x| x.kind() == ErrorKind::NotFound), false);\n\nlet x: Result<u32, Error> = Ok(123);\nassert_eq!(x.is_err_and(|x| x.kind() == ErrorKind::NotFound), false);
    \n
    1.0.0 · source

    pub fn ok(self) -> Option<T>

    Converts from Result<T, E> to Option<T>.

    \n

    Converts self into an Option<T>, consuming self,\nand discarding the error, if any.

    \n
    Examples
    \n
    let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.ok(), Some(2));\n\nlet x: Result<u32, &str> = Err(\"Nothing here\");\nassert_eq!(x.ok(), None);
    \n
    1.0.0 · source

    pub fn err(self) -> Option<E>

    Converts from Result<T, E> to Option<E>.

    \n

    Converts self into an Option<E>, consuming self,\nand discarding the success value, if any.

    \n
    Examples
    \n
    let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.err(), None);\n\nlet x: Result<u32, &str> = Err(\"Nothing here\");\nassert_eq!(x.err(), Some(\"Nothing here\"));
    \n
    1.0.0 (const: 1.48.0) · source

    pub const fn as_ref(&self) -> Result<&T, &E>

    Converts from &Result<T, E> to Result<&T, &E>.

    \n

    Produces a new Result, containing a reference\ninto the original, leaving the original in place.

    \n
    Examples
    \n
    let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.as_ref(), Ok(&2));\n\nlet x: Result<u32, &str> = Err(\"Error\");\nassert_eq!(x.as_ref(), Err(&\"Error\"));
    \n
    1.0.0 (const: unstable) · source

    pub fn as_mut(&mut self) -> Result<&mut T, &mut E>

    Converts from &mut Result<T, E> to Result<&mut T, &mut E>.

    \n
    Examples
    \n
    fn mutate(r: &mut Result<i32, i32>) {\n    match r.as_mut() {\n        Ok(v) => *v = 42,\n        Err(e) => *e = 0,\n    }\n}\n\nlet mut x: Result<i32, i32> = Ok(2);\nmutate(&mut x);\nassert_eq!(x.unwrap(), 42);\n\nlet mut x: Result<i32, i32> = Err(13);\nmutate(&mut x);\nassert_eq!(x.unwrap_err(), 0);
    \n
    1.0.0 · source

    pub fn map<U, F>(self, op: F) -> Result<U, E>
    where\n F: FnOnce(T) -> U,

    Maps a Result<T, E> to Result<U, E> by applying a function to a\ncontained Ok value, leaving an Err value untouched.

    \n

    This function can be used to compose the results of two functions.

    \n
    Examples
    \n

    Print the numbers on each line of a string multiplied by two.

    \n\n
    let line = \"1\\n2\\n3\\n4\\n\";\n\nfor num in line.lines() {\n    match num.parse::<i32>().map(|i| i * 2) {\n        Ok(n) => println!(\"{n}\"),\n        Err(..) => {}\n    }\n}
    \n
    1.41.0 · source

    pub fn map_or<U, F>(self, default: U, f: F) -> U
    where\n F: FnOnce(T) -> U,

    Returns the provided default (if Err), or\napplies a function to the contained value (if Ok).

    \n

    Arguments passed to map_or are eagerly evaluated; if you are passing\nthe result of a function call, it is recommended to use map_or_else,\nwhich is lazily evaluated.

    \n
    Examples
    \n
    let x: Result<_, &str> = Ok(\"foo\");\nassert_eq!(x.map_or(42, |v| v.len()), 3);\n\nlet x: Result<&str, _> = Err(\"bar\");\nassert_eq!(x.map_or(42, |v| v.len()), 42);
    \n
    1.41.0 · source

    pub fn map_or_else<U, D, F>(self, default: D, f: F) -> U
    where\n D: FnOnce(E) -> U,\n F: FnOnce(T) -> U,

    Maps a Result<T, E> to U by applying fallback function default to\na contained Err value, or function f to a contained Ok value.

    \n

    This function can be used to unpack a successful result\nwhile handling an error.

    \n
    Examples
    \n
    let k = 21;\n\nlet x : Result<_, &str> = Ok(\"foo\");\nassert_eq!(x.map_or_else(|e| k * 2, |v| v.len()), 3);\n\nlet x : Result<&str, _> = Err(\"bar\");\nassert_eq!(x.map_or_else(|e| k * 2, |v| v.len()), 42);
    \n
    1.0.0 · source

    pub fn map_err<F, O>(self, op: O) -> Result<T, F>
    where\n O: FnOnce(E) -> F,

    Maps a Result<T, E> to Result<T, F> by applying a function to a\ncontained Err value, leaving an Ok value untouched.

    \n

    This function can be used to pass through a successful result while handling\nan error.

    \n
    Examples
    \n
    fn stringify(x: u32) -> String { format!(\"error code: {x}\") }\n\nlet x: Result<u32, u32> = Ok(2);\nassert_eq!(x.map_err(stringify), Ok(2));\n\nlet x: Result<u32, u32> = Err(13);\nassert_eq!(x.map_err(stringify), Err(\"error code: 13\".to_string()));
    \n
    1.76.0 · source

    pub fn inspect<F>(self, f: F) -> Result<T, E>
    where\n F: FnOnce(&T),

    Calls the provided closure with a reference to the contained value (if Ok).

    \n
    Examples
    \n
    let x: u8 = \"4\"\n    .parse::<u8>()\n    .inspect(|x| println!(\"original: {x}\"))\n    .map(|x| x.pow(3))\n    .expect(\"failed to parse number\");
    \n
    1.76.0 · source

    pub fn inspect_err<F>(self, f: F) -> Result<T, E>
    where\n F: FnOnce(&E),

    Calls the provided closure with a reference to the contained error (if Err).

    \n
    Examples
    \n
    use std::{fs, io};\n\nfn read() -> io::Result<String> {\n    fs::read_to_string(\"address.txt\")\n        .inspect_err(|e| eprintln!(\"failed to read file: {e}\"))\n}
    \n
    1.47.0 · source

    pub fn as_deref(&self) -> Result<&<T as Deref>::Target, &E>
    where\n T: Deref,

    Converts from Result<T, E> (or &Result<T, E>) to Result<&<T as Deref>::Target, &E>.

    \n

    Coerces the Ok variant of the original Result via Deref\nand returns the new Result.

    \n
    Examples
    \n
    let x: Result<String, u32> = Ok(\"hello\".to_string());\nlet y: Result<&str, &u32> = Ok(\"hello\");\nassert_eq!(x.as_deref(), y);\n\nlet x: Result<String, u32> = Err(42);\nlet y: Result<&str, &u32> = Err(&42);\nassert_eq!(x.as_deref(), y);
    \n
    1.47.0 · source

    pub fn as_deref_mut(&mut self) -> Result<&mut <T as Deref>::Target, &mut E>
    where\n T: DerefMut,

    Converts from Result<T, E> (or &mut Result<T, E>) to Result<&mut <T as DerefMut>::Target, &mut E>.

    \n

    Coerces the Ok variant of the original Result via DerefMut\nand returns the new Result.

    \n
    Examples
    \n
    let mut s = \"HELLO\".to_string();\nlet mut x: Result<String, u32> = Ok(\"hello\".to_string());\nlet y: Result<&mut str, &mut u32> = Ok(&mut s);\nassert_eq!(x.as_deref_mut().map(|x| { x.make_ascii_uppercase(); x }), y);\n\nlet mut i = 42;\nlet mut x: Result<String, u32> = Err(42);\nlet y: Result<&mut str, &mut u32> = Err(&mut i);\nassert_eq!(x.as_deref_mut().map(|x| { x.make_ascii_uppercase(); x }), y);
    \n
    1.0.0 · source

    pub fn iter(&self) -> Iter<'_, T>

    Returns an iterator over the possibly contained value.

    \n

    The iterator yields one value if the result is Result::Ok, otherwise none.

    \n
    Examples
    \n
    let x: Result<u32, &str> = Ok(7);\nassert_eq!(x.iter().next(), Some(&7));\n\nlet x: Result<u32, &str> = Err(\"nothing!\");\nassert_eq!(x.iter().next(), None);
    \n
    1.0.0 · source

    pub fn iter_mut(&mut self) -> IterMut<'_, T>

    Returns a mutable iterator over the possibly contained value.

    \n

    The iterator yields one value if the result is Result::Ok, otherwise none.

    \n
    Examples
    \n
    let mut x: Result<u32, &str> = Ok(7);\nmatch x.iter_mut().next() {\n    Some(v) => *v = 40,\n    None => {},\n}\nassert_eq!(x, Ok(40));\n\nlet mut x: Result<u32, &str> = Err(\"nothing!\");\nassert_eq!(x.iter_mut().next(), None);
    \n
    1.4.0 · source

    pub fn expect(self, msg: &str) -> T
    where\n E: Debug,

    Returns the contained Ok value, consuming the self value.

    \n

    Because this function may panic, its use is generally discouraged.\nInstead, prefer to use pattern matching and handle the Err\ncase explicitly, or call unwrap_or, unwrap_or_else, or\nunwrap_or_default.

    \n
    Panics
    \n

    Panics if the value is an Err, with a panic message including the\npassed message, and the content of the Err.

    \n
    Examples
    \n
    let x: Result<u32, &str> = Err(\"emergency failure\");\nx.expect(\"Testing expect\"); // panics with `Testing expect: emergency failure`
    \n
    Recommended Message Style
    \n

    We recommend that expect messages are used to describe the reason you\nexpect the Result should be Ok.

    \n\n
    let path = std::env::var(\"IMPORTANT_PATH\")\n    .expect(\"env variable `IMPORTANT_PATH` should be set by `wrapper_script.sh`\");
    \n

    Hint: If you’re having trouble remembering how to phrase expect\nerror messages remember to focus on the word “should” as in “env\nvariable should be set by blah” or “the given binary should be available\nand executable by the current user”.

    \n

    For more detail on expect message styles and the reasoning behind our recommendation please\nrefer to the section on “Common Message\nStyles” in the\nstd::error module docs.

    \n
    1.0.0 · source

    pub fn unwrap(self) -> T
    where\n E: Debug,

    Returns the contained Ok value, consuming the self value.

    \n

    Because this function may panic, its use is generally discouraged.\nInstead, prefer to use pattern matching and handle the Err\ncase explicitly, or call unwrap_or, unwrap_or_else, or\nunwrap_or_default.

    \n
    Panics
    \n

    Panics if the value is an Err, with a panic message provided by the\nErr’s value.

    \n
    Examples
    \n

    Basic usage:

    \n\n
    let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.unwrap(), 2);
    \n\n
    let x: Result<u32, &str> = Err(\"emergency failure\");\nx.unwrap(); // panics with `emergency failure`
    \n
    1.16.0 · source

    pub fn unwrap_or_default(self) -> T
    where\n T: Default,

    Returns the contained Ok value or a default

    \n

    Consumes the self argument then, if Ok, returns the contained\nvalue, otherwise if Err, returns the default value for that\ntype.

    \n
    Examples
    \n

    Converts a string to an integer, turning poorly-formed strings\ninto 0 (the default value for integers). parse converts\na string to any other type that implements FromStr, returning an\nErr on error.

    \n\n
    let good_year_from_input = \"1909\";\nlet bad_year_from_input = \"190blarg\";\nlet good_year = good_year_from_input.parse().unwrap_or_default();\nlet bad_year = bad_year_from_input.parse().unwrap_or_default();\n\nassert_eq!(1909, good_year);\nassert_eq!(0, bad_year);
    \n
    1.17.0 · source

    pub fn expect_err(self, msg: &str) -> E
    where\n T: Debug,

    Returns the contained Err value, consuming the self value.

    \n
    Panics
    \n

    Panics if the value is an Ok, with a panic message including the\npassed message, and the content of the Ok.

    \n
    Examples
    \n
    let x: Result<u32, &str> = Ok(10);\nx.expect_err(\"Testing expect_err\"); // panics with `Testing expect_err: 10`
    \n
    1.0.0 · source

    pub fn unwrap_err(self) -> E
    where\n T: Debug,

    Returns the contained Err value, consuming the self value.

    \n
    Panics
    \n

    Panics if the value is an Ok, with a custom panic message provided\nby the Ok’s value.

    \n
    Examples
    \n
    let x: Result<u32, &str> = Ok(2);\nx.unwrap_err(); // panics with `2`
    \n\n
    let x: Result<u32, &str> = Err(\"emergency failure\");\nassert_eq!(x.unwrap_err(), \"emergency failure\");
    \n
    source

    pub fn into_ok(self) -> T
    where\n E: Into<!>,

    🔬This is a nightly-only experimental API. (unwrap_infallible)

    Returns the contained Ok value, but never panics.

    \n

    Unlike unwrap, this method is known to never panic on the\nresult types it is implemented for. Therefore, it can be used\ninstead of unwrap as a maintainability safeguard that will fail\nto compile if the error type of the Result is later changed\nto an error that can actually occur.

    \n
    Examples
    \n
    \nfn only_good_news() -> Result<String, !> {\n    Ok(\"this is fine\".into())\n}\n\nlet s: String = only_good_news().into_ok();\nprintln!(\"{s}\");
    \n
    source

    pub fn into_err(self) -> E
    where\n T: Into<!>,

    🔬This is a nightly-only experimental API. (unwrap_infallible)

    Returns the contained Err value, but never panics.

    \n

    Unlike unwrap_err, this method is known to never panic on the\nresult types it is implemented for. Therefore, it can be used\ninstead of unwrap_err as a maintainability safeguard that will fail\nto compile if the ok type of the Result is later changed\nto a type that can actually occur.

    \n
    Examples
    \n
    \nfn only_bad_news() -> Result<!, String> {\n    Err(\"Oops, it failed\".into())\n}\n\nlet error: String = only_bad_news().into_err();\nprintln!(\"{error}\");
    \n
    1.0.0 · source

    pub fn and<U>(self, res: Result<U, E>) -> Result<U, E>

    Returns res if the result is Ok, otherwise returns the Err value of self.

    \n

    Arguments passed to and are eagerly evaluated; if you are passing the\nresult of a function call, it is recommended to use and_then, which is\nlazily evaluated.

    \n
    Examples
    \n
    let x: Result<u32, &str> = Ok(2);\nlet y: Result<&str, &str> = Err(\"late error\");\nassert_eq!(x.and(y), Err(\"late error\"));\n\nlet x: Result<u32, &str> = Err(\"early error\");\nlet y: Result<&str, &str> = Ok(\"foo\");\nassert_eq!(x.and(y), Err(\"early error\"));\n\nlet x: Result<u32, &str> = Err(\"not a 2\");\nlet y: Result<&str, &str> = Err(\"late error\");\nassert_eq!(x.and(y), Err(\"not a 2\"));\n\nlet x: Result<u32, &str> = Ok(2);\nlet y: Result<&str, &str> = Ok(\"different result type\");\nassert_eq!(x.and(y), Ok(\"different result type\"));
    \n
    1.0.0 · source

    pub fn and_then<U, F>(self, op: F) -> Result<U, E>
    where\n F: FnOnce(T) -> Result<U, E>,

    Calls op if the result is Ok, otherwise returns the Err value of self.

    \n

    This function can be used for control flow based on Result values.

    \n
    Examples
    \n
    fn sq_then_to_string(x: u32) -> Result<String, &'static str> {\n    x.checked_mul(x).map(|sq| sq.to_string()).ok_or(\"overflowed\")\n}\n\nassert_eq!(Ok(2).and_then(sq_then_to_string), Ok(4.to_string()));\nassert_eq!(Ok(1_000_000).and_then(sq_then_to_string), Err(\"overflowed\"));\nassert_eq!(Err(\"not a number\").and_then(sq_then_to_string), Err(\"not a number\"));
    \n

    Often used to chain fallible operations that may return Err.

    \n\n
    use std::{io::ErrorKind, path::Path};\n\n// Note: on Windows \"/\" maps to \"C:\\\"\nlet root_modified_time = Path::new(\"/\").metadata().and_then(|md| md.modified());\nassert!(root_modified_time.is_ok());\n\nlet should_fail = Path::new(\"/bad/path\").metadata().and_then(|md| md.modified());\nassert!(should_fail.is_err());\nassert_eq!(should_fail.unwrap_err().kind(), ErrorKind::NotFound);
    \n
    1.0.0 · source

    pub fn or<F>(self, res: Result<T, F>) -> Result<T, F>

    Returns res if the result is Err, otherwise returns the Ok value of self.

    \n

    Arguments passed to or are eagerly evaluated; if you are passing the\nresult of a function call, it is recommended to use or_else, which is\nlazily evaluated.

    \n
    Examples
    \n
    let x: Result<u32, &str> = Ok(2);\nlet y: Result<u32, &str> = Err(\"late error\");\nassert_eq!(x.or(y), Ok(2));\n\nlet x: Result<u32, &str> = Err(\"early error\");\nlet y: Result<u32, &str> = Ok(2);\nassert_eq!(x.or(y), Ok(2));\n\nlet x: Result<u32, &str> = Err(\"not a 2\");\nlet y: Result<u32, &str> = Err(\"late error\");\nassert_eq!(x.or(y), Err(\"late error\"));\n\nlet x: Result<u32, &str> = Ok(2);\nlet y: Result<u32, &str> = Ok(100);\nassert_eq!(x.or(y), Ok(2));
    \n
    1.0.0 · source

    pub fn or_else<F, O>(self, op: O) -> Result<T, F>
    where\n O: FnOnce(E) -> Result<T, F>,

    Calls op if the result is Err, otherwise returns the Ok value of self.

    \n

    This function can be used for control flow based on result values.

    \n
    Examples
    \n
    fn sq(x: u32) -> Result<u32, u32> { Ok(x * x) }\nfn err(x: u32) -> Result<u32, u32> { Err(x) }\n\nassert_eq!(Ok(2).or_else(sq).or_else(sq), Ok(2));\nassert_eq!(Ok(2).or_else(err).or_else(sq), Ok(2));\nassert_eq!(Err(3).or_else(sq).or_else(err), Ok(9));\nassert_eq!(Err(3).or_else(err).or_else(err), Err(3));
    \n
    1.0.0 · source

    pub fn unwrap_or(self, default: T) -> T

    Returns the contained Ok value or a provided default.

    \n

    Arguments passed to unwrap_or are eagerly evaluated; if you are passing\nthe result of a function call, it is recommended to use unwrap_or_else,\nwhich is lazily evaluated.

    \n
    Examples
    \n
    let default = 2;\nlet x: Result<u32, &str> = Ok(9);\nassert_eq!(x.unwrap_or(default), 9);\n\nlet x: Result<u32, &str> = Err(\"error\");\nassert_eq!(x.unwrap_or(default), default);
    \n
    1.0.0 · source

    pub fn unwrap_or_else<F>(self, op: F) -> T
    where\n F: FnOnce(E) -> T,

    Returns the contained Ok value or computes it from a closure.

    \n
    Examples
    \n
    fn count(x: &str) -> usize { x.len() }\n\nassert_eq!(Ok(2).unwrap_or_else(count), 2);\nassert_eq!(Err(\"foo\").unwrap_or_else(count), 3);
    \n
    1.58.0 · source

    pub unsafe fn unwrap_unchecked(self) -> T

    Returns the contained Ok value, consuming the self value,\nwithout checking that the value is not an Err.

    \n
    Safety
    \n

    Calling this method on an Err is undefined behavior.

    \n
    Examples
    \n
    let x: Result<u32, &str> = Ok(2);\nassert_eq!(unsafe { x.unwrap_unchecked() }, 2);
    \n\n
    let x: Result<u32, &str> = Err(\"emergency failure\");\nunsafe { x.unwrap_unchecked(); } // Undefined behavior!
    \n
    1.58.0 · source

    pub unsafe fn unwrap_err_unchecked(self) -> E

    Returns the contained Err value, consuming the self value,\nwithout checking that the value is not an Ok.

    \n
    Safety
    \n

    Calling this method on an Ok is undefined behavior.

    \n
    Examples
    \n
    let x: Result<u32, &str> = Ok(2);\nunsafe { x.unwrap_err_unchecked() }; // Undefined behavior!
    \n\n
    let x: Result<u32, &str> = Err(\"emergency failure\");\nassert_eq!(unsafe { x.unwrap_err_unchecked() }, \"emergency failure\");
    \n
    ",0,"glean_core::error::Result"],["
    source§

    impl<T, E> Result<&T, E>

    1.59.0 · source

    pub fn copied(self) -> Result<T, E>
    where\n T: Copy,

    Maps a Result<&T, E> to a Result<T, E> by copying the contents of the\nOk part.

    \n
    Examples
    \n
    let val = 12;\nlet x: Result<&i32, i32> = Ok(&val);\nassert_eq!(x, Ok(&12));\nlet copied = x.copied();\nassert_eq!(copied, Ok(12));
    \n
    1.59.0 · source

    pub fn cloned(self) -> Result<T, E>
    where\n T: Clone,

    Maps a Result<&T, E> to a Result<T, E> by cloning the contents of the\nOk part.

    \n
    Examples
    \n
    let val = 12;\nlet x: Result<&i32, i32> = Ok(&val);\nassert_eq!(x, Ok(&12));\nlet cloned = x.cloned();\nassert_eq!(cloned, Ok(12));
    \n
    ",0,"glean_core::error::Result"],["
    source§

    impl<T, E> Result<&mut T, E>

    1.59.0 · source

    pub fn copied(self) -> Result<T, E>
    where\n T: Copy,

    Maps a Result<&mut T, E> to a Result<T, E> by copying the contents of the\nOk part.

    \n
    Examples
    \n
    let mut val = 12;\nlet x: Result<&mut i32, i32> = Ok(&mut val);\nassert_eq!(x, Ok(&mut 12));\nlet copied = x.copied();\nassert_eq!(copied, Ok(12));
    \n
    1.59.0 · source

    pub fn cloned(self) -> Result<T, E>
    where\n T: Clone,

    Maps a Result<&mut T, E> to a Result<T, E> by cloning the contents of the\nOk part.

    \n
    Examples
    \n
    let mut val = 12;\nlet x: Result<&mut i32, i32> = Ok(&mut val);\nassert_eq!(x, Ok(&mut 12));\nlet cloned = x.cloned();\nassert_eq!(cloned, Ok(12));
    \n
    ",0,"glean_core::error::Result"],["
    source§

    impl<T, E> Result<Option<T>, E>

    1.33.0 (const: unstable) · source

    pub fn transpose(self) -> Option<Result<T, E>>

    Transposes a Result of an Option into an Option of a Result.

    \n

    Ok(None) will be mapped to None.\nOk(Some(_)) and Err(_) will be mapped to Some(Ok(_)) and Some(Err(_)).

    \n
    Examples
    \n
    #[derive(Debug, Eq, PartialEq)]\nstruct SomeErr;\n\nlet x: Result<Option<i32>, SomeErr> = Ok(Some(5));\nlet y: Option<Result<i32, SomeErr>> = Some(Ok(5));\nassert_eq!(x.transpose(), y);
    \n
    ",0,"glean_core::error::Result"],["
    source§

    impl<T, E> Result<Result<T, E>, E>

    source

    pub fn flatten(self) -> Result<T, E>

    🔬This is a nightly-only experimental API. (result_flattening)

    Converts from Result<Result<T, E>, E> to Result<T, E>

    \n
    Examples
    \n
    #![feature(result_flattening)]\nlet x: Result<Result<&'static str, u32>, u32> = Ok(Ok(\"hello\"));\nassert_eq!(Ok(\"hello\"), x.flatten());\n\nlet x: Result<Result<&'static str, u32>, u32> = Ok(Err(6));\nassert_eq!(Err(6), x.flatten());\n\nlet x: Result<Result<&'static str, u32>, u32> = Err(6);\nassert_eq!(Err(6), x.flatten());
    \n

    Flattening only removes one level of nesting at a time:

    \n\n
    #![feature(result_flattening)]\nlet x: Result<Result<Result<&'static str, u32>, u32>, u32> = Ok(Ok(Ok(\"hello\")));\nassert_eq!(Ok(Ok(\"hello\")), x.flatten());\nassert_eq!(Ok(\"hello\"), x.flatten().flatten());
    \n
    ",0,"glean_core::error::Result"],["
    1.61.0 · source§

    impl<T, E> Termination for Result<T, E>
    where\n T: Termination,\n E: Debug,

    source§

    fn report(self) -> ExitCode

    Is called to get the representation of the value as status code.\nThis status code is returned to the operating system.
    ","Termination","glean_core::error::Result"],["
    1.0.0 · source§

    impl<T, E> PartialOrd for Result<T, E>
    where\n T: PartialOrd,\n E: PartialOrd,

    source§

    fn partial_cmp(&self, other: &Result<T, E>) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

    fn lt(&self, other: &Rhs) -> bool

    This method tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

    fn le(&self, other: &Rhs) -> bool

    This method tests less than or equal to (for self and other) and is used by the <=\noperator. Read more
    1.0.0 · source§

    fn gt(&self, other: &Rhs) -> bool

    This method tests greater than (for self and other) and is used by the > operator. Read more
    1.0.0 · source§

    fn ge(&self, other: &Rhs) -> bool

    This method tests greater than or equal to (for self and other) and is used by the >=\noperator. Read more
    ","PartialOrd","glean_core::error::Result"],["
    1.16.0 · source§

    impl<T, U, E> Product<Result<U, E>> for Result<T, E>
    where\n T: Product<U>,

    source§

    fn product<I>(iter: I) -> Result<T, E>
    where\n I: Iterator<Item = Result<U, E>>,

    Takes each element in the Iterator: if it is an Err, no further\nelements are taken, and the Err is returned. Should no Err\noccur, the product of all elements is returned.

    \n
    Examples
    \n

    This multiplies each number in a vector of strings,\nif a string could not be parsed the operation returns Err:

    \n\n
    let nums = vec![\"5\", \"10\", \"1\", \"2\"];\nlet total: Result<usize, _> = nums.iter().map(|w| w.parse::<usize>()).product();\nassert_eq!(total, Ok(100));\nlet nums = vec![\"5\", \"10\", \"one\", \"2\"];\nlet total: Result<usize, _> = nums.iter().map(|w| w.parse::<usize>()).product();\nassert!(total.is_err());
    \n
    ","Product>","glean_core::error::Result"],["
    source§

    impl<T, E, F> FromResidual<Result<Infallible, E>> for Result<T, F>
    where\n F: From<E>,

    source§

    fn from_residual(residual: Result<Infallible, E>) -> Result<T, F>

    🔬This is a nightly-only experimental API. (try_trait_v2)
    Constructs the type from a compatible Residual type. Read more
    ","FromResidual>","glean_core::error::Result"],["
    source§

    impl<T, E, F> FromResidual<Yeet<E>> for Result<T, F>
    where\n F: From<E>,

    source§

    fn from_residual(_: Yeet<E>) -> Result<T, F>

    🔬This is a nightly-only experimental API. (try_trait_v2)
    Constructs the type from a compatible Residual type. Read more
    ","FromResidual>","glean_core::error::Result"],["
    source§

    impl<T, E> Try for Result<T, E>

    §

    type Output = T

    🔬This is a nightly-only experimental API. (try_trait_v2)
    The type of the value produced by ? when not short-circuiting.
    §

    type Residual = Result<Infallible, E>

    🔬This is a nightly-only experimental API. (try_trait_v2)
    The type of the value passed to FromResidual::from_residual\nas part of ? when short-circuiting. Read more
    source§

    fn from_output(output: <Result<T, E> as Try>::Output) -> Result<T, E>

    🔬This is a nightly-only experimental API. (try_trait_v2)
    Constructs the type from its Output type. Read more
    source§

    fn branch(\n self\n) -> ControlFlow<<Result<T, E> as Try>::Residual, <Result<T, E> as Try>::Output>

    🔬This is a nightly-only experimental API. (try_trait_v2)
    Used in ? to decide whether the operator should produce a value\n(because this returned ControlFlow::Continue)\nor propagate a value back to the caller\n(because this returned ControlFlow::Break). Read more
    ","Try","glean_core::error::Result"],["
    1.0.0 · source§

    impl<T, E> Clone for Result<T, E>
    where\n T: Clone,\n E: Clone,

    source§

    fn clone(&self) -> Result<T, E>

    Returns a copy of the value. Read more
    source§

    fn clone_from(&mut self, source: &Result<T, E>)

    Performs copy-assignment from source. Read more
    ","Clone","glean_core::error::Result"],["
    1.0.0 · source§

    impl<A, E, V> FromIterator<Result<A, E>> for Result<V, E>
    where\n V: FromIterator<A>,

    source§

    fn from_iter<I>(iter: I) -> Result<V, E>
    where\n I: IntoIterator<Item = Result<A, E>>,

    Takes each element in the Iterator: if it is an Err, no further\nelements are taken, and the Err is returned. Should no Err occur, a\ncontainer with the values of each Result is returned.

    \n

    Here is an example which increments every integer in a vector,\nchecking for overflow:

    \n\n
    let v = vec![1, 2];\nlet res: Result<Vec<u32>, &'static str> = v.iter().map(|x: &u32|\n    x.checked_add(1).ok_or(\"Overflow!\")\n).collect();\nassert_eq!(res, Ok(vec![2, 3]));
    \n

    Here is another example that tries to subtract one from another list\nof integers, this time checking for underflow:

    \n\n
    let v = vec![1, 2, 0];\nlet res: Result<Vec<u32>, &'static str> = v.iter().map(|x: &u32|\n    x.checked_sub(1).ok_or(\"Underflow!\")\n).collect();\nassert_eq!(res, Err(\"Underflow!\"));
    \n

    Here is a variation on the previous example, showing that no\nfurther elements are taken from iter after the first Err.

    \n\n
    let v = vec![3, 2, 1, 10];\nlet mut shared = 0;\nlet res: Result<Vec<u32>, &'static str> = v.iter().map(|x: &u32| {\n    shared += x;\n    x.checked_sub(2).ok_or(\"Underflow!\")\n}).collect();\nassert_eq!(res, Err(\"Underflow!\"));\nassert_eq!(shared, 6);
    \n

    Since the third element caused an underflow, no further elements were taken,\nso the final value of shared is 6 (= 3 + 2 + 1), not 16.

    \n
    ","FromIterator>","glean_core::error::Result"],["
    1.0.0 · source§

    impl<T, E> StructuralEq for Result<T, E>

    ","StructuralEq","glean_core::error::Result"],["
    1.0.0 · source§

    impl<T, E> Eq for Result<T, E>
    where\n T: Eq,\n E: Eq,

    ","Eq","glean_core::error::Result"],["
    1.0.0 · source§

    impl<T, E> Hash for Result<T, E>
    where\n T: Hash,\n E: Hash,

    source§

    fn hash<__H>(&self, state: &mut __H)
    where\n __H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where\n H: Hasher,\n Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    ","Hash","glean_core::error::Result"],["
    1.0.0 · source§

    impl<T, E> Ord for Result<T, E>
    where\n T: Ord,\n E: Ord,

    source§

    fn cmp(&self, other: &Result<T, E>) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Self
    where\n Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Self
    where\n Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Self
    where\n Self: Sized + PartialOrd,

    Restrict a value to a certain interval. Read more
    ","Ord","glean_core::error::Result"],["
    source§

    impl<T, E> Residual<T> for Result<Infallible, E>

    §

    type TryType = Result<T, E>

    🔬This is a nightly-only experimental API. (try_trait_v2_residual)
    The “return” type of this meta-function.
    ","Residual","glean_core::error::Result"],["
    1.0.0 · source§

    impl<T, E> PartialEq for Result<T, E>
    where\n T: PartialEq,\n E: PartialEq,

    source§

    fn eq(&self, other: &Result<T, E>) -> bool

    This method tests for self and other values to be equal, and is used\nby ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always\nsufficient, and should not be overridden without very good reason.
    ","PartialEq","glean_core::error::Result"],["
    1.0.0 · source§

    impl<T, E> IntoIterator for Result<T, E>

    source§

    fn into_iter(self) -> IntoIter<T>

    Returns a consuming iterator over the possibly contained value.

    \n

    The iterator yields one value if the result is Result::Ok, otherwise none.

    \n
    Examples
    \n
    let x: Result<u32, &str> = Ok(5);\nlet v: Vec<u32> = x.into_iter().collect();\nassert_eq!(v, [5]);\n\nlet x: Result<u32, &str> = Err(\"nothing!\");\nlet v: Vec<u32> = x.into_iter().collect();\nassert_eq!(v, []);
    \n
    §

    type Item = T

    The type of the elements being iterated over.
    §

    type IntoIter = IntoIter<T>

    Which kind of iterator are we turning this into?
    ","IntoIterator","glean_core::error::Result"],["
    1.16.0 · source§

    impl<T, U, E> Sum<Result<U, E>> for Result<T, E>
    where\n T: Sum<U>,

    source§

    fn sum<I>(iter: I) -> Result<T, E>
    where\n I: Iterator<Item = Result<U, E>>,

    Takes each element in the Iterator: if it is an Err, no further\nelements are taken, and the Err is returned. Should no Err\noccur, the sum of all elements is returned.

    \n
    Examples
    \n

    This sums up every integer in a vector, rejecting the sum if a negative\nelement is encountered:

    \n\n
    let f = |&x: &i32| if x < 0 { Err(\"Negative element found\") } else { Ok(x) };\nlet v = vec![1, 2];\nlet res: Result<i32, _> = v.iter().map(f).sum();\nassert_eq!(res, Ok(3));\nlet v = vec![1, -2];\nlet res: Result<i32, _> = v.iter().map(f).sum();\nassert_eq!(res, Err(\"Negative element found\"));
    \n
    ","Sum>","glean_core::error::Result"],["
    1.0.0 · source§

    impl<T, E> StructuralPartialEq for Result<T, E>

    ","StructuralPartialEq","glean_core::error::Result"],["
    1.0.0 · source§

    impl<T, E> Debug for Result<T, E>
    where\n T: Debug,\n E: Debug,

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

    Formats the value using the given formatter. Read more
    ","Debug","glean_core::error::Result"],["
    1.0.0 · source§

    impl<T, E> Copy for Result<T, E>
    where\n T: Copy,\n E: Copy,

    ","Copy","glean_core::error::Result"],["
    source§

    impl From<StreamResult> for Result<MZStatus, MZError>

    source§

    fn from(res: StreamResult) -> Result<MZStatus, MZError>

    Converts to this type from the input type.
    ","From","glean_core::error::Result"],["
    source§

    impl From<&StreamResult> for Result<MZStatus, MZError>

    source§

    fn from(res: &StreamResult) -> Result<MZStatus, MZError>

    Converts to this type from the input type.
    ","From<&StreamResult>","glean_core::error::Result"],["
    source§

    impl<T, E> Serialize for Result<T, E>
    where\n T: Serialize,\n E: Serialize,

    source§

    fn serialize<S>(\n &self,\n serializer: S\n) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>
    where\n S: Serializer,

    Serialize this value into the given Serde serializer. Read more
    ","Serialize","glean_core::error::Result"],["
    source§

    impl<'de, T, E> Deserialize<'de> for Result<T, E>
    where\n T: Deserialize<'de>,\n E: Deserialize<'de>,

    source§

    fn deserialize<D>(\n deserializer: D\n) -> Result<Result<T, E>, <D as Deserializer<'de>>::Error>
    where\n D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    ","Deserialize<'de>","glean_core::error::Result"],["
    §

    impl From<Errors> for Result<(), Errors>

    §

    fn from(e: Errors) -> Result<(), Errors>

    Converts to this type from the input type.
    ","From","glean_core::error::Result"],["
    §

    impl From<StreamResult> for Result<MZStatus, MZError>

    §

    fn from(res: StreamResult) -> Result<MZStatus, MZError>

    Converts to this type from the input type.
    ","From","glean_core::error::Result"],["
    §

    impl From<&StreamResult> for Result<MZStatus, MZError>

    §

    fn from(res: &StreamResult) -> Result<MZStatus, MZError>

    Converts to this type from the input type.
    ","From<&StreamResult>","glean_core::error::Result"],["
    §

    impl<UT, R, E> LowerReturn<UT> for Result<R, E>
    where\n R: LowerReturn<UT>,\n E: LowerError<UT> + Display + Debug + Send + Sync + 'static,

    §

    type ReturnType = <R as LowerReturn<UT>>::ReturnType

    The type that should be returned by scaffolding functions for this type. Read more
    §

    fn lower_return(\n v: Result<R, E>\n) -> Result<<Result<R, E> as LowerReturn<UT>>::ReturnType, RustBuffer>

    Lower this value for scaffolding function return Read more
    §

    fn handle_failed_lift(arg_name: &str, err: Error) -> Result<R, E>

    If possible, get a serialized error for failed argument lifts Read more
    ","LowerReturn","glean_core::error::Result"],["
    §

    impl<UT, R, E> TypeId<UT> for Result<R, E>
    where\n R: TypeId<UT>,\n E: TypeId<UT>,

    §

    const TYPE_ID_META: MetadataBuffer = _

    ","TypeId","glean_core::error::Result"],["
    §

    impl<UT, R, E> LiftReturn<UT> for Result<R, E>
    where\n R: LiftReturn<UT>,\n E: Lift<UT, FfiType = RustBuffer> + ConvertError<UT>,

    §

    type ReturnType = <R as LiftReturn<UT>>::ReturnType

    FFI return type for trait interfaces
    §

    fn try_lift_successful_return(\n v: <R as LiftReturn<UT>>::ReturnType\n) -> Result<Result<R, E>, Error>

    Lift a successfully returned value from a trait interface
    §

    fn lift_error(buf: RustBuffer) -> Result<R, E>

    Lift a Rust value for a callback interface method error result Read more
    §

    fn handle_callback_unexpected_error(\n e: UnexpectedUniFFICallbackError\n) -> Result<R, E>

    Lift a Rust value for an unexpected callback interface error Read more
    §

    fn lift_foreign_return(\n ffi_return: Self::ReturnType,\n call_status: RustCallStatus\n) -> Self

    Lift a foreign returned value from a trait interface Read more
    ","LiftReturn","glean_core::error::Result"],["
    source§

    impl<T, E> Context<T, E> for Result<T, E>
    where\n E: StdError + Send + Sync + 'static,

    source§

    fn context<C>(self, context: C) -> Result<T, Error>
    where\n C: Display + Send + Sync + 'static,

    Wrap the error value with additional context.
    source§

    fn with_context<C, F>(self, context: F) -> Result<T, Error>
    where\n C: Display + Send + Sync + 'static,\n F: FnOnce() -> C,

    Wrap the error value with additional context that is evaluated lazily\nonly once an error does occur.
    ","Context","glean_core::error::Result"],["
    §

    impl<I, O, E> Finish<I, O, E> for Result<(I, O), Err<E>>

    §

    fn finish(self) -> Result<(I, O), E>

    converts the parser’s result to a type that is more consumable by error\nmanagement libraries. It keeps the same Ok branch, and merges Err::Error\nand Err::Failure into the Err side. Read more
    ","Finish","glean_core::error::Result"]] +};if (window.register_type_impls) {window.register_type_impls(type_impls);} else {window.pending_type_impls = type_impls;}})() \ No newline at end of file diff --git a/docs/type.impl/glean_core/metrics/struct.LabeledMetric.js b/docs/type.impl/glean_core/metrics/struct.LabeledMetric.js new file mode 100644 index 0000000000..589e6c2773 --- /dev/null +++ b/docs/type.impl/glean_core/metrics/struct.LabeledMetric.js @@ -0,0 +1,3 @@ +(function() {var type_impls = { +"glean_core":[["
    source§

    impl<T> LabeledMetric<T>
    where\n T: AllowLabeled + Clone,

    source

    pub fn new(\n meta: LabeledMetricData,\n labels: Option<Vec<Cow<'static, str>>>\n) -> LabeledMetric<T>

    Creates a new labeled metric from the given metric instance and optional list of labels.

    \n

    See get for information on how static or dynamic labels are handled.

    \n
    source

    pub fn get<S: AsRef<str>>(&self, label: S) -> Arc<T>

    Gets a specific metric for a given label.

    \n

    If a set of acceptable labels were specified in the metrics.yaml file,\nand the given label is not in the set, it will be recorded under the special OTHER_LABEL label.

    \n

    If a set of acceptable labels was not specified in the metrics.yaml file,\nonly the first 16 unique labels will be used.\nAfter that, any additional labels will be recorded under the special OTHER_LABEL label.

    \n

    Labels must be snake_case and less than 30 characters.\nIf an invalid label is used, the metric will be recorded in the special OTHER_LABEL label.

    \n
    source

    pub fn test_get_num_recorded_errors(&self, error: ErrorType) -> i32

    Exported for test purposes.

    \n

    Gets the number of recorded errors for the given metric and error type.

    \n
    Arguments
    \n
      \n
    • error - The type of error
    • \n
    \n
    Returns
    \n

    The number of errors reported.

    \n
    ",0,"glean_core::metrics::labeled::LabeledCounter","glean_core::metrics::labeled::LabeledBoolean","glean_core::metrics::labeled::LabeledString","glean_core::metrics::labeled::LabeledCustomDistribution","glean_core::metrics::labeled::LabeledMemoryDistribution","glean_core::metrics::labeled::LabeledTimingDistribution"],["
    source§

    impl<T: Debug> Debug for LabeledMetric<T>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    ","Debug","glean_core::metrics::labeled::LabeledCounter","glean_core::metrics::labeled::LabeledBoolean","glean_core::metrics::labeled::LabeledString","glean_core::metrics::labeled::LabeledCustomDistribution","glean_core::metrics::labeled::LabeledMemoryDistribution","glean_core::metrics::labeled::LabeledTimingDistribution"]] +};if (window.register_type_impls) {window.register_type_impls(type_impls);} else {window.pending_type_impls = type_impls;}})() \ No newline at end of file diff --git a/docs/type.impl/std/collections/hash/map/struct.HashMap.js b/docs/type.impl/std/collections/hash/map/struct.HashMap.js new file mode 100644 index 0000000000..b7f841de8b --- /dev/null +++ b/docs/type.impl/std/collections/hash/map/struct.HashMap.js @@ -0,0 +1,3 @@ +(function() {var type_impls = { +"glean_core":[["
    source§

    impl<K, V> HashMap<K, V>

    1.0.0 · source

    pub fn new() -> HashMap<K, V>

    Creates an empty HashMap.

    \n

    The hash map is initially created with a capacity of 0, so it will not allocate until it\nis first inserted into.

    \n
    Examples
    \n
    use std::collections::HashMap;\nlet mut map: HashMap<&str, i32> = HashMap::new();
    \n
    1.0.0 · source

    pub fn with_capacity(capacity: usize) -> HashMap<K, V>

    Creates an empty HashMap with at least the specified capacity.

    \n

    The hash map will be able to hold at least capacity elements without\nreallocating. This method is allowed to allocate for more elements than\ncapacity. If capacity is 0, the hash map will not allocate.

    \n
    Examples
    \n
    use std::collections::HashMap;\nlet mut map: HashMap<&str, i32> = HashMap::with_capacity(10);
    \n
    ",0,"glean_core::upload::request::HeaderMap"],["
    source§

    impl<K, V, S> HashMap<K, V, S>

    1.7.0 (const: unstable) · source

    pub fn with_hasher(hash_builder: S) -> HashMap<K, V, S>

    Creates an empty HashMap which will use the given hash builder to hash\nkeys.

    \n

    The created map has the default initial capacity.

    \n

    Warning: hash_builder is normally randomly generated, and\nis designed to allow HashMaps to be resistant to attacks that\ncause many collisions and very poor performance. Setting it\nmanually using this function can expose a DoS attack vector.

    \n

    The hash_builder passed should implement the BuildHasher trait for\nthe HashMap to be useful, see its documentation for details.

    \n
    Examples
    \n
    use std::collections::HashMap;\nuse std::hash::RandomState;\n\nlet s = RandomState::new();\nlet mut map = HashMap::with_hasher(s);\nmap.insert(1, 2);
    \n
    1.7.0 · source

    pub fn with_capacity_and_hasher(capacity: usize, hasher: S) -> HashMap<K, V, S>

    Creates an empty HashMap with at least the specified capacity, using\nhasher to hash the keys.

    \n

    The hash map will be able to hold at least capacity elements without\nreallocating. This method is allowed to allocate for more elements than\ncapacity. If capacity is 0, the hash map will not allocate.

    \n

    Warning: hasher is normally randomly generated, and\nis designed to allow HashMaps to be resistant to attacks that\ncause many collisions and very poor performance. Setting it\nmanually using this function can expose a DoS attack vector.

    \n

    The hasher passed should implement the BuildHasher trait for\nthe HashMap to be useful, see its documentation for details.

    \n
    Examples
    \n
    use std::collections::HashMap;\nuse std::hash::RandomState;\n\nlet s = RandomState::new();\nlet mut map = HashMap::with_capacity_and_hasher(10, s);\nmap.insert(1, 2);
    \n
    1.0.0 · source

    pub fn capacity(&self) -> usize

    Returns the number of elements the map can hold without reallocating.

    \n

    This number is a lower bound; the HashMap<K, V> might be able to hold\nmore, but is guaranteed to be able to hold at least this many.

    \n
    Examples
    \n
    use std::collections::HashMap;\nlet map: HashMap<i32, i32> = HashMap::with_capacity(100);\nassert!(map.capacity() >= 100);
    \n
    1.0.0 · source

    pub fn keys(&self) -> Keys<'_, K, V>

    An iterator visiting all keys in arbitrary order.\nThe iterator element type is &'a K.

    \n
    Examples
    \n
    use std::collections::HashMap;\n\nlet map = HashMap::from([\n    (\"a\", 1),\n    (\"b\", 2),\n    (\"c\", 3),\n]);\n\nfor key in map.keys() {\n    println!(\"{key}\");\n}
    \n
    Performance
    \n

    In the current implementation, iterating over keys takes O(capacity) time\ninstead of O(len) because it internally visits empty buckets too.

    \n
    1.54.0 · source

    pub fn into_keys(self) -> IntoKeys<K, V>

    Creates a consuming iterator visiting all the keys in arbitrary order.\nThe map cannot be used after calling this.\nThe iterator element type is K.

    \n
    Examples
    \n
    use std::collections::HashMap;\n\nlet map = HashMap::from([\n    (\"a\", 1),\n    (\"b\", 2),\n    (\"c\", 3),\n]);\n\nlet mut vec: Vec<&str> = map.into_keys().collect();\n// The `IntoKeys` iterator produces keys in arbitrary order, so the\n// keys must be sorted to test them against a sorted array.\nvec.sort_unstable();\nassert_eq!(vec, [\"a\", \"b\", \"c\"]);
    \n
    Performance
    \n

    In the current implementation, iterating over keys takes O(capacity) time\ninstead of O(len) because it internally visits empty buckets too.

    \n
    1.0.0 · source

    pub fn values(&self) -> Values<'_, K, V>

    An iterator visiting all values in arbitrary order.\nThe iterator element type is &'a V.

    \n
    Examples
    \n
    use std::collections::HashMap;\n\nlet map = HashMap::from([\n    (\"a\", 1),\n    (\"b\", 2),\n    (\"c\", 3),\n]);\n\nfor val in map.values() {\n    println!(\"{val}\");\n}
    \n
    Performance
    \n

    In the current implementation, iterating over values takes O(capacity) time\ninstead of O(len) because it internally visits empty buckets too.

    \n
    1.10.0 · source

    pub fn values_mut(&mut self) -> ValuesMut<'_, K, V>

    An iterator visiting all values mutably in arbitrary order.\nThe iterator element type is &'a mut V.

    \n
    Examples
    \n
    use std::collections::HashMap;\n\nlet mut map = HashMap::from([\n    (\"a\", 1),\n    (\"b\", 2),\n    (\"c\", 3),\n]);\n\nfor val in map.values_mut() {\n    *val = *val + 10;\n}\n\nfor val in map.values() {\n    println!(\"{val}\");\n}
    \n
    Performance
    \n

    In the current implementation, iterating over values takes O(capacity) time\ninstead of O(len) because it internally visits empty buckets too.

    \n
    1.54.0 · source

    pub fn into_values(self) -> IntoValues<K, V>

    Creates a consuming iterator visiting all the values in arbitrary order.\nThe map cannot be used after calling this.\nThe iterator element type is V.

    \n
    Examples
    \n
    use std::collections::HashMap;\n\nlet map = HashMap::from([\n    (\"a\", 1),\n    (\"b\", 2),\n    (\"c\", 3),\n]);\n\nlet mut vec: Vec<i32> = map.into_values().collect();\n// The `IntoValues` iterator produces values in arbitrary order, so\n// the values must be sorted to test them against a sorted array.\nvec.sort_unstable();\nassert_eq!(vec, [1, 2, 3]);
    \n
    Performance
    \n

    In the current implementation, iterating over values takes O(capacity) time\ninstead of O(len) because it internally visits empty buckets too.

    \n
    1.0.0 · source

    pub fn iter(&self) -> Iter<'_, K, V>

    An iterator visiting all key-value pairs in arbitrary order.\nThe iterator element type is (&'a K, &'a V).

    \n
    Examples
    \n
    use std::collections::HashMap;\n\nlet map = HashMap::from([\n    (\"a\", 1),\n    (\"b\", 2),\n    (\"c\", 3),\n]);\n\nfor (key, val) in map.iter() {\n    println!(\"key: {key} val: {val}\");\n}
    \n
    Performance
    \n

    In the current implementation, iterating over map takes O(capacity) time\ninstead of O(len) because it internally visits empty buckets too.

    \n
    1.0.0 · source

    pub fn iter_mut(&mut self) -> IterMut<'_, K, V>

    An iterator visiting all key-value pairs in arbitrary order,\nwith mutable references to the values.\nThe iterator element type is (&'a K, &'a mut V).

    \n
    Examples
    \n
    use std::collections::HashMap;\n\nlet mut map = HashMap::from([\n    (\"a\", 1),\n    (\"b\", 2),\n    (\"c\", 3),\n]);\n\n// Update all values\nfor (_, val) in map.iter_mut() {\n    *val *= 2;\n}\n\nfor (key, val) in &map {\n    println!(\"key: {key} val: {val}\");\n}
    \n
    Performance
    \n

    In the current implementation, iterating over map takes O(capacity) time\ninstead of O(len) because it internally visits empty buckets too.

    \n
    1.0.0 · source

    pub fn len(&self) -> usize

    Returns the number of elements in the map.

    \n
    Examples
    \n
    use std::collections::HashMap;\n\nlet mut a = HashMap::new();\nassert_eq!(a.len(), 0);\na.insert(1, \"a\");\nassert_eq!(a.len(), 1);
    \n
    1.0.0 · source

    pub fn is_empty(&self) -> bool

    Returns true if the map contains no elements.

    \n
    Examples
    \n
    use std::collections::HashMap;\n\nlet mut a = HashMap::new();\nassert!(a.is_empty());\na.insert(1, \"a\");\nassert!(!a.is_empty());
    \n
    1.6.0 · source

    pub fn drain(&mut self) -> Drain<'_, K, V>

    Clears the map, returning all key-value pairs as an iterator. Keeps the\nallocated memory for reuse.

    \n

    If the returned iterator is dropped before being fully consumed, it\ndrops the remaining key-value pairs. The returned iterator keeps a\nmutable borrow on the map to optimize its implementation.

    \n
    Examples
    \n
    use std::collections::HashMap;\n\nlet mut a = HashMap::new();\na.insert(1, \"a\");\na.insert(2, \"b\");\n\nfor (k, v) in a.drain().take(1) {\n    assert!(k == 1 || k == 2);\n    assert!(v == \"a\" || v == \"b\");\n}\n\nassert!(a.is_empty());
    \n
    source

    pub fn extract_if<F>(&mut self, pred: F) -> ExtractIf<'_, K, V, F>
    where\n F: FnMut(&K, &mut V) -> bool,

    🔬This is a nightly-only experimental API. (hash_extract_if)

    Creates an iterator which uses a closure to determine if an element should be removed.

    \n

    If the closure returns true, the element is removed from the map and yielded.\nIf the closure returns false, or panics, the element remains in the map and will not be\nyielded.

    \n

    Note that extract_if lets you mutate every value in the filter closure, regardless of\nwhether you choose to keep or remove it.

    \n

    If the returned ExtractIf is not exhausted, e.g. because it is dropped without iterating\nor the iteration short-circuits, then the remaining elements will be retained.\nUse retain with a negated predicate if you do not need the returned iterator.

    \n
    Examples
    \n

    Splitting a map into even and odd keys, reusing the original map:

    \n\n
    #![feature(hash_extract_if)]\nuse std::collections::HashMap;\n\nlet mut map: HashMap<i32, i32> = (0..8).map(|x| (x, x)).collect();\nlet extracted: HashMap<i32, i32> = map.extract_if(|k, _v| k % 2 == 0).collect();\n\nlet mut evens = extracted.keys().copied().collect::<Vec<_>>();\nlet mut odds = map.keys().copied().collect::<Vec<_>>();\nevens.sort();\nodds.sort();\n\nassert_eq!(evens, vec![0, 2, 4, 6]);\nassert_eq!(odds, vec![1, 3, 5, 7]);
    \n
    1.18.0 · source

    pub fn retain<F>(&mut self, f: F)
    where\n F: FnMut(&K, &mut V) -> bool,

    Retains only the elements specified by the predicate.

    \n

    In other words, remove all pairs (k, v) for which f(&k, &mut v) returns false.\nThe elements are visited in unsorted (and unspecified) order.

    \n
    Examples
    \n
    use std::collections::HashMap;\n\nlet mut map: HashMap<i32, i32> = (0..8).map(|x| (x, x*10)).collect();\nmap.retain(|&k, _| k % 2 == 0);\nassert_eq!(map.len(), 4);
    \n
    Performance
    \n

    In the current implementation, this operation takes O(capacity) time\ninstead of O(len) because it internally visits empty buckets too.

    \n
    1.0.0 · source

    pub fn clear(&mut self)

    Clears the map, removing all key-value pairs. Keeps the allocated memory\nfor reuse.

    \n
    Examples
    \n
    use std::collections::HashMap;\n\nlet mut a = HashMap::new();\na.insert(1, \"a\");\na.clear();\nassert!(a.is_empty());
    \n
    1.9.0 · source

    pub fn hasher(&self) -> &S

    Returns a reference to the map’s BuildHasher.

    \n
    Examples
    \n
    use std::collections::HashMap;\nuse std::hash::RandomState;\n\nlet hasher = RandomState::new();\nlet map: HashMap<i32, i32> = HashMap::with_hasher(hasher);\nlet hasher: &RandomState = map.hasher();
    \n
    ",0,"glean_core::upload::request::HeaderMap"],["
    source§

    impl<K, V, S> HashMap<K, V, S>
    where\n K: Eq + Hash,\n S: BuildHasher,

    1.0.0 · source

    pub fn reserve(&mut self, additional: usize)

    Reserves capacity for at least additional more elements to be inserted\nin the HashMap. The collection may reserve more space to speculatively\navoid frequent reallocations. After calling reserve,\ncapacity will be greater than or equal to self.len() + additional.\nDoes nothing if capacity is already sufficient.

    \n
    Panics
    \n

    Panics if the new allocation size overflows usize.

    \n
    Examples
    \n
    use std::collections::HashMap;\nlet mut map: HashMap<&str, i32> = HashMap::new();\nmap.reserve(10);
    \n
    1.57.0 · source

    pub fn try_reserve(&mut self, additional: usize) -> Result<(), TryReserveError>

    Tries to reserve capacity for at least additional more elements to be inserted\nin the HashMap. The collection may reserve more space to speculatively\navoid frequent reallocations. After calling try_reserve,\ncapacity will be greater than or equal to self.len() + additional if\nit returns Ok(()).\nDoes nothing if capacity is already sufficient.

    \n
    Errors
    \n

    If the capacity overflows, or the allocator reports a failure, then an error\nis returned.

    \n
    Examples
    \n
    use std::collections::HashMap;\n\nlet mut map: HashMap<&str, isize> = HashMap::new();\nmap.try_reserve(10).expect(\"why is the test harness OOMing on a handful of bytes?\");
    \n
    1.0.0 · source

    pub fn shrink_to_fit(&mut self)

    Shrinks the capacity of the map as much as possible. It will drop\ndown as much as possible while maintaining the internal rules\nand possibly leaving some space in accordance with the resize policy.

    \n
    Examples
    \n
    use std::collections::HashMap;\n\nlet mut map: HashMap<i32, i32> = HashMap::with_capacity(100);\nmap.insert(1, 2);\nmap.insert(3, 4);\nassert!(map.capacity() >= 100);\nmap.shrink_to_fit();\nassert!(map.capacity() >= 2);
    \n
    1.56.0 · source

    pub fn shrink_to(&mut self, min_capacity: usize)

    Shrinks the capacity of the map with a lower limit. It will drop\ndown no lower than the supplied limit while maintaining the internal rules\nand possibly leaving some space in accordance with the resize policy.

    \n

    If the current capacity is less than the lower limit, this is a no-op.

    \n
    Examples
    \n
    use std::collections::HashMap;\n\nlet mut map: HashMap<i32, i32> = HashMap::with_capacity(100);\nmap.insert(1, 2);\nmap.insert(3, 4);\nassert!(map.capacity() >= 100);\nmap.shrink_to(10);\nassert!(map.capacity() >= 10);\nmap.shrink_to(0);\nassert!(map.capacity() >= 2);
    \n
    1.0.0 · source

    pub fn entry(&mut self, key: K) -> Entry<'_, K, V>

    Gets the given key’s corresponding entry in the map for in-place manipulation.

    \n
    Examples
    \n
    use std::collections::HashMap;\n\nlet mut letters = HashMap::new();\n\nfor ch in \"a short treatise on fungi\".chars() {\n    letters.entry(ch).and_modify(|counter| *counter += 1).or_insert(1);\n}\n\nassert_eq!(letters[&'s'], 2);\nassert_eq!(letters[&'t'], 3);\nassert_eq!(letters[&'u'], 1);\nassert_eq!(letters.get(&'y'), None);
    \n
    1.0.0 · source

    pub fn get<Q>(&self, k: &Q) -> Option<&V>
    where\n K: Borrow<Q>,\n Q: Hash + Eq + ?Sized,

    Returns a reference to the value corresponding to the key.

    \n

    The key may be any borrowed form of the map’s key type, but\nHash and Eq on the borrowed form must match those for\nthe key type.

    \n
    Examples
    \n
    use std::collections::HashMap;\n\nlet mut map = HashMap::new();\nmap.insert(1, \"a\");\nassert_eq!(map.get(&1), Some(&\"a\"));\nassert_eq!(map.get(&2), None);
    \n
    1.40.0 · source

    pub fn get_key_value<Q>(&self, k: &Q) -> Option<(&K, &V)>
    where\n K: Borrow<Q>,\n Q: Hash + Eq + ?Sized,

    Returns the key-value pair corresponding to the supplied key.

    \n

    The supplied key may be any borrowed form of the map’s key type, but\nHash and Eq on the borrowed form must match those for\nthe key type.

    \n
    Examples
    \n
    use std::collections::HashMap;\n\nlet mut map = HashMap::new();\nmap.insert(1, \"a\");\nassert_eq!(map.get_key_value(&1), Some((&1, &\"a\")));\nassert_eq!(map.get_key_value(&2), None);
    \n
    source

    pub fn get_many_mut<Q, const N: usize>(\n &mut self,\n ks: [&Q; N]\n) -> Option<[&mut V; N]>
    where\n K: Borrow<Q>,\n Q: Hash + Eq + ?Sized,

    🔬This is a nightly-only experimental API. (map_many_mut)

    Attempts to get mutable references to N values in the map at once.

    \n

    Returns an array of length N with the results of each query. For soundness, at most one\nmutable reference will be returned to any value. None will be returned if any of the\nkeys are duplicates or missing.

    \n
    Examples
    \n
    #![feature(map_many_mut)]\nuse std::collections::HashMap;\n\nlet mut libraries = HashMap::new();\nlibraries.insert(\"Bodleian Library\".to_string(), 1602);\nlibraries.insert(\"Athenæum\".to_string(), 1807);\nlibraries.insert(\"Herzogin-Anna-Amalia-Bibliothek\".to_string(), 1691);\nlibraries.insert(\"Library of Congress\".to_string(), 1800);\n\nlet got = libraries.get_many_mut([\n    \"Athenæum\",\n    \"Library of Congress\",\n]);\nassert_eq!(\n    got,\n    Some([\n        &mut 1807,\n        &mut 1800,\n    ]),\n);\n\n// Missing keys result in None\nlet got = libraries.get_many_mut([\n    \"Athenæum\",\n    \"New York Public Library\",\n]);\nassert_eq!(got, None);\n\n// Duplicate keys result in None\nlet got = libraries.get_many_mut([\n    \"Athenæum\",\n    \"Athenæum\",\n]);\nassert_eq!(got, None);
    \n
    source

    pub unsafe fn get_many_unchecked_mut<Q, const N: usize>(\n &mut self,\n ks: [&Q; N]\n) -> Option<[&mut V; N]>
    where\n K: Borrow<Q>,\n Q: Hash + Eq + ?Sized,

    🔬This is a nightly-only experimental API. (map_many_mut)

    Attempts to get mutable references to N values in the map at once, without validating that\nthe values are unique.

    \n

    Returns an array of length N with the results of each query. None will be returned if\nany of the keys are missing.

    \n

    For a safe alternative see get_many_mut.

    \n
    Safety
    \n

    Calling this method with overlapping keys is undefined behavior even if the resulting\nreferences are not used.

    \n
    Examples
    \n
    #![feature(map_many_mut)]\nuse std::collections::HashMap;\n\nlet mut libraries = HashMap::new();\nlibraries.insert(\"Bodleian Library\".to_string(), 1602);\nlibraries.insert(\"Athenæum\".to_string(), 1807);\nlibraries.insert(\"Herzogin-Anna-Amalia-Bibliothek\".to_string(), 1691);\nlibraries.insert(\"Library of Congress\".to_string(), 1800);\n\nlet got = libraries.get_many_mut([\n    \"Athenæum\",\n    \"Library of Congress\",\n]);\nassert_eq!(\n    got,\n    Some([\n        &mut 1807,\n        &mut 1800,\n    ]),\n);\n\n// Missing keys result in None\nlet got = libraries.get_many_mut([\n    \"Athenæum\",\n    \"New York Public Library\",\n]);\nassert_eq!(got, None);
    \n
    1.0.0 · source

    pub fn contains_key<Q>(&self, k: &Q) -> bool
    where\n K: Borrow<Q>,\n Q: Hash + Eq + ?Sized,

    Returns true if the map contains a value for the specified key.

    \n

    The key may be any borrowed form of the map’s key type, but\nHash and Eq on the borrowed form must match those for\nthe key type.

    \n
    Examples
    \n
    use std::collections::HashMap;\n\nlet mut map = HashMap::new();\nmap.insert(1, \"a\");\nassert_eq!(map.contains_key(&1), true);\nassert_eq!(map.contains_key(&2), false);
    \n
    1.0.0 · source

    pub fn get_mut<Q>(&mut self, k: &Q) -> Option<&mut V>
    where\n K: Borrow<Q>,\n Q: Hash + Eq + ?Sized,

    Returns a mutable reference to the value corresponding to the key.

    \n

    The key may be any borrowed form of the map’s key type, but\nHash and Eq on the borrowed form must match those for\nthe key type.

    \n
    Examples
    \n
    use std::collections::HashMap;\n\nlet mut map = HashMap::new();\nmap.insert(1, \"a\");\nif let Some(x) = map.get_mut(&1) {\n    *x = \"b\";\n}\nassert_eq!(map[&1], \"b\");
    \n
    1.0.0 · source

    pub fn insert(&mut self, k: K, v: V) -> Option<V>

    Inserts a key-value pair into the map.

    \n

    If the map did not have this key present, None is returned.

    \n

    If the map did have this key present, the value is updated, and the old\nvalue is returned. The key is not updated, though; this matters for\ntypes that can be == without being identical. See the module-level\ndocumentation for more.

    \n
    Examples
    \n
    use std::collections::HashMap;\n\nlet mut map = HashMap::new();\nassert_eq!(map.insert(37, \"a\"), None);\nassert_eq!(map.is_empty(), false);\n\nmap.insert(37, \"b\");\nassert_eq!(map.insert(37, \"c\"), Some(\"b\"));\nassert_eq!(map[&37], \"c\");
    \n
    source

    pub fn try_insert(\n &mut self,\n key: K,\n value: V\n) -> Result<&mut V, OccupiedError<'_, K, V>>

    🔬This is a nightly-only experimental API. (map_try_insert)

    Tries to insert a key-value pair into the map, and returns\na mutable reference to the value in the entry.

    \n

    If the map already had this key present, nothing is updated, and\nan error containing the occupied entry and the value is returned.

    \n
    Examples
    \n

    Basic usage:

    \n\n
    #![feature(map_try_insert)]\n\nuse std::collections::HashMap;\n\nlet mut map = HashMap::new();\nassert_eq!(map.try_insert(37, \"a\").unwrap(), &\"a\");\n\nlet err = map.try_insert(37, \"b\").unwrap_err();\nassert_eq!(err.entry.key(), &37);\nassert_eq!(err.entry.get(), &\"a\");\nassert_eq!(err.value, \"b\");
    \n
    1.0.0 · source

    pub fn remove<Q>(&mut self, k: &Q) -> Option<V>
    where\n K: Borrow<Q>,\n Q: Hash + Eq + ?Sized,

    Removes a key from the map, returning the value at the key if the key\nwas previously in the map.

    \n

    The key may be any borrowed form of the map’s key type, but\nHash and Eq on the borrowed form must match those for\nthe key type.

    \n
    Examples
    \n
    use std::collections::HashMap;\n\nlet mut map = HashMap::new();\nmap.insert(1, \"a\");\nassert_eq!(map.remove(&1), Some(\"a\"));\nassert_eq!(map.remove(&1), None);
    \n
    1.27.0 · source

    pub fn remove_entry<Q>(&mut self, k: &Q) -> Option<(K, V)>
    where\n K: Borrow<Q>,\n Q: Hash + Eq + ?Sized,

    Removes a key from the map, returning the stored key and value if the\nkey was previously in the map.

    \n

    The key may be any borrowed form of the map’s key type, but\nHash and Eq on the borrowed form must match those for\nthe key type.

    \n
    Examples
    \n
    use std::collections::HashMap;\n\nlet mut map = HashMap::new();\nmap.insert(1, \"a\");\nassert_eq!(map.remove_entry(&1), Some((1, \"a\")));\nassert_eq!(map.remove(&1), None);
    \n
    ",0,"glean_core::upload::request::HeaderMap"],["
    source§

    impl<K, V, S> HashMap<K, V, S>
    where\n S: BuildHasher,

    source

    pub fn raw_entry_mut(&mut self) -> RawEntryBuilderMut<'_, K, V, S>

    🔬This is a nightly-only experimental API. (hash_raw_entry)

    Creates a raw entry builder for the HashMap.

    \n

    Raw entries provide the lowest level of control for searching and\nmanipulating a map. They must be manually initialized with a hash and\nthen manually searched. After this, insertions into a vacant entry\nstill require an owned key to be provided.

    \n

    Raw entries are useful for such exotic situations as:

    \n
      \n
    • Hash memoization
    • \n
    • Deferring the creation of an owned key until it is known to be required
    • \n
    • Using a search key that doesn’t work with the Borrow trait
    • \n
    • Using custom comparison logic without newtype wrappers
    • \n
    \n

    Because raw entries provide much more low-level control, it’s much easier\nto put the HashMap into an inconsistent state which, while memory-safe,\nwill cause the map to produce seemingly random results. Higher-level and\nmore foolproof APIs like entry should be preferred when possible.

    \n

    In particular, the hash used to initialized the raw entry must still be\nconsistent with the hash of the key that is ultimately stored in the entry.\nThis is because implementations of HashMap may need to recompute hashes\nwhen resizing, at which point only the keys are available.

    \n

    Raw entries give mutable access to the keys. This must not be used\nto modify how the key would compare or hash, as the map will not re-evaluate\nwhere the key should go, meaning the keys may become “lost” if their\nlocation does not reflect their state. For instance, if you change a key\nso that the map now contains keys which compare equal, search may start\nacting erratically, with two keys randomly masking each other. Implementations\nare free to assume this doesn’t happen (within the limits of memory-safety).

    \n
    source

    pub fn raw_entry(&self) -> RawEntryBuilder<'_, K, V, S>

    🔬This is a nightly-only experimental API. (hash_raw_entry)

    Creates a raw immutable entry builder for the HashMap.

    \n

    Raw entries provide the lowest level of control for searching and\nmanipulating a map. They must be manually initialized with a hash and\nthen manually searched.

    \n

    This is useful for

    \n
      \n
    • Hash memoization
    • \n
    • Using a search key that doesn’t work with the Borrow trait
    • \n
    • Using custom comparison logic without newtype wrappers
    • \n
    \n

    Unless you are in such a situation, higher-level and more foolproof APIs like\nget should be preferred.

    \n

    Immutable raw entries have very limited use; you might instead want raw_entry_mut.

    \n
    ",0,"glean_core::upload::request::HeaderMap"],["
    1.0.0 · source§

    impl<K, V, S> IntoIterator for HashMap<K, V, S>

    source§

    fn into_iter(self) -> IntoIter<K, V>

    Creates a consuming iterator, that is, one that moves each key-value\npair out of the map in arbitrary order. The map cannot be used after\ncalling this.

    \n
    Examples
    \n
    use std::collections::HashMap;\n\nlet map = HashMap::from([\n    (\"a\", 1),\n    (\"b\", 2),\n    (\"c\", 3),\n]);\n\n// Not possible with .iter()\nlet vec: Vec<(&str, i32)> = map.into_iter().collect();
    \n
    §

    type Item = (K, V)

    The type of the elements being iterated over.
    §

    type IntoIter = IntoIter<K, V>

    Which kind of iterator are we turning this into?
    ","IntoIterator","glean_core::upload::request::HeaderMap"],["
    1.0.0 · source§

    impl<K, Q, V, S> Index<&Q> for HashMap<K, V, S>
    where\n K: Eq + Hash + Borrow<Q>,\n Q: Eq + Hash + ?Sized,\n S: BuildHasher,

    source§

    fn index(&self, key: &Q) -> &V

    Returns a reference to the value corresponding to the supplied key.

    \n
    Panics
    \n

    Panics if the key is not present in the HashMap.

    \n
    §

    type Output = V

    The returned type after indexing.
    ","Index<&Q>","glean_core::upload::request::HeaderMap"],["
    1.0.0 · source§

    impl<K, V, S> FromIterator<(K, V)> for HashMap<K, V, S>
    where\n K: Eq + Hash,\n S: BuildHasher + Default,

    source§

    fn from_iter<T>(iter: T) -> HashMap<K, V, S>
    where\n T: IntoIterator<Item = (K, V)>,

    Creates a value from an iterator. Read more
    ","FromIterator<(K, V)>","glean_core::upload::request::HeaderMap"],["
    1.56.0 · source§

    impl<K, V, const N: usize> From<[(K, V); N]> for HashMap<K, V>
    where\n K: Eq + Hash,

    source§

    fn from(arr: [(K, V); N]) -> HashMap<K, V>

    Examples
    \n
    use std::collections::HashMap;\n\nlet map1 = HashMap::from([(1, 2), (3, 4)]);\nlet map2: HashMap<_, _> = [(1, 2), (3, 4)].into();\nassert_eq!(map1, map2);
    \n
    ","From<[(K, V); N]>","glean_core::upload::request::HeaderMap"],["
    1.36.0 · source§

    impl<K, V, S> UnwindSafe for HashMap<K, V, S>
    where\n K: UnwindSafe,\n V: UnwindSafe,\n S: UnwindSafe,

    ","UnwindSafe","glean_core::upload::request::HeaderMap"],["
    1.0.0 · source§

    impl<K, V, S> Clone for HashMap<K, V, S>
    where\n K: Clone,\n V: Clone,\n S: Clone,

    source§

    fn clone(&self) -> HashMap<K, V, S>

    Returns a copy of the value. Read more
    source§

    fn clone_from(&mut self, other: &HashMap<K, V, S>)

    Performs copy-assignment from source. Read more
    ","Clone","glean_core::upload::request::HeaderMap"],["
    1.0.0 · source§

    impl<K, V, S> Extend<(K, V)> for HashMap<K, V, S>
    where\n K: Eq + Hash,\n S: BuildHasher,

    Inserts all new key-values from the iterator and replaces values with existing\nkeys with new values returned from the iterator.

    \n
    source§

    fn extend<T>(&mut self, iter: T)
    where\n T: IntoIterator<Item = (K, V)>,

    Extends a collection with the contents of an iterator. Read more
    source§

    fn extend_one(&mut self, _: (K, V))

    🔬This is a nightly-only experimental API. (extend_one)
    Extends a collection with exactly one element.
    source§

    fn extend_reserve(&mut self, additional: usize)

    🔬This is a nightly-only experimental API. (extend_one)
    Reserves capacity in a collection for the given number of additional elements. Read more
    ","Extend<(K, V)>","glean_core::upload::request::HeaderMap"],["
    1.4.0 · source§

    impl<'a, K, V, S> Extend<(&'a K, &'a V)> for HashMap<K, V, S>
    where\n K: Eq + Hash + Copy,\n V: Copy,\n S: BuildHasher,

    source§

    fn extend<T>(&mut self, iter: T)
    where\n T: IntoIterator<Item = (&'a K, &'a V)>,

    Extends a collection with the contents of an iterator. Read more
    source§

    fn extend_one(&mut self, _: (&'a K, &'a V))

    🔬This is a nightly-only experimental API. (extend_one)
    Extends a collection with exactly one element.
    source§

    fn extend_reserve(&mut self, additional: usize)

    🔬This is a nightly-only experimental API. (extend_one)
    Reserves capacity in a collection for the given number of additional elements. Read more
    ","Extend<(&'a K, &'a V)>","glean_core::upload::request::HeaderMap"],["
    1.0.0 · source§

    impl<K, V, S> Eq for HashMap<K, V, S>
    where\n K: Eq + Hash,\n V: Eq,\n S: BuildHasher,

    ","Eq","glean_core::upload::request::HeaderMap"],["
    1.0.0 · source§

    impl<K, V, S> Default for HashMap<K, V, S>
    where\n S: Default,

    source§

    fn default() -> HashMap<K, V, S>

    Creates an empty HashMap<K, V, S>, with the Default value for the hasher.

    \n
    ","Default","glean_core::upload::request::HeaderMap"],["
    1.0.0 · source§

    impl<K, V, S> Debug for HashMap<K, V, S>
    where\n K: Debug,\n V: Debug,

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

    Formats the value using the given formatter. Read more
    ","Debug","glean_core::upload::request::HeaderMap"],["
    1.0.0 · source§

    impl<K, V, S> PartialEq for HashMap<K, V, S>
    where\n K: Eq + Hash,\n V: PartialEq,\n S: BuildHasher,

    source§

    fn eq(&self, other: &HashMap<K, V, S>) -> bool

    This method tests for self and other values to be equal, and is used\nby ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always\nsufficient, and should not be overridden without very good reason.
    ","PartialEq","glean_core::upload::request::HeaderMap"],["
    source§

    impl<K, V, H> Serialize for HashMap<K, V, H>
    where\n K: Serialize,\n V: Serialize,

    source§

    fn serialize<S>(\n &self,\n serializer: S\n) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>
    where\n S: Serializer,

    Serialize this value into the given Serde serializer. Read more
    ","Serialize","glean_core::upload::request::HeaderMap"],["
    source§

    impl<'de, K, V, S, E> IntoDeserializer<'de, E> for HashMap<K, V, S>
    where\n K: IntoDeserializer<'de, E> + Eq + Hash,\n V: IntoDeserializer<'de, E>,\n S: BuildHasher,\n E: Error,

    §

    type Deserializer = MapDeserializer<'de, <HashMap<K, V, S> as IntoIterator>::IntoIter, E>

    The type of the deserializer being converted into.
    source§

    fn into_deserializer(\n self\n) -> <HashMap<K, V, S> as IntoDeserializer<'de, E>>::Deserializer

    Convert this value into a deserializer.
    ","IntoDeserializer<'de, E>","glean_core::upload::request::HeaderMap"],["
    source§

    impl<'de, K, V, S> Deserialize<'de> for HashMap<K, V, S>
    where\n K: Deserialize<'de> + Eq + Hash,\n V: Deserialize<'de>,\n S: BuildHasher + Default,

    source§

    fn deserialize<D>(\n deserializer: D\n) -> Result<HashMap<K, V, S>, <D as Deserializer<'de>>::Error>
    where\n D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    ","Deserialize<'de>","glean_core::upload::request::HeaderMap"],["
    §

    impl<K, V, UT> LiftRef<UT> for HashMap<K, V>
    where\n HashMap<K, V>: Lift<UT>,

    §

    type LiftType = HashMap<K, V>

    ","LiftRef","glean_core::upload::request::HeaderMap"],["
    §

    impl<K, V, UT> LowerError<UT> for HashMap<K, V>
    where\n HashMap<K, V>: Lower<UT>,

    §

    fn lower_error(obj: HashMap<K, V>) -> RustBuffer

    Lower this value for scaffolding function return Read more
    ","LowerError","glean_core::upload::request::HeaderMap"],["
    §

    impl<K, V, UT> LowerReturn<UT> for HashMap<K, V>
    where\n HashMap<K, V>: Lower<UT>,

    §

    type ReturnType = <HashMap<K, V> as Lower<UT>>::FfiType

    The type that should be returned by scaffolding functions for this type. Read more
    §

    fn lower_return(\n obj: HashMap<K, V>\n) -> Result<<HashMap<K, V> as LowerReturn<UT>>::ReturnType, RustBuffer>

    Lower this value for scaffolding function return Read more
    §

    fn handle_failed_lift(arg_name: &str, e: Error) -> Self

    If possible, get a serialized error for failed argument lifts Read more
    ","LowerReturn","glean_core::upload::request::HeaderMap"],["
    §

    impl<K, V, UT> Lower<UT> for HashMap<K, V>
    where\n K: Lower<UT> + Hash + Eq,\n V: Lower<UT>,

    §

    type FfiType = RustBuffer

    §

    fn write(obj: HashMap<K, V>, buf: &mut Vec<u8>)

    §

    fn lower(obj: HashMap<K, V>) -> RustBuffer

    §

    fn lower_into_rust_buffer(obj: Self) -> RustBuffer

    Convenience method
    ","Lower","glean_core::upload::request::HeaderMap"],["
    §

    impl<K, V, UT> Lift<UT> for HashMap<K, V>
    where\n K: Lift<UT> + Hash + Eq,\n V: Lift<UT>,

    §

    type FfiType = RustBuffer

    §

    fn try_read(buf: &mut &[u8]) -> Result<HashMap<K, V>, Error>

    §

    fn try_lift(buf: RustBuffer) -> Result<HashMap<K, V>, Error>

    §

    fn try_lift_from_rust_buffer(v: RustBuffer) -> Result<Self, Error>

    Convenience method
    ","Lift","glean_core::upload::request::HeaderMap"],["
    §

    impl<K, V, UT> TypeId<UT> for HashMap<K, V>
    where\n K: TypeId<UT> + Hash + Eq,\n V: TypeId<UT>,

    §

    const TYPE_ID_META: MetadataBuffer = _

    ","TypeId","glean_core::upload::request::HeaderMap"],["
    §

    impl<K, V, UT> LiftReturn<UT> for HashMap<K, V>
    where\n HashMap<K, V>: Lift<UT>,

    §

    type ReturnType = <HashMap<K, V> as Lift<UT>>::FfiType

    FFI return type for trait interfaces
    §

    fn try_lift_successful_return(\n v: <HashMap<K, V> as LiftReturn<UT>>::ReturnType\n) -> Result<HashMap<K, V>, Error>

    Lift a successfully returned value from a trait interface
    §

    fn lift_foreign_return(\n ffi_return: Self::ReturnType,\n call_status: RustCallStatus\n) -> Self

    Lift a foreign returned value from a trait interface Read more
    §

    fn lift_error(_buf: RustBuffer) -> Self

    Lift a Rust value for a callback interface method error result Read more
    §

    fn handle_callback_unexpected_error(e: UnexpectedUniFFICallbackError) -> Self

    Lift a Rust value for an unexpected callback interface error Read more
    ","LiftReturn","glean_core::upload::request::HeaderMap"]] +};if (window.register_type_impls) {window.register_type_impls(type_impls);} else {window.pending_type_impls = type_impls;}})() \ No newline at end of file diff --git a/docs/uniffi_bindgen/all.html b/docs/uniffi_bindgen/all.html index ebbc3cef81..6f2cea0a1c 100644 --- a/docs/uniffi_bindgen/all.html +++ b/docs/uniffi_bindgen/all.html @@ -1 +1,2 @@ -List of all items in this crate

    List of all items

    \ No newline at end of file +List of all items in this crate +

    List of all items

    \ No newline at end of file diff --git a/docs/uniffi_bindgen/index.html b/docs/uniffi_bindgen/index.html index 62105ccda2..1aa0b1c4c3 100644 --- a/docs/uniffi_bindgen/index.html +++ b/docs/uniffi_bindgen/index.html @@ -1 +1,3 @@ -uniffi_bindgen - Rust

    Crate uniffi_bindgen

    source ·
    \ No newline at end of file +uniffi_bindgen - Rust +

    Crate uniffi_bindgen

    source ·
    \ No newline at end of file diff --git a/python/glean/metrics/event.html b/python/glean/metrics/event.html index 2e6b6096f6..16b1e6fb16 100644 --- a/python/glean/metrics/event.html +++ b/python/glean/metrics/event.html @@ -398,7 +398,6 @@

    Returns

    category: "str" name: "str" extra: "typing.Optional[dict[str, str]]" - @typing.no_type_check def __init__(self, *, timestamp: "int", category: "str", name: "str", extra: "typing.Optional[dict[str, str]]"): self.timestamp = timestamp self.category = category diff --git a/python/glean/metrics/index.html b/python/glean/metrics/index.html index 793066b73c..a88ade8bce 100644 --- a/python/glean/metrics/index.html +++ b/python/glean/metrics/index.html @@ -167,17 +167,17 @@

    Classes

    def __init__(self, meta: "CommonMetricData"): _UniffiConverterTypeCommonMetricData.check_lower(meta) - self._pointer = _rust_call(_UniffiLib.uniffi_glean_core_fn_constructor_booleanmetric_new, + self._pointer = _uniffi_rust_call(_UniffiLib.uniffi_glean_core_fn_constructor_booleanmetric_new, _UniffiConverterTypeCommonMetricData.lower(meta)) def __del__(self): # In case of partial initialization of instances. pointer = getattr(self, "_pointer", None) if pointer is not None: - _rust_call(_UniffiLib.uniffi_glean_core_fn_free_booleanmetric, pointer) + _uniffi_rust_call(_UniffiLib.uniffi_glean_core_fn_free_booleanmetric, pointer) def _uniffi_clone_pointer(self): - return _rust_call(_UniffiLib.uniffi_glean_core_fn_clone_booleanmetric, self._pointer) + return _uniffi_rust_call(_UniffiLib.uniffi_glean_core_fn_clone_booleanmetric, self._pointer) # Used by alternative constructors or any methods which return this type. @classmethod @@ -192,7 +192,7 @@

    Classes

    def set(self, value: "bool") -> None: _UniffiConverterBool.check_lower(value) - _rust_call(_UniffiLib.uniffi_glean_core_fn_method_booleanmetric_set,self._uniffi_clone_pointer(), + _uniffi_rust_call(_UniffiLib.uniffi_glean_core_fn_method_booleanmetric_set,self._uniffi_clone_pointer(), _UniffiConverterBool.lower(value)) @@ -204,7 +204,7 @@

    Classes

    _UniffiConverterTypeErrorType.check_lower(error) return _UniffiConverterInt32.lift( - _rust_call(_UniffiLib.uniffi_glean_core_fn_method_booleanmetric_test_get_num_recorded_errors,self._uniffi_clone_pointer(), + _uniffi_rust_call(_UniffiLib.uniffi_glean_core_fn_method_booleanmetric_test_get_num_recorded_errors,self._uniffi_clone_pointer(), _UniffiConverterTypeErrorType.lower(error)) ) @@ -218,7 +218,7 @@

    Classes

    _UniffiConverterOptionalString.check_lower(ping_name) return _UniffiConverterOptionalBool.lift( - _rust_call(_UniffiLib.uniffi_glean_core_fn_method_booleanmetric_test_get_value,self._uniffi_clone_pointer(), + _uniffi_rust_call(_UniffiLib.uniffi_glean_core_fn_method_booleanmetric_test_get_value,self._uniffi_clone_pointer(), _UniffiConverterOptionalString.lower(ping_name)) )
    @@ -236,7 +236,7 @@

    Methods

    def set(self, value: "bool") -> None:
         _UniffiConverterBool.check_lower(value)
         
    -    _rust_call(_UniffiLib.uniffi_glean_core_fn_method_booleanmetric_set,self._uniffi_clone_pointer(),
    +    _uniffi_rust_call(_UniffiLib.uniffi_glean_core_fn_method_booleanmetric_set,self._uniffi_clone_pointer(),
         _UniffiConverterBool.lower(value))
    @@ -253,7 +253,7 @@

    Methods

    _UniffiConverterTypeErrorType.check_lower(error) return _UniffiConverterInt32.lift( - _rust_call(_UniffiLib.uniffi_glean_core_fn_method_booleanmetric_test_get_num_recorded_errors,self._uniffi_clone_pointer(), + _uniffi_rust_call(_UniffiLib.uniffi_glean_core_fn_method_booleanmetric_test_get_num_recorded_errors,self._uniffi_clone_pointer(), _UniffiConverterTypeErrorType.lower(error)) ) @@ -273,7 +273,7 @@

    Methods

    _UniffiConverterOptionalString.check_lower(ping_name) return _UniffiConverterOptionalBool.lift( - _rust_call(_UniffiLib.uniffi_glean_core_fn_method_booleanmetric_test_get_value,self._uniffi_clone_pointer(), + _uniffi_rust_call(_UniffiLib.uniffi_glean_core_fn_method_booleanmetric_test_get_value,self._uniffi_clone_pointer(), _UniffiConverterOptionalString.lower(ping_name)) ) @@ -297,7 +297,6 @@

    Methods

    lifetime: "Lifetime" disabled: "bool" dynamic_label: "typing.Optional[str]" - @typing.no_type_check def __init__(self, *, category: "str", name: "str", send_in_pings: "typing.List[str]", lifetime: "Lifetime", disabled: "bool", dynamic_label: "typing.Optional[str]" = _DEFAULT): self.category = category self.name = name @@ -370,17 +369,17 @@

    Class variables

    def __init__(self, meta: "CommonMetricData"): _UniffiConverterTypeCommonMetricData.check_lower(meta) - self._pointer = _rust_call(_UniffiLib.uniffi_glean_core_fn_constructor_countermetric_new, + self._pointer = _uniffi_rust_call(_UniffiLib.uniffi_glean_core_fn_constructor_countermetric_new, _UniffiConverterTypeCommonMetricData.lower(meta)) def __del__(self): # In case of partial initialization of instances. pointer = getattr(self, "_pointer", None) if pointer is not None: - _rust_call(_UniffiLib.uniffi_glean_core_fn_free_countermetric, pointer) + _uniffi_rust_call(_UniffiLib.uniffi_glean_core_fn_free_countermetric, pointer) def _uniffi_clone_pointer(self): - return _rust_call(_UniffiLib.uniffi_glean_core_fn_clone_countermetric, self._pointer) + return _uniffi_rust_call(_UniffiLib.uniffi_glean_core_fn_clone_countermetric, self._pointer) # Used by alternative constructors or any methods which return this type. @classmethod @@ -397,7 +396,7 @@

    Class variables

    amount = 1 _UniffiConverterInt32.check_lower(amount) - _rust_call(_UniffiLib.uniffi_glean_core_fn_method_countermetric_add,self._uniffi_clone_pointer(), + _uniffi_rust_call(_UniffiLib.uniffi_glean_core_fn_method_countermetric_add,self._uniffi_clone_pointer(), _UniffiConverterInt32.lower(amount)) @@ -409,7 +408,7 @@

    Class variables

    _UniffiConverterTypeErrorType.check_lower(error) return _UniffiConverterInt32.lift( - _rust_call(_UniffiLib.uniffi_glean_core_fn_method_countermetric_test_get_num_recorded_errors,self._uniffi_clone_pointer(), + _uniffi_rust_call(_UniffiLib.uniffi_glean_core_fn_method_countermetric_test_get_num_recorded_errors,self._uniffi_clone_pointer(), _UniffiConverterTypeErrorType.lower(error)) ) @@ -423,7 +422,7 @@

    Class variables

    _UniffiConverterOptionalString.check_lower(ping_name) return _UniffiConverterOptionalInt32.lift( - _rust_call(_UniffiLib.uniffi_glean_core_fn_method_countermetric_test_get_value,self._uniffi_clone_pointer(), + _uniffi_rust_call(_UniffiLib.uniffi_glean_core_fn_method_countermetric_test_get_value,self._uniffi_clone_pointer(), _UniffiConverterOptionalString.lower(ping_name)) ) @@ -443,7 +442,7 @@

    Methods

    amount = 1 _UniffiConverterInt32.check_lower(amount) - _rust_call(_UniffiLib.uniffi_glean_core_fn_method_countermetric_add,self._uniffi_clone_pointer(), + _uniffi_rust_call(_UniffiLib.uniffi_glean_core_fn_method_countermetric_add,self._uniffi_clone_pointer(), _UniffiConverterInt32.lower(amount)) @@ -460,7 +459,7 @@

    Methods

    _UniffiConverterTypeErrorType.check_lower(error) return _UniffiConverterInt32.lift( - _rust_call(_UniffiLib.uniffi_glean_core_fn_method_countermetric_test_get_num_recorded_errors,self._uniffi_clone_pointer(), + _uniffi_rust_call(_UniffiLib.uniffi_glean_core_fn_method_countermetric_test_get_num_recorded_errors,self._uniffi_clone_pointer(), _UniffiConverterTypeErrorType.lower(error)) ) @@ -480,7 +479,7 @@

    Methods

    _UniffiConverterOptionalString.check_lower(ping_name) return _UniffiConverterOptionalInt32.lift( - _rust_call(_UniffiLib.uniffi_glean_core_fn_method_countermetric_test_get_value,self._uniffi_clone_pointer(), + _uniffi_rust_call(_UniffiLib.uniffi_glean_core_fn_method_countermetric_test_get_value,self._uniffi_clone_pointer(), _UniffiConverterOptionalString.lower(ping_name)) ) @@ -1062,7 +1061,6 @@

    Ancestors

    class COMMON: cmd: "CommonMetricData" - @typing.no_type_check def __init__(self,cmd: "CommonMetricData"): self.cmd = cmd @@ -1083,7 +1081,6 @@

    Ancestors

    bucket_count: "int" histogram_type: "HistogramType" - @typing.no_type_check def __init__(self,cmd: "CommonMetricData", range_min: "int", range_max: "int", bucket_count: "int", histogram_type: "HistogramType"): self.cmd = cmd self.range_min = range_min @@ -1113,7 +1110,6 @@

    Ancestors

    cmd: "CommonMetricData" unit: "MemoryUnit" - @typing.no_type_check def __init__(self,cmd: "CommonMetricData", unit: "MemoryUnit"): self.cmd = cmd self.unit = unit @@ -1134,7 +1130,6 @@

    Ancestors

    cmd: "CommonMetricData" unit: "TimeUnit" - @typing.no_type_check def __init__(self,cmd: "CommonMetricData", unit: "TimeUnit"): self.cmd = cmd self.unit = unit @@ -1327,7 +1322,7 @@

    Class variables

    _UniffiConverterTypeMemoryUnit.check_lower(memory_unit) - self._pointer = _rust_call(_UniffiLib.uniffi_glean_core_fn_constructor_memorydistributionmetric_new, + self._pointer = _uniffi_rust_call(_UniffiLib.uniffi_glean_core_fn_constructor_memorydistributionmetric_new, _UniffiConverterTypeCommonMetricData.lower(meta), _UniffiConverterTypeMemoryUnit.lower(memory_unit)) @@ -1335,10 +1330,10 @@

    Class variables

    # In case of partial initialization of instances. pointer = getattr(self, "_pointer", None) if pointer is not None: - _rust_call(_UniffiLib.uniffi_glean_core_fn_free_memorydistributionmetric, pointer) + _uniffi_rust_call(_UniffiLib.uniffi_glean_core_fn_free_memorydistributionmetric, pointer) def _uniffi_clone_pointer(self): - return _rust_call(_UniffiLib.uniffi_glean_core_fn_clone_memorydistributionmetric, self._pointer) + return _uniffi_rust_call(_UniffiLib.uniffi_glean_core_fn_clone_memorydistributionmetric, self._pointer) # Used by alternative constructors or any methods which return this type. @classmethod @@ -1353,7 +1348,7 @@

    Class variables

    def accumulate(self, sample: "int") -> None: _UniffiConverterInt64.check_lower(sample) - _rust_call(_UniffiLib.uniffi_glean_core_fn_method_memorydistributionmetric_accumulate,self._uniffi_clone_pointer(), + _uniffi_rust_call(_UniffiLib.uniffi_glean_core_fn_method_memorydistributionmetric_accumulate,self._uniffi_clone_pointer(), _UniffiConverterInt64.lower(sample)) @@ -1364,7 +1359,7 @@

    Class variables

    def accumulate_samples(self, samples: "typing.List[int]") -> None: _UniffiConverterSequenceInt64.check_lower(samples) - _rust_call(_UniffiLib.uniffi_glean_core_fn_method_memorydistributionmetric_accumulate_samples,self._uniffi_clone_pointer(), + _uniffi_rust_call(_UniffiLib.uniffi_glean_core_fn_method_memorydistributionmetric_accumulate_samples,self._uniffi_clone_pointer(), _UniffiConverterSequenceInt64.lower(samples)) @@ -1376,7 +1371,7 @@

    Class variables

    _UniffiConverterTypeErrorType.check_lower(error) return _UniffiConverterInt32.lift( - _rust_call(_UniffiLib.uniffi_glean_core_fn_method_memorydistributionmetric_test_get_num_recorded_errors,self._uniffi_clone_pointer(), + _uniffi_rust_call(_UniffiLib.uniffi_glean_core_fn_method_memorydistributionmetric_test_get_num_recorded_errors,self._uniffi_clone_pointer(), _UniffiConverterTypeErrorType.lower(error)) ) @@ -1390,7 +1385,7 @@

    Class variables

    _UniffiConverterOptionalString.check_lower(ping_name) return _UniffiConverterOptionalTypeDistributionData.lift( - _rust_call(_UniffiLib.uniffi_glean_core_fn_method_memorydistributionmetric_test_get_value,self._uniffi_clone_pointer(), + _uniffi_rust_call(_UniffiLib.uniffi_glean_core_fn_method_memorydistributionmetric_test_get_value,self._uniffi_clone_pointer(), _UniffiConverterOptionalString.lower(ping_name)) ) @@ -1408,7 +1403,7 @@

    Methods

    def accumulate(self, sample: "int") -> None:
         _UniffiConverterInt64.check_lower(sample)
         
    -    _rust_call(_UniffiLib.uniffi_glean_core_fn_method_memorydistributionmetric_accumulate,self._uniffi_clone_pointer(),
    +    _uniffi_rust_call(_UniffiLib.uniffi_glean_core_fn_method_memorydistributionmetric_accumulate,self._uniffi_clone_pointer(),
         _UniffiConverterInt64.lower(sample))
    @@ -1424,7 +1419,7 @@

    Methods

    def accumulate_samples(self, samples: "typing.List[int]") -> None:
         _UniffiConverterSequenceInt64.check_lower(samples)
         
    -    _rust_call(_UniffiLib.uniffi_glean_core_fn_method_memorydistributionmetric_accumulate_samples,self._uniffi_clone_pointer(),
    +    _uniffi_rust_call(_UniffiLib.uniffi_glean_core_fn_method_memorydistributionmetric_accumulate_samples,self._uniffi_clone_pointer(),
         _UniffiConverterSequenceInt64.lower(samples))
    @@ -1441,7 +1436,7 @@

    Methods

    _UniffiConverterTypeErrorType.check_lower(error) return _UniffiConverterInt32.lift( - _rust_call(_UniffiLib.uniffi_glean_core_fn_method_memorydistributionmetric_test_get_num_recorded_errors,self._uniffi_clone_pointer(), + _uniffi_rust_call(_UniffiLib.uniffi_glean_core_fn_method_memorydistributionmetric_test_get_num_recorded_errors,self._uniffi_clone_pointer(), _UniffiConverterTypeErrorType.lower(error)) ) @@ -1461,7 +1456,7 @@

    Methods

    _UniffiConverterOptionalString.check_lower(ping_name) return _UniffiConverterOptionalTypeDistributionData.lift( - _rust_call(_UniffiLib.uniffi_glean_core_fn_method_memorydistributionmetric_test_get_value,self._uniffi_clone_pointer(), + _uniffi_rust_call(_UniffiLib.uniffi_glean_core_fn_method_memorydistributionmetric_test_get_value,self._uniffi_clone_pointer(), _UniffiConverterOptionalString.lower(ping_name)) ) @@ -1906,17 +1901,17 @@

    Args

    def __init__(self, meta: "CommonMetricData"): _UniffiConverterTypeCommonMetricData.check_lower(meta) - self._pointer = _rust_call(_UniffiLib.uniffi_glean_core_fn_constructor_quantitymetric_new, + self._pointer = _uniffi_rust_call(_UniffiLib.uniffi_glean_core_fn_constructor_quantitymetric_new, _UniffiConverterTypeCommonMetricData.lower(meta)) def __del__(self): # In case of partial initialization of instances. pointer = getattr(self, "_pointer", None) if pointer is not None: - _rust_call(_UniffiLib.uniffi_glean_core_fn_free_quantitymetric, pointer) + _uniffi_rust_call(_UniffiLib.uniffi_glean_core_fn_free_quantitymetric, pointer) def _uniffi_clone_pointer(self): - return _rust_call(_UniffiLib.uniffi_glean_core_fn_clone_quantitymetric, self._pointer) + return _uniffi_rust_call(_UniffiLib.uniffi_glean_core_fn_clone_quantitymetric, self._pointer) # Used by alternative constructors or any methods which return this type. @classmethod @@ -1931,7 +1926,7 @@

    Args

    def set(self, value: "int") -> None: _UniffiConverterInt64.check_lower(value) - _rust_call(_UniffiLib.uniffi_glean_core_fn_method_quantitymetric_set,self._uniffi_clone_pointer(), + _uniffi_rust_call(_UniffiLib.uniffi_glean_core_fn_method_quantitymetric_set,self._uniffi_clone_pointer(), _UniffiConverterInt64.lower(value)) @@ -1943,7 +1938,7 @@

    Args

    _UniffiConverterTypeErrorType.check_lower(error) return _UniffiConverterInt32.lift( - _rust_call(_UniffiLib.uniffi_glean_core_fn_method_quantitymetric_test_get_num_recorded_errors,self._uniffi_clone_pointer(), + _uniffi_rust_call(_UniffiLib.uniffi_glean_core_fn_method_quantitymetric_test_get_num_recorded_errors,self._uniffi_clone_pointer(), _UniffiConverterTypeErrorType.lower(error)) ) @@ -1957,7 +1952,7 @@

    Args

    _UniffiConverterOptionalString.check_lower(ping_name) return _UniffiConverterOptionalInt64.lift( - _rust_call(_UniffiLib.uniffi_glean_core_fn_method_quantitymetric_test_get_value,self._uniffi_clone_pointer(), + _uniffi_rust_call(_UniffiLib.uniffi_glean_core_fn_method_quantitymetric_test_get_value,self._uniffi_clone_pointer(), _UniffiConverterOptionalString.lower(ping_name)) ) @@ -1975,7 +1970,7 @@

    Methods

    def set(self, value: "int") -> None:
         _UniffiConverterInt64.check_lower(value)
         
    -    _rust_call(_UniffiLib.uniffi_glean_core_fn_method_quantitymetric_set,self._uniffi_clone_pointer(),
    +    _uniffi_rust_call(_UniffiLib.uniffi_glean_core_fn_method_quantitymetric_set,self._uniffi_clone_pointer(),
         _UniffiConverterInt64.lower(value))
    @@ -1992,7 +1987,7 @@

    Methods

    _UniffiConverterTypeErrorType.check_lower(error) return _UniffiConverterInt32.lift( - _rust_call(_UniffiLib.uniffi_glean_core_fn_method_quantitymetric_test_get_num_recorded_errors,self._uniffi_clone_pointer(), + _uniffi_rust_call(_UniffiLib.uniffi_glean_core_fn_method_quantitymetric_test_get_num_recorded_errors,self._uniffi_clone_pointer(), _UniffiConverterTypeErrorType.lower(error)) ) @@ -2012,7 +2007,7 @@

    Methods

    _UniffiConverterOptionalString.check_lower(ping_name) return _UniffiConverterOptionalInt64.lift( - _rust_call(_UniffiLib.uniffi_glean_core_fn_method_quantitymetric_test_get_value,self._uniffi_clone_pointer(), + _uniffi_rust_call(_UniffiLib.uniffi_glean_core_fn_method_quantitymetric_test_get_value,self._uniffi_clone_pointer(), _UniffiConverterOptionalString.lower(ping_name)) ) @@ -2034,7 +2029,6 @@

    Methods

    category: "str" name: "str" extra: "typing.Optional[dict[str, str]]" - @typing.no_type_check def __init__(self, *, timestamp: "int", category: "str", name: "str", extra: "typing.Optional[dict[str, str]]"): self.timestamp = timestamp self.category = category @@ -2088,7 +2082,6 @@

    Class variables

    class RecordedExperiment:
         branch: "str"
         extra: "typing.Optional[dict[str, str]]"
    -    @typing.no_type_check
         def __init__(self, *, branch: "str", extra: "typing.Optional[dict[str, str]]"):
             self.branch = branch
             self.extra = extra
    @@ -2130,17 +2123,17 @@ 

    Class variables

    def __init__(self, meta: "CommonMetricData"): _UniffiConverterTypeCommonMetricData.check_lower(meta) - self._pointer = _rust_call(_UniffiLib.uniffi_glean_core_fn_constructor_stringlistmetric_new, + self._pointer = _uniffi_rust_call(_UniffiLib.uniffi_glean_core_fn_constructor_stringlistmetric_new, _UniffiConverterTypeCommonMetricData.lower(meta)) def __del__(self): # In case of partial initialization of instances. pointer = getattr(self, "_pointer", None) if pointer is not None: - _rust_call(_UniffiLib.uniffi_glean_core_fn_free_stringlistmetric, pointer) + _uniffi_rust_call(_UniffiLib.uniffi_glean_core_fn_free_stringlistmetric, pointer) def _uniffi_clone_pointer(self): - return _rust_call(_UniffiLib.uniffi_glean_core_fn_clone_stringlistmetric, self._pointer) + return _uniffi_rust_call(_UniffiLib.uniffi_glean_core_fn_clone_stringlistmetric, self._pointer) # Used by alternative constructors or any methods which return this type. @classmethod @@ -2155,7 +2148,7 @@

    Class variables

    def add(self, value: "str") -> None: _UniffiConverterString.check_lower(value) - _rust_call(_UniffiLib.uniffi_glean_core_fn_method_stringlistmetric_add,self._uniffi_clone_pointer(), + _uniffi_rust_call(_UniffiLib.uniffi_glean_core_fn_method_stringlistmetric_add,self._uniffi_clone_pointer(), _UniffiConverterString.lower(value)) @@ -2166,7 +2159,7 @@

    Class variables

    def set(self, value: "typing.List[str]") -> None: _UniffiConverterSequenceString.check_lower(value) - _rust_call(_UniffiLib.uniffi_glean_core_fn_method_stringlistmetric_set,self._uniffi_clone_pointer(), + _uniffi_rust_call(_UniffiLib.uniffi_glean_core_fn_method_stringlistmetric_set,self._uniffi_clone_pointer(), _UniffiConverterSequenceString.lower(value)) @@ -2178,7 +2171,7 @@

    Class variables

    _UniffiConverterTypeErrorType.check_lower(error) return _UniffiConverterInt32.lift( - _rust_call(_UniffiLib.uniffi_glean_core_fn_method_stringlistmetric_test_get_num_recorded_errors,self._uniffi_clone_pointer(), + _uniffi_rust_call(_UniffiLib.uniffi_glean_core_fn_method_stringlistmetric_test_get_num_recorded_errors,self._uniffi_clone_pointer(), _UniffiConverterTypeErrorType.lower(error)) ) @@ -2192,7 +2185,7 @@

    Class variables

    _UniffiConverterOptionalString.check_lower(ping_name) return _UniffiConverterOptionalSequenceString.lift( - _rust_call(_UniffiLib.uniffi_glean_core_fn_method_stringlistmetric_test_get_value,self._uniffi_clone_pointer(), + _uniffi_rust_call(_UniffiLib.uniffi_glean_core_fn_method_stringlistmetric_test_get_value,self._uniffi_clone_pointer(), _UniffiConverterOptionalString.lower(ping_name)) )
    @@ -2210,7 +2203,7 @@

    Methods

    def add(self, value: "str") -> None:
         _UniffiConverterString.check_lower(value)
         
    -    _rust_call(_UniffiLib.uniffi_glean_core_fn_method_stringlistmetric_add,self._uniffi_clone_pointer(),
    +    _uniffi_rust_call(_UniffiLib.uniffi_glean_core_fn_method_stringlistmetric_add,self._uniffi_clone_pointer(),
         _UniffiConverterString.lower(value))
    @@ -2226,7 +2219,7 @@

    Methods

    def set(self, value: "typing.List[str]") -> None:
         _UniffiConverterSequenceString.check_lower(value)
         
    -    _rust_call(_UniffiLib.uniffi_glean_core_fn_method_stringlistmetric_set,self._uniffi_clone_pointer(),
    +    _uniffi_rust_call(_UniffiLib.uniffi_glean_core_fn_method_stringlistmetric_set,self._uniffi_clone_pointer(),
         _UniffiConverterSequenceString.lower(value))
    @@ -2243,7 +2236,7 @@

    Methods

    _UniffiConverterTypeErrorType.check_lower(error) return _UniffiConverterInt32.lift( - _rust_call(_UniffiLib.uniffi_glean_core_fn_method_stringlistmetric_test_get_num_recorded_errors,self._uniffi_clone_pointer(), + _uniffi_rust_call(_UniffiLib.uniffi_glean_core_fn_method_stringlistmetric_test_get_num_recorded_errors,self._uniffi_clone_pointer(), _UniffiConverterTypeErrorType.lower(error)) ) @@ -2263,7 +2256,7 @@

    Methods

    _UniffiConverterOptionalString.check_lower(ping_name) return _UniffiConverterOptionalSequenceString.lift( - _rust_call(_UniffiLib.uniffi_glean_core_fn_method_stringlistmetric_test_get_value,self._uniffi_clone_pointer(), + _uniffi_rust_call(_UniffiLib.uniffi_glean_core_fn_method_stringlistmetric_test_get_value,self._uniffi_clone_pointer(), _UniffiConverterOptionalString.lower(ping_name)) ) @@ -2453,7 +2446,6 @@

    Class variables

    class TimerId:
         id: "int"
    -    @typing.no_type_check
         def __init__(self, *, id: "int"):
             self.id = id
     
    diff --git a/python/glean/metrics/object.html b/python/glean/metrics/object.html
    index 48df07b48c..ab6133f937 100644
    --- a/python/glean/metrics/object.html
    +++ b/python/glean/metrics/object.html
    @@ -163,17 +163,17 @@ 

    Classes

    def __init__(self, meta: "CommonMetricData"): _UniffiConverterTypeCommonMetricData.check_lower(meta) - self._pointer = _rust_call(_UniffiLib.uniffi_glean_core_fn_constructor_objectmetric_new, + self._pointer = _uniffi_rust_call(_UniffiLib.uniffi_glean_core_fn_constructor_objectmetric_new, _UniffiConverterTypeCommonMetricData.lower(meta)) def __del__(self): # In case of partial initialization of instances. pointer = getattr(self, "_pointer", None) if pointer is not None: - _rust_call(_UniffiLib.uniffi_glean_core_fn_free_objectmetric, pointer) + _uniffi_rust_call(_UniffiLib.uniffi_glean_core_fn_free_objectmetric, pointer) def _uniffi_clone_pointer(self): - return _rust_call(_UniffiLib.uniffi_glean_core_fn_clone_objectmetric, self._pointer) + return _uniffi_rust_call(_UniffiLib.uniffi_glean_core_fn_clone_objectmetric, self._pointer) # Used by alternative constructors or any methods which return this type. @classmethod @@ -186,7 +186,7 @@

    Classes

    def record_schema_error(self, ) -> None: - _rust_call(_UniffiLib.uniffi_glean_core_fn_method_objectmetric_record_schema_error,self._uniffi_clone_pointer(),) + _uniffi_rust_call(_UniffiLib.uniffi_glean_core_fn_method_objectmetric_record_schema_error,self._uniffi_clone_pointer(),) @@ -196,7 +196,7 @@

    Classes

    def set_string(self, object: "str") -> None: _UniffiConverterString.check_lower(object) - _rust_call(_UniffiLib.uniffi_glean_core_fn_method_objectmetric_set_string,self._uniffi_clone_pointer(), + _uniffi_rust_call(_UniffiLib.uniffi_glean_core_fn_method_objectmetric_set_string,self._uniffi_clone_pointer(), _UniffiConverterString.lower(object)) @@ -208,7 +208,7 @@

    Classes

    _UniffiConverterTypeErrorType.check_lower(error) return _UniffiConverterInt32.lift( - _rust_call(_UniffiLib.uniffi_glean_core_fn_method_objectmetric_test_get_num_recorded_errors,self._uniffi_clone_pointer(), + _uniffi_rust_call(_UniffiLib.uniffi_glean_core_fn_method_objectmetric_test_get_num_recorded_errors,self._uniffi_clone_pointer(), _UniffiConverterTypeErrorType.lower(error)) ) @@ -222,7 +222,7 @@

    Classes

    _UniffiConverterOptionalString.check_lower(ping_name) return _UniffiConverterOptionalTypeJsonValue.lift( - _rust_call(_UniffiLib.uniffi_glean_core_fn_method_objectmetric_test_get_value,self._uniffi_clone_pointer(), + _uniffi_rust_call(_UniffiLib.uniffi_glean_core_fn_method_objectmetric_test_get_value,self._uniffi_clone_pointer(), _UniffiConverterOptionalString.lower(ping_name)) )
    @@ -238,7 +238,7 @@

    Methods

    Expand source code
    def record_schema_error(self, ) -> None:
    -    _rust_call(_UniffiLib.uniffi_glean_core_fn_method_objectmetric_record_schema_error,self._uniffi_clone_pointer(),)
    + _uniffi_rust_call(_UniffiLib.uniffi_glean_core_fn_method_objectmetric_record_schema_error,self._uniffi_clone_pointer(),)
    @@ -253,7 +253,7 @@

    Methods

    def set_string(self, object: "str") -> None:
         _UniffiConverterString.check_lower(object)
         
    -    _rust_call(_UniffiLib.uniffi_glean_core_fn_method_objectmetric_set_string,self._uniffi_clone_pointer(),
    +    _uniffi_rust_call(_UniffiLib.uniffi_glean_core_fn_method_objectmetric_set_string,self._uniffi_clone_pointer(),
         _UniffiConverterString.lower(object))
    @@ -270,7 +270,7 @@

    Methods

    _UniffiConverterTypeErrorType.check_lower(error) return _UniffiConverterInt32.lift( - _rust_call(_UniffiLib.uniffi_glean_core_fn_method_objectmetric_test_get_num_recorded_errors,self._uniffi_clone_pointer(), + _uniffi_rust_call(_UniffiLib.uniffi_glean_core_fn_method_objectmetric_test_get_num_recorded_errors,self._uniffi_clone_pointer(), _UniffiConverterTypeErrorType.lower(error)) )
    @@ -290,7 +290,7 @@

    Methods

    _UniffiConverterOptionalString.check_lower(ping_name) return _UniffiConverterOptionalTypeJsonValue.lift( - _rust_call(_UniffiLib.uniffi_glean_core_fn_method_objectmetric_test_get_value,self._uniffi_clone_pointer(), + _uniffi_rust_call(_UniffiLib.uniffi_glean_core_fn_method_objectmetric_test_get_value,self._uniffi_clone_pointer(), _UniffiConverterOptionalString.lower(ping_name)) ) diff --git a/python/glean/net/ping_uploader.html b/python/glean/net/ping_uploader.html index 11aaf0b005..a9f7284158 100644 --- a/python/glean/net/ping_uploader.html +++ b/python/glean/net/ping_uploader.html @@ -208,7 +208,6 @@

    Returns

    class RECOVERABLE_FAILURE: unused: "int" - @typing.no_type_check def __init__(self,unused: "int"): self.unused = unused @@ -225,7 +224,6 @@

    Returns

    class UNRECOVERABLE_FAILURE: unused: "int" - @typing.no_type_check def __init__(self,unused: "int"): self.unused = unused @@ -242,7 +240,6 @@

    Returns

    class HTTP_STATUS: code: "int" - @typing.no_type_check def __init__(self,code: "int"): self.code = code @@ -259,7 +256,6 @@

    Returns

    class DONE: unused: "int" - @typing.no_type_check def __init__(self,unused: "int"): self.unused = unused diff --git a/swift/Classes.html b/swift/Classes.html index e4fd0becd7..8c004d872d 100644 --- a/swift/Classes.html +++ b/swift/Classes.html @@ -1922,7 +1922,7 @@

    Declaration

    diff --git a/swift/Classes/BooleanMetric.html b/swift/Classes/BooleanMetric.html index 115feb7c14..17f6ce71b6 100644 --- a/swift/Classes/BooleanMetric.html +++ b/swift/Classes/BooleanMetric.html @@ -1206,7 +1206,7 @@

    Declaration

    diff --git a/swift/Classes/BooleanMetric/NoPointer.html b/swift/Classes/BooleanMetric/NoPointer.html index f39325de73..bf28b56bbc 100644 --- a/swift/Classes/BooleanMetric/NoPointer.html +++ b/swift/Classes/BooleanMetric/NoPointer.html @@ -993,7 +993,7 @@

    Declaration

    diff --git a/swift/Classes/CounterMetric.html b/swift/Classes/CounterMetric.html index fb4f09342f..df1af7a18e 100644 --- a/swift/Classes/CounterMetric.html +++ b/swift/Classes/CounterMetric.html @@ -1206,7 +1206,7 @@

    Declaration

    diff --git a/swift/Classes/CounterMetric/NoPointer.html b/swift/Classes/CounterMetric/NoPointer.html index 62263c9b91..a32534506b 100644 --- a/swift/Classes/CounterMetric/NoPointer.html +++ b/swift/Classes/CounterMetric/NoPointer.html @@ -993,7 +993,7 @@

    Declaration

    diff --git a/swift/Classes/CustomDistributionMetric.html b/swift/Classes/CustomDistributionMetric.html index c8c8f28bc7..f711da248a 100644 --- a/swift/Classes/CustomDistributionMetric.html +++ b/swift/Classes/CustomDistributionMetric.html @@ -1233,7 +1233,7 @@

    Declaration

    diff --git a/swift/Classes/CustomDistributionMetric/NoPointer.html b/swift/Classes/CustomDistributionMetric/NoPointer.html index d09d2a32a2..22e5449174 100644 --- a/swift/Classes/CustomDistributionMetric/NoPointer.html +++ b/swift/Classes/CustomDistributionMetric/NoPointer.html @@ -993,7 +993,7 @@

    Declaration

    diff --git a/swift/Classes/DatetimeMetric.html b/swift/Classes/DatetimeMetric.html index 6fbe203a35..9e8908779d 100644 --- a/swift/Classes/DatetimeMetric.html +++ b/swift/Classes/DatetimeMetric.html @@ -1233,7 +1233,7 @@

    Declaration

    diff --git a/swift/Classes/DatetimeMetric/NoPointer.html b/swift/Classes/DatetimeMetric/NoPointer.html index 297996a31c..dbcc9011ab 100644 --- a/swift/Classes/DatetimeMetric/NoPointer.html +++ b/swift/Classes/DatetimeMetric/NoPointer.html @@ -993,7 +993,7 @@

    Declaration

    diff --git a/swift/Classes/DatetimeMetricType.html b/swift/Classes/DatetimeMetricType.html index c05b12bc23..20d4a846e9 100644 --- a/swift/Classes/DatetimeMetricType.html +++ b/swift/Classes/DatetimeMetricType.html @@ -1198,7 +1198,7 @@

    Return Value

    diff --git a/swift/Classes/DenominatorMetric.html b/swift/Classes/DenominatorMetric.html index c2d4e5a35a..901a326e9a 100644 --- a/swift/Classes/DenominatorMetric.html +++ b/swift/Classes/DenominatorMetric.html @@ -1206,7 +1206,7 @@

    Declaration

    diff --git a/swift/Classes/DenominatorMetric/NoPointer.html b/swift/Classes/DenominatorMetric/NoPointer.html index 7708aefc82..cdaa937b2d 100644 --- a/swift/Classes/DenominatorMetric/NoPointer.html +++ b/swift/Classes/DenominatorMetric/NoPointer.html @@ -993,7 +993,7 @@

    Declaration

    diff --git a/swift/Classes/EventMetric.html b/swift/Classes/EventMetric.html index 6c7b286620..f0b83eff26 100644 --- a/swift/Classes/EventMetric.html +++ b/swift/Classes/EventMetric.html @@ -1206,7 +1206,7 @@

    Declaration

    diff --git a/swift/Classes/EventMetric/NoPointer.html b/swift/Classes/EventMetric/NoPointer.html index c8cc01c7c4..ed4a2e4f1c 100644 --- a/swift/Classes/EventMetric/NoPointer.html +++ b/swift/Classes/EventMetric/NoPointer.html @@ -993,7 +993,7 @@

    Declaration

    diff --git a/swift/Classes/EventMetricType.html b/swift/Classes/EventMetricType.html index 32bc5de9bf..4f7faa5a07 100644 --- a/swift/Classes/EventMetricType.html +++ b/swift/Classes/EventMetricType.html @@ -1126,7 +1126,7 @@

    Return Value

    diff --git a/swift/Classes/Glean.html b/swift/Classes/Glean.html index 0d00511cc5..eab8d67eb7 100644 --- a/swift/Classes/Glean.html +++ b/swift/Classes/Glean.html @@ -1984,7 +1984,7 @@

    Parameters

    diff --git a/swift/Classes/HttpPingUploader.html b/swift/Classes/HttpPingUploader.html index 043542c1b3..9accd5d13c 100644 --- a/swift/Classes/HttpPingUploader.html +++ b/swift/Classes/HttpPingUploader.html @@ -1025,7 +1025,7 @@

    Parameters

    diff --git a/swift/Classes/LabeledBoolean.html b/swift/Classes/LabeledBoolean.html index 4a4d0b44be..2a48a0f0bd 100644 --- a/swift/Classes/LabeledBoolean.html +++ b/swift/Classes/LabeledBoolean.html @@ -1179,7 +1179,7 @@

    Declaration

    diff --git a/swift/Classes/LabeledBoolean/NoPointer.html b/swift/Classes/LabeledBoolean/NoPointer.html index f22f167b1a..9b686bc8b1 100644 --- a/swift/Classes/LabeledBoolean/NoPointer.html +++ b/swift/Classes/LabeledBoolean/NoPointer.html @@ -993,7 +993,7 @@

    Declaration

    diff --git a/swift/Classes/LabeledCounter.html b/swift/Classes/LabeledCounter.html index 8cab44caa0..9ec841169e 100644 --- a/swift/Classes/LabeledCounter.html +++ b/swift/Classes/LabeledCounter.html @@ -1179,7 +1179,7 @@

    Declaration

    diff --git a/swift/Classes/LabeledCounter/NoPointer.html b/swift/Classes/LabeledCounter/NoPointer.html index c58d3ac875..ecb817799e 100644 --- a/swift/Classes/LabeledCounter/NoPointer.html +++ b/swift/Classes/LabeledCounter/NoPointer.html @@ -993,7 +993,7 @@

    Declaration

    diff --git a/swift/Classes/LabeledMetricType.html b/swift/Classes/LabeledMetricType.html index 12dce3ec73..fad5badfb5 100644 --- a/swift/Classes/LabeledMetricType.html +++ b/swift/Classes/LabeledMetricType.html @@ -1127,7 +1127,7 @@

    Return Value

    diff --git a/swift/Classes/LabeledString.html b/swift/Classes/LabeledString.html index 55daa6cce0..2f8fc5345a 100644 --- a/swift/Classes/LabeledString.html +++ b/swift/Classes/LabeledString.html @@ -1179,7 +1179,7 @@

    Declaration

    diff --git a/swift/Classes/LabeledString/NoPointer.html b/swift/Classes/LabeledString/NoPointer.html index aa27e8ec57..f2610e3f10 100644 --- a/swift/Classes/LabeledString/NoPointer.html +++ b/swift/Classes/LabeledString/NoPointer.html @@ -993,7 +993,7 @@

    Declaration

    diff --git a/swift/Classes/MemoryDistributionMetric.html b/swift/Classes/MemoryDistributionMetric.html index ddfcbfb242..0d6fe0cb3a 100644 --- a/swift/Classes/MemoryDistributionMetric.html +++ b/swift/Classes/MemoryDistributionMetric.html @@ -1233,7 +1233,7 @@

    Declaration

    diff --git a/swift/Classes/MemoryDistributionMetric/NoPointer.html b/swift/Classes/MemoryDistributionMetric/NoPointer.html index 65d1305b87..665ce2ca7d 100644 --- a/swift/Classes/MemoryDistributionMetric/NoPointer.html +++ b/swift/Classes/MemoryDistributionMetric/NoPointer.html @@ -993,7 +993,7 @@

    Declaration

    diff --git a/swift/Classes/NoExtras.html b/swift/Classes/NoExtras.html index c4c567edfd..71721bb295 100644 --- a/swift/Classes/NoExtras.html +++ b/swift/Classes/NoExtras.html @@ -993,7 +993,7 @@

    Declaration

    diff --git a/swift/Classes/NumeratorMetric.html b/swift/Classes/NumeratorMetric.html index a980143bda..cd63db8526 100644 --- a/swift/Classes/NumeratorMetric.html +++ b/swift/Classes/NumeratorMetric.html @@ -1206,7 +1206,7 @@

    Declaration

    diff --git a/swift/Classes/NumeratorMetric/NoPointer.html b/swift/Classes/NumeratorMetric/NoPointer.html index 437d28162f..0d517585fe 100644 --- a/swift/Classes/NumeratorMetric/NoPointer.html +++ b/swift/Classes/NumeratorMetric/NoPointer.html @@ -993,7 +993,7 @@

    Declaration

    diff --git a/swift/Classes/ObjectMetric.html b/swift/Classes/ObjectMetric.html index f437d50f00..9bab1284ef 100644 --- a/swift/Classes/ObjectMetric.html +++ b/swift/Classes/ObjectMetric.html @@ -1233,7 +1233,7 @@

    Declaration

    diff --git a/swift/Classes/ObjectMetric/NoPointer.html b/swift/Classes/ObjectMetric/NoPointer.html index a845d36566..81b8afc23b 100644 --- a/swift/Classes/ObjectMetric/NoPointer.html +++ b/swift/Classes/ObjectMetric/NoPointer.html @@ -993,7 +993,7 @@

    Declaration

    diff --git a/swift/Classes/ObjectMetricType.html b/swift/Classes/ObjectMetricType.html index 59de55db39..81175d91f1 100644 --- a/swift/Classes/ObjectMetricType.html +++ b/swift/Classes/ObjectMetricType.html @@ -1146,7 +1146,7 @@

    Return Value

    diff --git a/swift/Classes/Ping.html b/swift/Classes/Ping.html index 626db82c3c..1b38fcf098 100644 --- a/swift/Classes/Ping.html +++ b/swift/Classes/Ping.html @@ -1091,7 +1091,7 @@

    Parameters

    diff --git a/swift/Classes/PingType.html b/swift/Classes/PingType.html index 5c5586013d..8579caf2af 100644 --- a/swift/Classes/PingType.html +++ b/swift/Classes/PingType.html @@ -1152,7 +1152,7 @@

    Declaration

    diff --git a/swift/Classes/PingType/NoPointer.html b/swift/Classes/PingType/NoPointer.html index 821089773e..d357244cc0 100644 --- a/swift/Classes/PingType/NoPointer.html +++ b/swift/Classes/PingType/NoPointer.html @@ -993,7 +993,7 @@

    Declaration

    diff --git a/swift/Classes/QuantityMetric.html b/swift/Classes/QuantityMetric.html index 6447d2cdbf..7d8688458b 100644 --- a/swift/Classes/QuantityMetric.html +++ b/swift/Classes/QuantityMetric.html @@ -1206,7 +1206,7 @@

    Declaration

    diff --git a/swift/Classes/QuantityMetric/NoPointer.html b/swift/Classes/QuantityMetric/NoPointer.html index eb020f80c1..391179342b 100644 --- a/swift/Classes/QuantityMetric/NoPointer.html +++ b/swift/Classes/QuantityMetric/NoPointer.html @@ -993,7 +993,7 @@

    Declaration

    diff --git a/swift/Classes/RateMetric.html b/swift/Classes/RateMetric.html index c1ea52ccf8..27018a44fd 100644 --- a/swift/Classes/RateMetric.html +++ b/swift/Classes/RateMetric.html @@ -1233,7 +1233,7 @@

    Declaration

    diff --git a/swift/Classes/RateMetric/NoPointer.html b/swift/Classes/RateMetric/NoPointer.html index 81711d0806..dc0c48169d 100644 --- a/swift/Classes/RateMetric/NoPointer.html +++ b/swift/Classes/RateMetric/NoPointer.html @@ -993,7 +993,7 @@

    Declaration

    diff --git a/swift/Classes/StringListMetric.html b/swift/Classes/StringListMetric.html index 9b8883898f..915adf25bf 100644 --- a/swift/Classes/StringListMetric.html +++ b/swift/Classes/StringListMetric.html @@ -1233,7 +1233,7 @@

    Declaration

    diff --git a/swift/Classes/StringListMetric/NoPointer.html b/swift/Classes/StringListMetric/NoPointer.html index 7058a63152..4cbf00b1e2 100644 --- a/swift/Classes/StringListMetric/NoPointer.html +++ b/swift/Classes/StringListMetric/NoPointer.html @@ -993,7 +993,7 @@

    Declaration

    diff --git a/swift/Classes/StringMetric.html b/swift/Classes/StringMetric.html index d9233a0467..7ba4adb917 100644 --- a/swift/Classes/StringMetric.html +++ b/swift/Classes/StringMetric.html @@ -1206,7 +1206,7 @@

    Declaration

    diff --git a/swift/Classes/StringMetric/NoPointer.html b/swift/Classes/StringMetric/NoPointer.html index ebe366ec47..5b0dfba421 100644 --- a/swift/Classes/StringMetric/NoPointer.html +++ b/swift/Classes/StringMetric/NoPointer.html @@ -993,7 +993,7 @@

    Declaration

    diff --git a/swift/Classes/TextMetric.html b/swift/Classes/TextMetric.html index 0f17e0f484..a48d067aab 100644 --- a/swift/Classes/TextMetric.html +++ b/swift/Classes/TextMetric.html @@ -1206,7 +1206,7 @@

    Declaration

    diff --git a/swift/Classes/TextMetric/NoPointer.html b/swift/Classes/TextMetric/NoPointer.html index 3408969810..419036ef48 100644 --- a/swift/Classes/TextMetric/NoPointer.html +++ b/swift/Classes/TextMetric/NoPointer.html @@ -993,7 +993,7 @@

    Declaration

    diff --git a/swift/Classes/TimespanMetric.html b/swift/Classes/TimespanMetric.html index 206072ea03..84f7a3a466 100644 --- a/swift/Classes/TimespanMetric.html +++ b/swift/Classes/TimespanMetric.html @@ -1287,7 +1287,7 @@

    Declaration

    diff --git a/swift/Classes/TimespanMetric/NoPointer.html b/swift/Classes/TimespanMetric/NoPointer.html index 3830200b8c..5cc7ab7540 100644 --- a/swift/Classes/TimespanMetric/NoPointer.html +++ b/swift/Classes/TimespanMetric/NoPointer.html @@ -993,7 +993,7 @@

    Declaration

    diff --git a/swift/Classes/TimingDistributionMetric.html b/swift/Classes/TimingDistributionMetric.html index 8ecc473816..331d651596 100644 --- a/swift/Classes/TimingDistributionMetric.html +++ b/swift/Classes/TimingDistributionMetric.html @@ -1314,7 +1314,7 @@

    Declaration

    diff --git a/swift/Classes/TimingDistributionMetric/NoPointer.html b/swift/Classes/TimingDistributionMetric/NoPointer.html index 87e6de13e8..e1b5fb2e35 100644 --- a/swift/Classes/TimingDistributionMetric/NoPointer.html +++ b/swift/Classes/TimingDistributionMetric/NoPointer.html @@ -993,7 +993,7 @@

    Declaration

    diff --git a/swift/Classes/UrlMetric.html b/swift/Classes/UrlMetric.html index 625c914f41..f1e562c217 100644 --- a/swift/Classes/UrlMetric.html +++ b/swift/Classes/UrlMetric.html @@ -1206,7 +1206,7 @@

    Declaration

    diff --git a/swift/Classes/UrlMetric/NoPointer.html b/swift/Classes/UrlMetric/NoPointer.html index d7f0ce0836..0a0c0026c7 100644 --- a/swift/Classes/UrlMetric/NoPointer.html +++ b/swift/Classes/UrlMetric/NoPointer.html @@ -993,7 +993,7 @@

    Declaration

    diff --git a/swift/Classes/UrlMetricType.html b/swift/Classes/UrlMetricType.html index 8cd90658af..b64d9d9770 100644 --- a/swift/Classes/UrlMetricType.html +++ b/swift/Classes/UrlMetricType.html @@ -1155,7 +1155,7 @@

    Return Value

    diff --git a/swift/Classes/UuidMetric.html b/swift/Classes/UuidMetric.html index 68248d1feb..3eaebe548d 100644 --- a/swift/Classes/UuidMetric.html +++ b/swift/Classes/UuidMetric.html @@ -1233,7 +1233,7 @@

    Declaration

    diff --git a/swift/Classes/UuidMetric/NoPointer.html b/swift/Classes/UuidMetric/NoPointer.html index 4d05a850e4..331ddb78a3 100644 --- a/swift/Classes/UuidMetric/NoPointer.html +++ b/swift/Classes/UuidMetric/NoPointer.html @@ -993,7 +993,7 @@

    Declaration

    diff --git a/swift/Classes/UuidMetricType.html b/swift/Classes/UuidMetricType.html index d9b9413f72..51dddc89c9 100644 --- a/swift/Classes/UuidMetricType.html +++ b/swift/Classes/UuidMetricType.html @@ -1127,7 +1127,7 @@

    Return Value

    diff --git a/swift/Enums.html b/swift/Enums.html index 461a6307a2..07e1eb9230 100644 --- a/swift/Enums.html +++ b/swift/Enums.html @@ -973,7 +973,7 @@

    Declaration

    Swift

    public enum CallbackError
    extension CallbackError: Equatable, Hashable
    -
    extension CallbackError: Error
    +
    extension CallbackError: Foundation.LocalizedError
    @@ -1356,7 +1356,7 @@

    Declaration

    diff --git a/swift/Enums/CallbackError.html b/swift/Enums/CallbackError.html index 84519220c1..f280d2982f 100644 --- a/swift/Enums/CallbackError.html +++ b/swift/Enums/CallbackError.html @@ -951,7 +951,7 @@

    CallbackError

    public enum CallbackError
    extension CallbackError: Equatable, Hashable
    -
    extension CallbackError: Error
    +
    extension CallbackError: Foundation.LocalizedError
    @@ -988,12 +988,38 @@

    Declaration

    +
  • +
    + + + + errorDescription + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var errorDescription: String? { get }
    + +
    +
    +
    +
    +
  • diff --git a/swift/Enums/ErrorType.html b/swift/Enums/ErrorType.html index f81f571f24..33964ea7a5 100644 --- a/swift/Enums/ErrorType.html +++ b/swift/Enums/ErrorType.html @@ -1073,7 +1073,7 @@

    Declaration

    diff --git a/swift/Enums/HistogramType.html b/swift/Enums/HistogramType.html index 3b4bc8c9fa..2db3cdbd9a 100644 --- a/swift/Enums/HistogramType.html +++ b/swift/Enums/HistogramType.html @@ -1019,7 +1019,7 @@

    Declaration

    diff --git a/swift/Enums/LabeledMetricData.html b/swift/Enums/LabeledMetricData.html index ead553c644..2fd6140f98 100644 --- a/swift/Enums/LabeledMetricData.html +++ b/swift/Enums/LabeledMetricData.html @@ -1077,7 +1077,7 @@

    Declaration

    diff --git a/swift/Enums/LevelFilter.html b/swift/Enums/LevelFilter.html index 2332ae569a..5472420bed 100644 --- a/swift/Enums/LevelFilter.html +++ b/swift/Enums/LevelFilter.html @@ -1127,7 +1127,7 @@

    Declaration

    diff --git a/swift/Enums/Lifetime.html b/swift/Enums/Lifetime.html index 1ef100cdd1..ece1cd8750 100644 --- a/swift/Enums/Lifetime.html +++ b/swift/Enums/Lifetime.html @@ -1046,7 +1046,7 @@

    Declaration

    diff --git a/swift/Enums/MemoryUnit.html b/swift/Enums/MemoryUnit.html index c4d586a10c..faebb0d16a 100644 --- a/swift/Enums/MemoryUnit.html +++ b/swift/Enums/MemoryUnit.html @@ -1073,7 +1073,7 @@

    Declaration

    diff --git a/swift/Enums/NoReasonCodes.html b/swift/Enums/NoReasonCodes.html index d83214016e..c791669c5d 100644 --- a/swift/Enums/NoReasonCodes.html +++ b/swift/Enums/NoReasonCodes.html @@ -993,7 +993,7 @@

    Declaration

    diff --git a/swift/Enums/PingUploadTask.html b/swift/Enums/PingUploadTask.html index 8beca27e1e..961ac344a1 100644 --- a/swift/Enums/PingUploadTask.html +++ b/swift/Enums/PingUploadTask.html @@ -1049,7 +1049,7 @@

    Declaration

    diff --git a/swift/Enums/TimeUnit.html b/swift/Enums/TimeUnit.html index 788c432219..4e3a4562dc 100644 --- a/swift/Enums/TimeUnit.html +++ b/swift/Enums/TimeUnit.html @@ -1154,7 +1154,7 @@

    Declaration

    diff --git a/swift/Enums/UploadResult.html b/swift/Enums/UploadResult.html index 0dab3cb298..89ac7f6990 100644 --- a/swift/Enums/UploadResult.html +++ b/swift/Enums/UploadResult.html @@ -1077,7 +1077,7 @@

    Declaration

    diff --git a/swift/Enums/UploadTaskAction.html b/swift/Enums/UploadTaskAction.html index 97d0cc3543..21ef8154ea 100644 --- a/swift/Enums/UploadTaskAction.html +++ b/swift/Enums/UploadTaskAction.html @@ -1019,7 +1019,7 @@

    Declaration

    diff --git a/swift/Extensions.html b/swift/Extensions.html index 341ee9e8e7..1a26b774d9 100644 --- a/swift/Extensions.html +++ b/swift/Extensions.html @@ -1066,7 +1066,7 @@

    Declaration

    diff --git a/swift/Extensions/Array.html b/swift/Extensions/Array.html index 0091cb3530..edfdbe5c16 100644 --- a/swift/Extensions/Array.html +++ b/swift/Extensions/Array.html @@ -999,7 +999,7 @@

    Declaration

    diff --git a/swift/Extensions/String.html b/swift/Extensions/String.html index 0a0019b918..0ac0ce77a1 100644 --- a/swift/Extensions/String.html +++ b/swift/Extensions/String.html @@ -993,7 +993,7 @@

    Declaration

    diff --git a/swift/Extensions/TimespanMetricType.html b/swift/Extensions/TimespanMetricType.html index 2f73db3109..c321bda548 100644 --- a/swift/Extensions/TimespanMetricType.html +++ b/swift/Extensions/TimespanMetricType.html @@ -1057,7 +1057,7 @@

    Parameters

    diff --git a/swift/Extensions/TimingDistributionMetricType.html b/swift/Extensions/TimingDistributionMetricType.html index 9ce9faddba..3eb7b907ae 100644 --- a/swift/Extensions/TimingDistributionMetricType.html +++ b/swift/Extensions/TimingDistributionMetricType.html @@ -1057,7 +1057,7 @@

    Parameters

    diff --git a/swift/Functions.html b/swift/Functions.html index 7425c48031..47b01c6288 100644 --- a/swift/Functions.html +++ b/swift/Functions.html @@ -4114,7 +4114,7 @@

    Declaration

    diff --git a/swift/Protocols.html b/swift/Protocols.html index dff245b450..53fbe794fd 100644 --- a/swift/Protocols.html +++ b/swift/Protocols.html @@ -1719,7 +1719,7 @@

    Declaration

    diff --git a/swift/Protocols/BooleanMetricProtocol.html b/swift/Protocols/BooleanMetricProtocol.html index 723190b98b..271fe81ead 100644 --- a/swift/Protocols/BooleanMetricProtocol.html +++ b/swift/Protocols/BooleanMetricProtocol.html @@ -1045,7 +1045,7 @@

    Declaration

    diff --git a/swift/Protocols/CounterMetricProtocol.html b/swift/Protocols/CounterMetricProtocol.html index 0948a052b4..0d52a7f727 100644 --- a/swift/Protocols/CounterMetricProtocol.html +++ b/swift/Protocols/CounterMetricProtocol.html @@ -1045,7 +1045,7 @@

    Declaration

    diff --git a/swift/Protocols/CustomDistributionMetricProtocol.html b/swift/Protocols/CustomDistributionMetricProtocol.html index 011826dda2..4e9465abd5 100644 --- a/swift/Protocols/CustomDistributionMetricProtocol.html +++ b/swift/Protocols/CustomDistributionMetricProtocol.html @@ -1072,7 +1072,7 @@

    Declaration

    diff --git a/swift/Protocols/DatetimeMetricProtocol.html b/swift/Protocols/DatetimeMetricProtocol.html index d4d5f75d8c..a5f062f9dd 100644 --- a/swift/Protocols/DatetimeMetricProtocol.html +++ b/swift/Protocols/DatetimeMetricProtocol.html @@ -1072,7 +1072,7 @@

    Declaration

    diff --git a/swift/Protocols/DenominatorMetricProtocol.html b/swift/Protocols/DenominatorMetricProtocol.html index 90b9b8b0b3..a1e31b7842 100644 --- a/swift/Protocols/DenominatorMetricProtocol.html +++ b/swift/Protocols/DenominatorMetricProtocol.html @@ -1045,7 +1045,7 @@

    Declaration

    diff --git a/swift/Protocols/EventExtras.html b/swift/Protocols/EventExtras.html index dfb9d5506c..766f5361f6 100644 --- a/swift/Protocols/EventExtras.html +++ b/swift/Protocols/EventExtras.html @@ -1000,7 +1000,7 @@

    Declaration

    diff --git a/swift/Protocols/EventMetricProtocol.html b/swift/Protocols/EventMetricProtocol.html index cbf6964765..c88fc70cc1 100644 --- a/swift/Protocols/EventMetricProtocol.html +++ b/swift/Protocols/EventMetricProtocol.html @@ -1045,7 +1045,7 @@

    Declaration

    diff --git a/swift/Protocols/GleanEventListener.html b/swift/Protocols/GleanEventListener.html index 6be6acbe15..7fb789e119 100644 --- a/swift/Protocols/GleanEventListener.html +++ b/swift/Protocols/GleanEventListener.html @@ -991,7 +991,7 @@

    Declaration

    diff --git a/swift/Protocols/LabeledBooleanProtocol.html b/swift/Protocols/LabeledBooleanProtocol.html index 2aeab6618f..a7c0810219 100644 --- a/swift/Protocols/LabeledBooleanProtocol.html +++ b/swift/Protocols/LabeledBooleanProtocol.html @@ -1018,7 +1018,7 @@

    Declaration

    diff --git a/swift/Protocols/LabeledCounterProtocol.html b/swift/Protocols/LabeledCounterProtocol.html index cbb7c4bafe..4071a93591 100644 --- a/swift/Protocols/LabeledCounterProtocol.html +++ b/swift/Protocols/LabeledCounterProtocol.html @@ -1018,7 +1018,7 @@

    Declaration

    diff --git a/swift/Protocols/LabeledStringProtocol.html b/swift/Protocols/LabeledStringProtocol.html index e8b0b01873..c4026b929a 100644 --- a/swift/Protocols/LabeledStringProtocol.html +++ b/swift/Protocols/LabeledStringProtocol.html @@ -1018,7 +1018,7 @@

    Declaration

    diff --git a/swift/Protocols/MemoryDistributionMetricProtocol.html b/swift/Protocols/MemoryDistributionMetricProtocol.html index a2a8d43212..d93dc93081 100644 --- a/swift/Protocols/MemoryDistributionMetricProtocol.html +++ b/swift/Protocols/MemoryDistributionMetricProtocol.html @@ -1072,7 +1072,7 @@

    Declaration

    diff --git a/swift/Protocols/NumeratorMetricProtocol.html b/swift/Protocols/NumeratorMetricProtocol.html index 7c86357aa1..ee2486fb2d 100644 --- a/swift/Protocols/NumeratorMetricProtocol.html +++ b/swift/Protocols/NumeratorMetricProtocol.html @@ -1045,7 +1045,7 @@

    Declaration

    diff --git a/swift/Protocols/ObjectMetricProtocol.html b/swift/Protocols/ObjectMetricProtocol.html index 350c108597..269ccd316c 100644 --- a/swift/Protocols/ObjectMetricProtocol.html +++ b/swift/Protocols/ObjectMetricProtocol.html @@ -1072,7 +1072,7 @@

    Declaration

    diff --git a/swift/Protocols/ObjectSerialize.html b/swift/Protocols/ObjectSerialize.html index fd010b3b5b..bf09cf40a5 100644 --- a/swift/Protocols/ObjectSerialize.html +++ b/swift/Protocols/ObjectSerialize.html @@ -993,7 +993,7 @@

    Declaration

    diff --git a/swift/Protocols/OnGleanEvents.html b/swift/Protocols/OnGleanEvents.html index d5a48cca1d..199ed9493f 100644 --- a/swift/Protocols/OnGleanEvents.html +++ b/swift/Protocols/OnGleanEvents.html @@ -1099,7 +1099,7 @@

    Declaration

    diff --git a/swift/Protocols/PingTypeProtocol.html b/swift/Protocols/PingTypeProtocol.html index 1eb833e279..c7dfe5d5d1 100644 --- a/swift/Protocols/PingTypeProtocol.html +++ b/swift/Protocols/PingTypeProtocol.html @@ -991,7 +991,7 @@

    Declaration

    diff --git a/swift/Protocols/QuantityMetricProtocol.html b/swift/Protocols/QuantityMetricProtocol.html index 40a4469fa1..8c0f5f2e75 100644 --- a/swift/Protocols/QuantityMetricProtocol.html +++ b/swift/Protocols/QuantityMetricProtocol.html @@ -1045,7 +1045,7 @@

    Declaration

    diff --git a/swift/Protocols/RateMetricProtocol.html b/swift/Protocols/RateMetricProtocol.html index 9fc21dbf6f..aed50a2310 100644 --- a/swift/Protocols/RateMetricProtocol.html +++ b/swift/Protocols/RateMetricProtocol.html @@ -1072,7 +1072,7 @@

    Declaration

    diff --git a/swift/Protocols/ReasonCodes.html b/swift/Protocols/ReasonCodes.html index a9f5a9d987..2ac19d51ec 100644 --- a/swift/Protocols/ReasonCodes.html +++ b/swift/Protocols/ReasonCodes.html @@ -995,7 +995,7 @@

    Declaration

    diff --git a/swift/Protocols/StringListMetricProtocol.html b/swift/Protocols/StringListMetricProtocol.html index dc08b09cf0..62cb8a89e5 100644 --- a/swift/Protocols/StringListMetricProtocol.html +++ b/swift/Protocols/StringListMetricProtocol.html @@ -1072,7 +1072,7 @@

    Declaration

    diff --git a/swift/Protocols/StringMetricProtocol.html b/swift/Protocols/StringMetricProtocol.html index d60be2413b..968a5a70a0 100644 --- a/swift/Protocols/StringMetricProtocol.html +++ b/swift/Protocols/StringMetricProtocol.html @@ -1045,7 +1045,7 @@

    Declaration

    diff --git a/swift/Protocols/TextMetricProtocol.html b/swift/Protocols/TextMetricProtocol.html index f79e2de7ad..b85690c95b 100644 --- a/swift/Protocols/TextMetricProtocol.html +++ b/swift/Protocols/TextMetricProtocol.html @@ -1045,7 +1045,7 @@

    Declaration

    diff --git a/swift/Protocols/TimespanMetricProtocol.html b/swift/Protocols/TimespanMetricProtocol.html index f0f9f78411..30324e6e2e 100644 --- a/swift/Protocols/TimespanMetricProtocol.html +++ b/swift/Protocols/TimespanMetricProtocol.html @@ -1126,7 +1126,7 @@

    Declaration

    diff --git a/swift/Protocols/TimingDistributionMetricProtocol.html b/swift/Protocols/TimingDistributionMetricProtocol.html index 72abebb9a7..75e25404d9 100644 --- a/swift/Protocols/TimingDistributionMetricProtocol.html +++ b/swift/Protocols/TimingDistributionMetricProtocol.html @@ -1153,7 +1153,7 @@

    Declaration

    diff --git a/swift/Protocols/UrlMetricProtocol.html b/swift/Protocols/UrlMetricProtocol.html index ed71ed2f12..19f645f6b7 100644 --- a/swift/Protocols/UrlMetricProtocol.html +++ b/swift/Protocols/UrlMetricProtocol.html @@ -1045,7 +1045,7 @@

    Declaration

    diff --git a/swift/Protocols/UuidMetricProtocol.html b/swift/Protocols/UuidMetricProtocol.html index 4c7bb27d8e..907cb26069 100644 --- a/swift/Protocols/UuidMetricProtocol.html +++ b/swift/Protocols/UuidMetricProtocol.html @@ -1072,7 +1072,7 @@

    Declaration

    diff --git a/swift/Structs.html b/swift/Structs.html index 5980cc04ee..3399e667cb 100644 --- a/swift/Structs.html +++ b/swift/Structs.html @@ -2619,7 +2619,7 @@

    Declaration

    diff --git a/swift/Structs/BuildInfo.html b/swift/Structs/BuildInfo.html index ee688882f7..74c27e1fb7 100644 --- a/swift/Structs/BuildInfo.html +++ b/swift/Structs/BuildInfo.html @@ -991,7 +991,7 @@

    Declaration

    diff --git a/swift/Structs/ClientInfoMetrics.html b/swift/Structs/ClientInfoMetrics.html index 784904f731..1f9f5379a0 100644 --- a/swift/Structs/ClientInfoMetrics.html +++ b/swift/Structs/ClientInfoMetrics.html @@ -1341,7 +1341,7 @@

    Declaration

    diff --git a/swift/Structs/CommonMetricData.html b/swift/Structs/CommonMetricData.html index 3b63561e96..a41641d20a 100644 --- a/swift/Structs/CommonMetricData.html +++ b/swift/Structs/CommonMetricData.html @@ -1206,7 +1206,7 @@

    Declaration

    diff --git a/swift/Structs/Configuration.html b/swift/Structs/Configuration.html index 22c51540ae..2b8a036004 100644 --- a/swift/Structs/Configuration.html +++ b/swift/Structs/Configuration.html @@ -1003,7 +1003,7 @@

    Declaration

    diff --git a/swift/Structs/Datetime.html b/swift/Structs/Datetime.html index 300889bfbd..da554d8153 100644 --- a/swift/Structs/Datetime.html +++ b/swift/Structs/Datetime.html @@ -1260,7 +1260,7 @@

    Declaration

    diff --git a/swift/Structs/DistributionData.html b/swift/Structs/DistributionData.html index 6e80a259f3..2527129d24 100644 --- a/swift/Structs/DistributionData.html +++ b/swift/Structs/DistributionData.html @@ -1125,7 +1125,7 @@

    Declaration

    diff --git a/swift/Structs/FfiConverterTypeBooleanMetric.html b/swift/Structs/FfiConverterTypeBooleanMetric.html index 33b05fe3b6..ec0e54c1f8 100644 --- a/swift/Structs/FfiConverterTypeBooleanMetric.html +++ b/swift/Structs/FfiConverterTypeBooleanMetric.html @@ -1072,7 +1072,7 @@

    Declaration

    diff --git a/swift/Structs/FfiConverterTypeCallbackError.html b/swift/Structs/FfiConverterTypeCallbackError.html index b1ee004454..9eeeaa190d 100644 --- a/swift/Structs/FfiConverterTypeCallbackError.html +++ b/swift/Structs/FfiConverterTypeCallbackError.html @@ -1018,7 +1018,7 @@

    Declaration

    diff --git a/swift/Structs/FfiConverterTypeClientInfoMetrics.html b/swift/Structs/FfiConverterTypeClientInfoMetrics.html index 2446512cc6..82ee99d3e4 100644 --- a/swift/Structs/FfiConverterTypeClientInfoMetrics.html +++ b/swift/Structs/FfiConverterTypeClientInfoMetrics.html @@ -1018,7 +1018,7 @@

    Declaration

    diff --git a/swift/Structs/FfiConverterTypeCommonMetricData.html b/swift/Structs/FfiConverterTypeCommonMetricData.html index 1213b24997..6ab5b4fac6 100644 --- a/swift/Structs/FfiConverterTypeCommonMetricData.html +++ b/swift/Structs/FfiConverterTypeCommonMetricData.html @@ -1018,7 +1018,7 @@

    Declaration

    diff --git a/swift/Structs/FfiConverterTypeCounterMetric.html b/swift/Structs/FfiConverterTypeCounterMetric.html index 491a6a1624..1de6af10b7 100644 --- a/swift/Structs/FfiConverterTypeCounterMetric.html +++ b/swift/Structs/FfiConverterTypeCounterMetric.html @@ -1072,7 +1072,7 @@

    Declaration

    diff --git a/swift/Structs/FfiConverterTypeCowString.html b/swift/Structs/FfiConverterTypeCowString.html index 5f43097b32..e589b19be1 100644 --- a/swift/Structs/FfiConverterTypeCowString.html +++ b/swift/Structs/FfiConverterTypeCowString.html @@ -1072,7 +1072,7 @@

    Declaration

    diff --git a/swift/Structs/FfiConverterTypeCustomDistributionMetric.html b/swift/Structs/FfiConverterTypeCustomDistributionMetric.html index 20c95d3244..b6150de345 100644 --- a/swift/Structs/FfiConverterTypeCustomDistributionMetric.html +++ b/swift/Structs/FfiConverterTypeCustomDistributionMetric.html @@ -1072,7 +1072,7 @@

    Declaration

    diff --git a/swift/Structs/FfiConverterTypeDatetime.html b/swift/Structs/FfiConverterTypeDatetime.html index fbd24de9cd..5904679de9 100644 --- a/swift/Structs/FfiConverterTypeDatetime.html +++ b/swift/Structs/FfiConverterTypeDatetime.html @@ -1018,7 +1018,7 @@

    Declaration

    diff --git a/swift/Structs/FfiConverterTypeDatetimeMetric.html b/swift/Structs/FfiConverterTypeDatetimeMetric.html index d0c02b7b46..743f31352e 100644 --- a/swift/Structs/FfiConverterTypeDatetimeMetric.html +++ b/swift/Structs/FfiConverterTypeDatetimeMetric.html @@ -1072,7 +1072,7 @@

    Declaration

    diff --git a/swift/Structs/FfiConverterTypeDenominatorMetric.html b/swift/Structs/FfiConverterTypeDenominatorMetric.html index 0e4f7fb2e2..ef90b4b712 100644 --- a/swift/Structs/FfiConverterTypeDenominatorMetric.html +++ b/swift/Structs/FfiConverterTypeDenominatorMetric.html @@ -1072,7 +1072,7 @@

    Declaration

    diff --git a/swift/Structs/FfiConverterTypeDistributionData.html b/swift/Structs/FfiConverterTypeDistributionData.html index a5fab32731..1d815c00e2 100644 --- a/swift/Structs/FfiConverterTypeDistributionData.html +++ b/swift/Structs/FfiConverterTypeDistributionData.html @@ -1018,7 +1018,7 @@

    Declaration

    diff --git a/swift/Structs/FfiConverterTypeErrorType.html b/swift/Structs/FfiConverterTypeErrorType.html index 01671a848a..9effc527c0 100644 --- a/swift/Structs/FfiConverterTypeErrorType.html +++ b/swift/Structs/FfiConverterTypeErrorType.html @@ -1018,7 +1018,7 @@

    Declaration

    diff --git a/swift/Structs/FfiConverterTypeEventMetric.html b/swift/Structs/FfiConverterTypeEventMetric.html index a7bd98ec4a..b69dc696fe 100644 --- a/swift/Structs/FfiConverterTypeEventMetric.html +++ b/swift/Structs/FfiConverterTypeEventMetric.html @@ -1072,7 +1072,7 @@

    Declaration

    diff --git a/swift/Structs/FfiConverterTypeHistogramType.html b/swift/Structs/FfiConverterTypeHistogramType.html index ed81339d43..a309006711 100644 --- a/swift/Structs/FfiConverterTypeHistogramType.html +++ b/swift/Structs/FfiConverterTypeHistogramType.html @@ -1018,7 +1018,7 @@

    Declaration

    diff --git a/swift/Structs/FfiConverterTypeInternalConfiguration.html b/swift/Structs/FfiConverterTypeInternalConfiguration.html index ac2d846005..b77a96d05e 100644 --- a/swift/Structs/FfiConverterTypeInternalConfiguration.html +++ b/swift/Structs/FfiConverterTypeInternalConfiguration.html @@ -1018,7 +1018,7 @@

    Declaration

    diff --git a/swift/Structs/FfiConverterTypeJsonValue.html b/swift/Structs/FfiConverterTypeJsonValue.html index 5378de6d55..705017fa24 100644 --- a/swift/Structs/FfiConverterTypeJsonValue.html +++ b/swift/Structs/FfiConverterTypeJsonValue.html @@ -1072,7 +1072,7 @@

    Declaration

    diff --git a/swift/Structs/FfiConverterTypeLabeledBoolean.html b/swift/Structs/FfiConverterTypeLabeledBoolean.html index 8c6a8dc498..d854674408 100644 --- a/swift/Structs/FfiConverterTypeLabeledBoolean.html +++ b/swift/Structs/FfiConverterTypeLabeledBoolean.html @@ -1072,7 +1072,7 @@

    Declaration

    diff --git a/swift/Structs/FfiConverterTypeLabeledCounter.html b/swift/Structs/FfiConverterTypeLabeledCounter.html index 40d3459fb6..3fde556254 100644 --- a/swift/Structs/FfiConverterTypeLabeledCounter.html +++ b/swift/Structs/FfiConverterTypeLabeledCounter.html @@ -1072,7 +1072,7 @@

    Declaration

    diff --git a/swift/Structs/FfiConverterTypeLabeledMetricData.html b/swift/Structs/FfiConverterTypeLabeledMetricData.html index 8d47d8e705..739d28896c 100644 --- a/swift/Structs/FfiConverterTypeLabeledMetricData.html +++ b/swift/Structs/FfiConverterTypeLabeledMetricData.html @@ -1018,7 +1018,7 @@

    Declaration

    diff --git a/swift/Structs/FfiConverterTypeLabeledString.html b/swift/Structs/FfiConverterTypeLabeledString.html index af8e67c467..8f5b821f97 100644 --- a/swift/Structs/FfiConverterTypeLabeledString.html +++ b/swift/Structs/FfiConverterTypeLabeledString.html @@ -1072,7 +1072,7 @@

    Declaration

    diff --git a/swift/Structs/FfiConverterTypeLevelFilter.html b/swift/Structs/FfiConverterTypeLevelFilter.html index 000346be44..21368b3f77 100644 --- a/swift/Structs/FfiConverterTypeLevelFilter.html +++ b/swift/Structs/FfiConverterTypeLevelFilter.html @@ -1018,7 +1018,7 @@

    Declaration

    diff --git a/swift/Structs/FfiConverterTypeLifetime.html b/swift/Structs/FfiConverterTypeLifetime.html index d22a234650..4e34e10aa2 100644 --- a/swift/Structs/FfiConverterTypeLifetime.html +++ b/swift/Structs/FfiConverterTypeLifetime.html @@ -1018,7 +1018,7 @@

    Declaration

    diff --git a/swift/Structs/FfiConverterTypeMemoryDistributionMetric.html b/swift/Structs/FfiConverterTypeMemoryDistributionMetric.html index 3133b633e1..d165a68b6b 100644 --- a/swift/Structs/FfiConverterTypeMemoryDistributionMetric.html +++ b/swift/Structs/FfiConverterTypeMemoryDistributionMetric.html @@ -1072,7 +1072,7 @@

    Declaration

    diff --git a/swift/Structs/FfiConverterTypeMemoryUnit.html b/swift/Structs/FfiConverterTypeMemoryUnit.html index 4964d1c949..d1ba5f4276 100644 --- a/swift/Structs/FfiConverterTypeMemoryUnit.html +++ b/swift/Structs/FfiConverterTypeMemoryUnit.html @@ -1018,7 +1018,7 @@

    Declaration

    diff --git a/swift/Structs/FfiConverterTypeNumeratorMetric.html b/swift/Structs/FfiConverterTypeNumeratorMetric.html index 5a776a3849..646e20155a 100644 --- a/swift/Structs/FfiConverterTypeNumeratorMetric.html +++ b/swift/Structs/FfiConverterTypeNumeratorMetric.html @@ -1072,7 +1072,7 @@

    Declaration

    diff --git a/swift/Structs/FfiConverterTypeObjectMetric.html b/swift/Structs/FfiConverterTypeObjectMetric.html index 5355c37ac9..0884e416c6 100644 --- a/swift/Structs/FfiConverterTypeObjectMetric.html +++ b/swift/Structs/FfiConverterTypeObjectMetric.html @@ -1072,7 +1072,7 @@

    Declaration

    diff --git a/swift/Structs/FfiConverterTypePingRateLimit.html b/swift/Structs/FfiConverterTypePingRateLimit.html index 6b5d31bb4f..c85c2f3b13 100644 --- a/swift/Structs/FfiConverterTypePingRateLimit.html +++ b/swift/Structs/FfiConverterTypePingRateLimit.html @@ -1018,7 +1018,7 @@

    Declaration

    diff --git a/swift/Structs/FfiConverterTypePingRequest.html b/swift/Structs/FfiConverterTypePingRequest.html index fa22d2a6c0..2856dd87ec 100644 --- a/swift/Structs/FfiConverterTypePingRequest.html +++ b/swift/Structs/FfiConverterTypePingRequest.html @@ -1018,7 +1018,7 @@

    Declaration

    diff --git a/swift/Structs/FfiConverterTypePingType.html b/swift/Structs/FfiConverterTypePingType.html index 95d728cad6..fdcf7f0e37 100644 --- a/swift/Structs/FfiConverterTypePingType.html +++ b/swift/Structs/FfiConverterTypePingType.html @@ -1072,7 +1072,7 @@

    Declaration

    diff --git a/swift/Structs/FfiConverterTypePingUploadTask.html b/swift/Structs/FfiConverterTypePingUploadTask.html index ffc4af4355..91677c23fd 100644 --- a/swift/Structs/FfiConverterTypePingUploadTask.html +++ b/swift/Structs/FfiConverterTypePingUploadTask.html @@ -1018,7 +1018,7 @@

    Declaration

    diff --git a/swift/Structs/FfiConverterTypeQuantityMetric.html b/swift/Structs/FfiConverterTypeQuantityMetric.html index 096b0a0d60..c33394c6f3 100644 --- a/swift/Structs/FfiConverterTypeQuantityMetric.html +++ b/swift/Structs/FfiConverterTypeQuantityMetric.html @@ -1072,7 +1072,7 @@

    Declaration

    diff --git a/swift/Structs/FfiConverterTypeRate.html b/swift/Structs/FfiConverterTypeRate.html index 5c162f0973..08d48322df 100644 --- a/swift/Structs/FfiConverterTypeRate.html +++ b/swift/Structs/FfiConverterTypeRate.html @@ -1018,7 +1018,7 @@

    Declaration

    diff --git a/swift/Structs/FfiConverterTypeRateMetric.html b/swift/Structs/FfiConverterTypeRateMetric.html index 68177e1d6a..4101b8847a 100644 --- a/swift/Structs/FfiConverterTypeRateMetric.html +++ b/swift/Structs/FfiConverterTypeRateMetric.html @@ -1072,7 +1072,7 @@

    Declaration

    diff --git a/swift/Structs/FfiConverterTypeRecordedEvent.html b/swift/Structs/FfiConverterTypeRecordedEvent.html index 584c401630..d2138e5e0b 100644 --- a/swift/Structs/FfiConverterTypeRecordedEvent.html +++ b/swift/Structs/FfiConverterTypeRecordedEvent.html @@ -1018,7 +1018,7 @@

    Declaration

    diff --git a/swift/Structs/FfiConverterTypeRecordedExperiment.html b/swift/Structs/FfiConverterTypeRecordedExperiment.html index dae94a8fcc..65a3710934 100644 --- a/swift/Structs/FfiConverterTypeRecordedExperiment.html +++ b/swift/Structs/FfiConverterTypeRecordedExperiment.html @@ -1018,7 +1018,7 @@

    Declaration

    diff --git a/swift/Structs/FfiConverterTypeStringListMetric.html b/swift/Structs/FfiConverterTypeStringListMetric.html index fd50e8389a..1be26ba301 100644 --- a/swift/Structs/FfiConverterTypeStringListMetric.html +++ b/swift/Structs/FfiConverterTypeStringListMetric.html @@ -1072,7 +1072,7 @@

    Declaration

    diff --git a/swift/Structs/FfiConverterTypeStringMetric.html b/swift/Structs/FfiConverterTypeStringMetric.html index 8d3dfb8f07..71f2a719d0 100644 --- a/swift/Structs/FfiConverterTypeStringMetric.html +++ b/swift/Structs/FfiConverterTypeStringMetric.html @@ -1072,7 +1072,7 @@

    Declaration

    diff --git a/swift/Structs/FfiConverterTypeTextMetric.html b/swift/Structs/FfiConverterTypeTextMetric.html index 1c5cdde9d4..460dc088c2 100644 --- a/swift/Structs/FfiConverterTypeTextMetric.html +++ b/swift/Structs/FfiConverterTypeTextMetric.html @@ -1072,7 +1072,7 @@

    Declaration

    diff --git a/swift/Structs/FfiConverterTypeTimeUnit.html b/swift/Structs/FfiConverterTypeTimeUnit.html index d9ed293aed..36e0cb7938 100644 --- a/swift/Structs/FfiConverterTypeTimeUnit.html +++ b/swift/Structs/FfiConverterTypeTimeUnit.html @@ -1018,7 +1018,7 @@

    Declaration

    diff --git a/swift/Structs/FfiConverterTypeTimerId.html b/swift/Structs/FfiConverterTypeTimerId.html index 28aaafdb7a..c5bca9fe68 100644 --- a/swift/Structs/FfiConverterTypeTimerId.html +++ b/swift/Structs/FfiConverterTypeTimerId.html @@ -1018,7 +1018,7 @@

    Declaration

    diff --git a/swift/Structs/FfiConverterTypeTimespanMetric.html b/swift/Structs/FfiConverterTypeTimespanMetric.html index 6156db4d22..0f9dd17f2d 100644 --- a/swift/Structs/FfiConverterTypeTimespanMetric.html +++ b/swift/Structs/FfiConverterTypeTimespanMetric.html @@ -1072,7 +1072,7 @@

    Declaration

    diff --git a/swift/Structs/FfiConverterTypeTimingDistributionMetric.html b/swift/Structs/FfiConverterTypeTimingDistributionMetric.html index 80cf4c348c..f1da27bb57 100644 --- a/swift/Structs/FfiConverterTypeTimingDistributionMetric.html +++ b/swift/Structs/FfiConverterTypeTimingDistributionMetric.html @@ -1072,7 +1072,7 @@

    Declaration

    diff --git a/swift/Structs/FfiConverterTypeUploadResult.html b/swift/Structs/FfiConverterTypeUploadResult.html index 7b8cd8d714..0be5267304 100644 --- a/swift/Structs/FfiConverterTypeUploadResult.html +++ b/swift/Structs/FfiConverterTypeUploadResult.html @@ -1018,7 +1018,7 @@

    Declaration

    diff --git a/swift/Structs/FfiConverterTypeUploadTaskAction.html b/swift/Structs/FfiConverterTypeUploadTaskAction.html index 29b32ebd25..fff3fafad2 100644 --- a/swift/Structs/FfiConverterTypeUploadTaskAction.html +++ b/swift/Structs/FfiConverterTypeUploadTaskAction.html @@ -1018,7 +1018,7 @@

    Declaration

    diff --git a/swift/Structs/FfiConverterTypeUrlMetric.html b/swift/Structs/FfiConverterTypeUrlMetric.html index 22edd6cd13..e0922b0c74 100644 --- a/swift/Structs/FfiConverterTypeUrlMetric.html +++ b/swift/Structs/FfiConverterTypeUrlMetric.html @@ -1072,7 +1072,7 @@

    Declaration

    diff --git a/swift/Structs/FfiConverterTypeUuidMetric.html b/swift/Structs/FfiConverterTypeUuidMetric.html index f14e3f11fe..8936ecf1c9 100644 --- a/swift/Structs/FfiConverterTypeUuidMetric.html +++ b/swift/Structs/FfiConverterTypeUuidMetric.html @@ -1072,7 +1072,7 @@

    Declaration

    diff --git a/swift/Structs/InternalConfiguration.html b/swift/Structs/InternalConfiguration.html index 8719179275..63b9f470a3 100644 --- a/swift/Structs/InternalConfiguration.html +++ b/swift/Structs/InternalConfiguration.html @@ -1503,7 +1503,7 @@

    Declaration

    diff --git a/swift/Structs/PingRateLimit.html b/swift/Structs/PingRateLimit.html index b88a9f80b7..a3112bca1a 100644 --- a/swift/Structs/PingRateLimit.html +++ b/swift/Structs/PingRateLimit.html @@ -1098,7 +1098,7 @@

    Declaration

    diff --git a/swift/Structs/PingRequest.html b/swift/Structs/PingRequest.html index eb956376ad..31142804c1 100644 --- a/swift/Structs/PingRequest.html +++ b/swift/Structs/PingRequest.html @@ -1206,7 +1206,7 @@

    Declaration

    diff --git a/swift/Structs/Rate.html b/swift/Structs/Rate.html index 68decc55f5..3e200b1fe2 100644 --- a/swift/Structs/Rate.html +++ b/swift/Structs/Rate.html @@ -1098,7 +1098,7 @@

    Declaration

    diff --git a/swift/Structs/RecordedEvent.html b/swift/Structs/RecordedEvent.html index fd1dd40cbd..893903f85b 100644 --- a/swift/Structs/RecordedEvent.html +++ b/swift/Structs/RecordedEvent.html @@ -1152,7 +1152,7 @@

    Declaration

    diff --git a/swift/Structs/RecordedExperiment.html b/swift/Structs/RecordedExperiment.html index 0a2c54f128..75542017b3 100644 --- a/swift/Structs/RecordedExperiment.html +++ b/swift/Structs/RecordedExperiment.html @@ -1098,7 +1098,7 @@

    Declaration

    diff --git a/swift/Structs/TimerId.html b/swift/Structs/TimerId.html index c260dcf055..1f0cf86437 100644 --- a/swift/Structs/TimerId.html +++ b/swift/Structs/TimerId.html @@ -1071,7 +1071,7 @@

    Declaration

    diff --git a/swift/Typealiases.html b/swift/Typealiases.html index f5acd41cfc..2a62c39669 100644 --- a/swift/Typealiases.html +++ b/swift/Typealiases.html @@ -1437,7 +1437,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes.html index e4fd0becd7..8c004d872d 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes.html @@ -1922,7 +1922,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/BooleanMetric.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/BooleanMetric.html index 115feb7c14..17f6ce71b6 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/BooleanMetric.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/BooleanMetric.html @@ -1206,7 +1206,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/BooleanMetric/NoPointer.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/BooleanMetric/NoPointer.html index f39325de73..bf28b56bbc 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/BooleanMetric/NoPointer.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/BooleanMetric/NoPointer.html @@ -993,7 +993,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/CounterMetric.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/CounterMetric.html index fb4f09342f..df1af7a18e 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/CounterMetric.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/CounterMetric.html @@ -1206,7 +1206,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/CounterMetric/NoPointer.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/CounterMetric/NoPointer.html index 62263c9b91..a32534506b 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/CounterMetric/NoPointer.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/CounterMetric/NoPointer.html @@ -993,7 +993,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/CustomDistributionMetric.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/CustomDistributionMetric.html index c8c8f28bc7..f711da248a 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/CustomDistributionMetric.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/CustomDistributionMetric.html @@ -1233,7 +1233,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/CustomDistributionMetric/NoPointer.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/CustomDistributionMetric/NoPointer.html index d09d2a32a2..22e5449174 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/CustomDistributionMetric/NoPointer.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/CustomDistributionMetric/NoPointer.html @@ -993,7 +993,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/DatetimeMetric.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/DatetimeMetric.html index 6fbe203a35..9e8908779d 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/DatetimeMetric.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/DatetimeMetric.html @@ -1233,7 +1233,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/DatetimeMetric/NoPointer.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/DatetimeMetric/NoPointer.html index 297996a31c..dbcc9011ab 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/DatetimeMetric/NoPointer.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/DatetimeMetric/NoPointer.html @@ -993,7 +993,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/DatetimeMetricType.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/DatetimeMetricType.html index c05b12bc23..20d4a846e9 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/DatetimeMetricType.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/DatetimeMetricType.html @@ -1198,7 +1198,7 @@

    Return Value

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/DenominatorMetric.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/DenominatorMetric.html index c2d4e5a35a..901a326e9a 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/DenominatorMetric.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/DenominatorMetric.html @@ -1206,7 +1206,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/DenominatorMetric/NoPointer.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/DenominatorMetric/NoPointer.html index 7708aefc82..cdaa937b2d 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/DenominatorMetric/NoPointer.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/DenominatorMetric/NoPointer.html @@ -993,7 +993,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/EventMetric.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/EventMetric.html index 6c7b286620..f0b83eff26 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/EventMetric.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/EventMetric.html @@ -1206,7 +1206,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/EventMetric/NoPointer.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/EventMetric/NoPointer.html index c8cc01c7c4..ed4a2e4f1c 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/EventMetric/NoPointer.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/EventMetric/NoPointer.html @@ -993,7 +993,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/EventMetricType.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/EventMetricType.html index 32bc5de9bf..4f7faa5a07 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/EventMetricType.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/EventMetricType.html @@ -1126,7 +1126,7 @@

    Return Value

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/Glean.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/Glean.html index 0d00511cc5..eab8d67eb7 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/Glean.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/Glean.html @@ -1984,7 +1984,7 @@

    Parameters

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/HttpPingUploader.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/HttpPingUploader.html index 043542c1b3..9accd5d13c 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/HttpPingUploader.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/HttpPingUploader.html @@ -1025,7 +1025,7 @@

    Parameters

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/LabeledBoolean.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/LabeledBoolean.html index 4a4d0b44be..2a48a0f0bd 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/LabeledBoolean.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/LabeledBoolean.html @@ -1179,7 +1179,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/LabeledBoolean/NoPointer.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/LabeledBoolean/NoPointer.html index f22f167b1a..9b686bc8b1 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/LabeledBoolean/NoPointer.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/LabeledBoolean/NoPointer.html @@ -993,7 +993,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/LabeledCounter.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/LabeledCounter.html index 8cab44caa0..9ec841169e 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/LabeledCounter.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/LabeledCounter.html @@ -1179,7 +1179,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/LabeledCounter/NoPointer.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/LabeledCounter/NoPointer.html index c58d3ac875..ecb817799e 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/LabeledCounter/NoPointer.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/LabeledCounter/NoPointer.html @@ -993,7 +993,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/LabeledMetricType.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/LabeledMetricType.html index 12dce3ec73..fad5badfb5 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/LabeledMetricType.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/LabeledMetricType.html @@ -1127,7 +1127,7 @@

    Return Value

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/LabeledString.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/LabeledString.html index 55daa6cce0..2f8fc5345a 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/LabeledString.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/LabeledString.html @@ -1179,7 +1179,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/LabeledString/NoPointer.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/LabeledString/NoPointer.html index aa27e8ec57..f2610e3f10 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/LabeledString/NoPointer.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/LabeledString/NoPointer.html @@ -993,7 +993,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/MemoryDistributionMetric.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/MemoryDistributionMetric.html index ddfcbfb242..0d6fe0cb3a 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/MemoryDistributionMetric.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/MemoryDistributionMetric.html @@ -1233,7 +1233,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/MemoryDistributionMetric/NoPointer.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/MemoryDistributionMetric/NoPointer.html index 65d1305b87..665ce2ca7d 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/MemoryDistributionMetric/NoPointer.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/MemoryDistributionMetric/NoPointer.html @@ -993,7 +993,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/NoExtras.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/NoExtras.html index c4c567edfd..71721bb295 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/NoExtras.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/NoExtras.html @@ -993,7 +993,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/NumeratorMetric.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/NumeratorMetric.html index a980143bda..cd63db8526 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/NumeratorMetric.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/NumeratorMetric.html @@ -1206,7 +1206,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/NumeratorMetric/NoPointer.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/NumeratorMetric/NoPointer.html index 437d28162f..0d517585fe 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/NumeratorMetric/NoPointer.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/NumeratorMetric/NoPointer.html @@ -993,7 +993,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/ObjectMetric.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/ObjectMetric.html index f437d50f00..9bab1284ef 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/ObjectMetric.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/ObjectMetric.html @@ -1233,7 +1233,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/ObjectMetric/NoPointer.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/ObjectMetric/NoPointer.html index a845d36566..81b8afc23b 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/ObjectMetric/NoPointer.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/ObjectMetric/NoPointer.html @@ -993,7 +993,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/ObjectMetricType.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/ObjectMetricType.html index 59de55db39..81175d91f1 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/ObjectMetricType.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/ObjectMetricType.html @@ -1146,7 +1146,7 @@

    Return Value

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/Ping.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/Ping.html index 626db82c3c..1b38fcf098 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/Ping.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/Ping.html @@ -1091,7 +1091,7 @@

    Parameters

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/PingType.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/PingType.html index 5c5586013d..8579caf2af 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/PingType.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/PingType.html @@ -1152,7 +1152,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/PingType/NoPointer.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/PingType/NoPointer.html index 821089773e..d357244cc0 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/PingType/NoPointer.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/PingType/NoPointer.html @@ -993,7 +993,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/QuantityMetric.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/QuantityMetric.html index 6447d2cdbf..7d8688458b 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/QuantityMetric.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/QuantityMetric.html @@ -1206,7 +1206,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/QuantityMetric/NoPointer.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/QuantityMetric/NoPointer.html index eb020f80c1..391179342b 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/QuantityMetric/NoPointer.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/QuantityMetric/NoPointer.html @@ -993,7 +993,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/RateMetric.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/RateMetric.html index c1ea52ccf8..27018a44fd 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/RateMetric.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/RateMetric.html @@ -1233,7 +1233,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/RateMetric/NoPointer.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/RateMetric/NoPointer.html index 81711d0806..dc0c48169d 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/RateMetric/NoPointer.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/RateMetric/NoPointer.html @@ -993,7 +993,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/StringListMetric.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/StringListMetric.html index 9b8883898f..915adf25bf 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/StringListMetric.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/StringListMetric.html @@ -1233,7 +1233,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/StringListMetric/NoPointer.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/StringListMetric/NoPointer.html index 7058a63152..4cbf00b1e2 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/StringListMetric/NoPointer.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/StringListMetric/NoPointer.html @@ -993,7 +993,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/StringMetric.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/StringMetric.html index d9233a0467..7ba4adb917 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/StringMetric.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/StringMetric.html @@ -1206,7 +1206,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/StringMetric/NoPointer.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/StringMetric/NoPointer.html index ebe366ec47..5b0dfba421 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/StringMetric/NoPointer.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/StringMetric/NoPointer.html @@ -993,7 +993,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/TextMetric.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/TextMetric.html index 0f17e0f484..a48d067aab 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/TextMetric.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/TextMetric.html @@ -1206,7 +1206,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/TextMetric/NoPointer.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/TextMetric/NoPointer.html index 3408969810..419036ef48 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/TextMetric/NoPointer.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/TextMetric/NoPointer.html @@ -993,7 +993,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/TimespanMetric.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/TimespanMetric.html index 206072ea03..84f7a3a466 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/TimespanMetric.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/TimespanMetric.html @@ -1287,7 +1287,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/TimespanMetric/NoPointer.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/TimespanMetric/NoPointer.html index 3830200b8c..5cc7ab7540 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/TimespanMetric/NoPointer.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/TimespanMetric/NoPointer.html @@ -993,7 +993,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/TimingDistributionMetric.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/TimingDistributionMetric.html index 8ecc473816..331d651596 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/TimingDistributionMetric.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/TimingDistributionMetric.html @@ -1314,7 +1314,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/TimingDistributionMetric/NoPointer.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/TimingDistributionMetric/NoPointer.html index 87e6de13e8..e1b5fb2e35 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/TimingDistributionMetric/NoPointer.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/TimingDistributionMetric/NoPointer.html @@ -993,7 +993,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/UrlMetric.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/UrlMetric.html index 625c914f41..f1e562c217 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/UrlMetric.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/UrlMetric.html @@ -1206,7 +1206,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/UrlMetric/NoPointer.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/UrlMetric/NoPointer.html index d7f0ce0836..0a0c0026c7 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/UrlMetric/NoPointer.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/UrlMetric/NoPointer.html @@ -993,7 +993,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/UrlMetricType.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/UrlMetricType.html index 8cd90658af..b64d9d9770 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/UrlMetricType.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/UrlMetricType.html @@ -1155,7 +1155,7 @@

    Return Value

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/UuidMetric.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/UuidMetric.html index 68248d1feb..3eaebe548d 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/UuidMetric.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/UuidMetric.html @@ -1233,7 +1233,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/UuidMetric/NoPointer.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/UuidMetric/NoPointer.html index 4d05a850e4..331ddb78a3 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/UuidMetric/NoPointer.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/UuidMetric/NoPointer.html @@ -993,7 +993,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/UuidMetricType.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/UuidMetricType.html index d9b9413f72..51dddc89c9 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/UuidMetricType.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Classes/UuidMetricType.html @@ -1127,7 +1127,7 @@

    Return Value

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Enums.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Enums.html index 461a6307a2..07e1eb9230 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Enums.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Enums.html @@ -973,7 +973,7 @@

    Declaration

    Swift

    public enum CallbackError
    extension CallbackError: Equatable, Hashable
    -
    extension CallbackError: Error
    +
    extension CallbackError: Foundation.LocalizedError
    @@ -1356,7 +1356,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Enums/CallbackError.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Enums/CallbackError.html index 84519220c1..f280d2982f 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Enums/CallbackError.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Enums/CallbackError.html @@ -951,7 +951,7 @@

    CallbackError

    public enum CallbackError
    extension CallbackError: Equatable, Hashable
    -
    extension CallbackError: Error
    +
    extension CallbackError: Foundation.LocalizedError
    @@ -988,12 +988,38 @@

    Declaration

    +
  • +
    + + + + errorDescription + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var errorDescription: String? { get }
    + +
    +
    +
    +
    +
  • diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Enums/ErrorType.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Enums/ErrorType.html index f81f571f24..33964ea7a5 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Enums/ErrorType.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Enums/ErrorType.html @@ -1073,7 +1073,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Enums/HistogramType.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Enums/HistogramType.html index 3b4bc8c9fa..2db3cdbd9a 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Enums/HistogramType.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Enums/HistogramType.html @@ -1019,7 +1019,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Enums/LabeledMetricData.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Enums/LabeledMetricData.html index ead553c644..2fd6140f98 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Enums/LabeledMetricData.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Enums/LabeledMetricData.html @@ -1077,7 +1077,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Enums/LevelFilter.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Enums/LevelFilter.html index 2332ae569a..5472420bed 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Enums/LevelFilter.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Enums/LevelFilter.html @@ -1127,7 +1127,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Enums/Lifetime.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Enums/Lifetime.html index 1ef100cdd1..ece1cd8750 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Enums/Lifetime.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Enums/Lifetime.html @@ -1046,7 +1046,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Enums/MemoryUnit.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Enums/MemoryUnit.html index c4d586a10c..faebb0d16a 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Enums/MemoryUnit.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Enums/MemoryUnit.html @@ -1073,7 +1073,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Enums/NoReasonCodes.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Enums/NoReasonCodes.html index d83214016e..c791669c5d 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Enums/NoReasonCodes.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Enums/NoReasonCodes.html @@ -993,7 +993,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Enums/PingUploadTask.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Enums/PingUploadTask.html index 8beca27e1e..961ac344a1 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Enums/PingUploadTask.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Enums/PingUploadTask.html @@ -1049,7 +1049,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Enums/TimeUnit.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Enums/TimeUnit.html index 788c432219..4e3a4562dc 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Enums/TimeUnit.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Enums/TimeUnit.html @@ -1154,7 +1154,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Enums/UploadResult.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Enums/UploadResult.html index 0dab3cb298..89ac7f6990 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Enums/UploadResult.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Enums/UploadResult.html @@ -1077,7 +1077,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Enums/UploadTaskAction.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Enums/UploadTaskAction.html index 97d0cc3543..21ef8154ea 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Enums/UploadTaskAction.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Enums/UploadTaskAction.html @@ -1019,7 +1019,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Extensions.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Extensions.html index 341ee9e8e7..1a26b774d9 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Extensions.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Extensions.html @@ -1066,7 +1066,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Extensions/Array.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Extensions/Array.html index 0091cb3530..edfdbe5c16 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Extensions/Array.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Extensions/Array.html @@ -999,7 +999,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Extensions/String.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Extensions/String.html index 0a0019b918..0ac0ce77a1 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Extensions/String.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Extensions/String.html @@ -993,7 +993,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Extensions/TimespanMetricType.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Extensions/TimespanMetricType.html index 2f73db3109..c321bda548 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Extensions/TimespanMetricType.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Extensions/TimespanMetricType.html @@ -1057,7 +1057,7 @@

    Parameters

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Extensions/TimingDistributionMetricType.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Extensions/TimingDistributionMetricType.html index 9ce9faddba..3eb7b907ae 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Extensions/TimingDistributionMetricType.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Extensions/TimingDistributionMetricType.html @@ -1057,7 +1057,7 @@

    Parameters

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Functions.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Functions.html index 7425c48031..47b01c6288 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Functions.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Functions.html @@ -4114,7 +4114,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols.html index dff245b450..53fbe794fd 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols.html @@ -1719,7 +1719,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/BooleanMetricProtocol.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/BooleanMetricProtocol.html index 723190b98b..271fe81ead 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/BooleanMetricProtocol.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/BooleanMetricProtocol.html @@ -1045,7 +1045,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/CounterMetricProtocol.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/CounterMetricProtocol.html index 0948a052b4..0d52a7f727 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/CounterMetricProtocol.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/CounterMetricProtocol.html @@ -1045,7 +1045,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/CustomDistributionMetricProtocol.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/CustomDistributionMetricProtocol.html index 011826dda2..4e9465abd5 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/CustomDistributionMetricProtocol.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/CustomDistributionMetricProtocol.html @@ -1072,7 +1072,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/DatetimeMetricProtocol.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/DatetimeMetricProtocol.html index d4d5f75d8c..a5f062f9dd 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/DatetimeMetricProtocol.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/DatetimeMetricProtocol.html @@ -1072,7 +1072,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/DenominatorMetricProtocol.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/DenominatorMetricProtocol.html index 90b9b8b0b3..a1e31b7842 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/DenominatorMetricProtocol.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/DenominatorMetricProtocol.html @@ -1045,7 +1045,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/EventExtras.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/EventExtras.html index dfb9d5506c..766f5361f6 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/EventExtras.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/EventExtras.html @@ -1000,7 +1000,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/EventMetricProtocol.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/EventMetricProtocol.html index cbf6964765..c88fc70cc1 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/EventMetricProtocol.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/EventMetricProtocol.html @@ -1045,7 +1045,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/GleanEventListener.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/GleanEventListener.html index 6be6acbe15..7fb789e119 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/GleanEventListener.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/GleanEventListener.html @@ -991,7 +991,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/LabeledBooleanProtocol.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/LabeledBooleanProtocol.html index 2aeab6618f..a7c0810219 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/LabeledBooleanProtocol.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/LabeledBooleanProtocol.html @@ -1018,7 +1018,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/LabeledCounterProtocol.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/LabeledCounterProtocol.html index cbb7c4bafe..4071a93591 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/LabeledCounterProtocol.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/LabeledCounterProtocol.html @@ -1018,7 +1018,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/LabeledStringProtocol.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/LabeledStringProtocol.html index e8b0b01873..c4026b929a 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/LabeledStringProtocol.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/LabeledStringProtocol.html @@ -1018,7 +1018,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/MemoryDistributionMetricProtocol.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/MemoryDistributionMetricProtocol.html index a2a8d43212..d93dc93081 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/MemoryDistributionMetricProtocol.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/MemoryDistributionMetricProtocol.html @@ -1072,7 +1072,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/NumeratorMetricProtocol.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/NumeratorMetricProtocol.html index 7c86357aa1..ee2486fb2d 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/NumeratorMetricProtocol.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/NumeratorMetricProtocol.html @@ -1045,7 +1045,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/ObjectMetricProtocol.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/ObjectMetricProtocol.html index 350c108597..269ccd316c 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/ObjectMetricProtocol.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/ObjectMetricProtocol.html @@ -1072,7 +1072,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/ObjectSerialize.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/ObjectSerialize.html index fd010b3b5b..bf09cf40a5 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/ObjectSerialize.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/ObjectSerialize.html @@ -993,7 +993,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/OnGleanEvents.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/OnGleanEvents.html index d5a48cca1d..199ed9493f 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/OnGleanEvents.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/OnGleanEvents.html @@ -1099,7 +1099,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/PingTypeProtocol.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/PingTypeProtocol.html index 1eb833e279..c7dfe5d5d1 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/PingTypeProtocol.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/PingTypeProtocol.html @@ -991,7 +991,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/QuantityMetricProtocol.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/QuantityMetricProtocol.html index 40a4469fa1..8c0f5f2e75 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/QuantityMetricProtocol.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/QuantityMetricProtocol.html @@ -1045,7 +1045,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/RateMetricProtocol.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/RateMetricProtocol.html index 9fc21dbf6f..aed50a2310 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/RateMetricProtocol.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/RateMetricProtocol.html @@ -1072,7 +1072,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/ReasonCodes.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/ReasonCodes.html index a9f5a9d987..2ac19d51ec 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/ReasonCodes.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/ReasonCodes.html @@ -995,7 +995,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/StringListMetricProtocol.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/StringListMetricProtocol.html index dc08b09cf0..62cb8a89e5 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/StringListMetricProtocol.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/StringListMetricProtocol.html @@ -1072,7 +1072,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/StringMetricProtocol.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/StringMetricProtocol.html index d60be2413b..968a5a70a0 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/StringMetricProtocol.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/StringMetricProtocol.html @@ -1045,7 +1045,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/TextMetricProtocol.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/TextMetricProtocol.html index f79e2de7ad..b85690c95b 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/TextMetricProtocol.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/TextMetricProtocol.html @@ -1045,7 +1045,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/TimespanMetricProtocol.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/TimespanMetricProtocol.html index f0f9f78411..30324e6e2e 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/TimespanMetricProtocol.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/TimespanMetricProtocol.html @@ -1126,7 +1126,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/TimingDistributionMetricProtocol.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/TimingDistributionMetricProtocol.html index 72abebb9a7..75e25404d9 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/TimingDistributionMetricProtocol.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/TimingDistributionMetricProtocol.html @@ -1153,7 +1153,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/UrlMetricProtocol.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/UrlMetricProtocol.html index ed71ed2f12..19f645f6b7 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/UrlMetricProtocol.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/UrlMetricProtocol.html @@ -1045,7 +1045,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/UuidMetricProtocol.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/UuidMetricProtocol.html index 4c7bb27d8e..907cb26069 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/UuidMetricProtocol.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Protocols/UuidMetricProtocol.html @@ -1072,7 +1072,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs.html index 5980cc04ee..3399e667cb 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs.html @@ -2619,7 +2619,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/BuildInfo.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/BuildInfo.html index ee688882f7..74c27e1fb7 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/BuildInfo.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/BuildInfo.html @@ -991,7 +991,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/ClientInfoMetrics.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/ClientInfoMetrics.html index 784904f731..1f9f5379a0 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/ClientInfoMetrics.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/ClientInfoMetrics.html @@ -1341,7 +1341,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/CommonMetricData.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/CommonMetricData.html index 3b63561e96..a41641d20a 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/CommonMetricData.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/CommonMetricData.html @@ -1206,7 +1206,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/Configuration.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/Configuration.html index 22c51540ae..2b8a036004 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/Configuration.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/Configuration.html @@ -1003,7 +1003,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/Datetime.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/Datetime.html index 300889bfbd..da554d8153 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/Datetime.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/Datetime.html @@ -1260,7 +1260,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/DistributionData.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/DistributionData.html index 6e80a259f3..2527129d24 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/DistributionData.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/DistributionData.html @@ -1125,7 +1125,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeBooleanMetric.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeBooleanMetric.html index 33b05fe3b6..ec0e54c1f8 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeBooleanMetric.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeBooleanMetric.html @@ -1072,7 +1072,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeCallbackError.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeCallbackError.html index b1ee004454..9eeeaa190d 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeCallbackError.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeCallbackError.html @@ -1018,7 +1018,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeClientInfoMetrics.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeClientInfoMetrics.html index 2446512cc6..82ee99d3e4 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeClientInfoMetrics.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeClientInfoMetrics.html @@ -1018,7 +1018,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeCommonMetricData.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeCommonMetricData.html index 1213b24997..6ab5b4fac6 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeCommonMetricData.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeCommonMetricData.html @@ -1018,7 +1018,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeCounterMetric.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeCounterMetric.html index 491a6a1624..1de6af10b7 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeCounterMetric.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeCounterMetric.html @@ -1072,7 +1072,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeCowString.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeCowString.html index 5f43097b32..e589b19be1 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeCowString.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeCowString.html @@ -1072,7 +1072,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeCustomDistributionMetric.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeCustomDistributionMetric.html index 20c95d3244..b6150de345 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeCustomDistributionMetric.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeCustomDistributionMetric.html @@ -1072,7 +1072,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeDatetime.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeDatetime.html index fbd24de9cd..5904679de9 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeDatetime.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeDatetime.html @@ -1018,7 +1018,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeDatetimeMetric.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeDatetimeMetric.html index d0c02b7b46..743f31352e 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeDatetimeMetric.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeDatetimeMetric.html @@ -1072,7 +1072,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeDenominatorMetric.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeDenominatorMetric.html index 0e4f7fb2e2..ef90b4b712 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeDenominatorMetric.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeDenominatorMetric.html @@ -1072,7 +1072,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeDistributionData.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeDistributionData.html index a5fab32731..1d815c00e2 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeDistributionData.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeDistributionData.html @@ -1018,7 +1018,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeErrorType.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeErrorType.html index 01671a848a..9effc527c0 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeErrorType.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeErrorType.html @@ -1018,7 +1018,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeEventMetric.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeEventMetric.html index a7bd98ec4a..b69dc696fe 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeEventMetric.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeEventMetric.html @@ -1072,7 +1072,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeHistogramType.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeHistogramType.html index ed81339d43..a309006711 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeHistogramType.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeHistogramType.html @@ -1018,7 +1018,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeInternalConfiguration.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeInternalConfiguration.html index ac2d846005..b77a96d05e 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeInternalConfiguration.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeInternalConfiguration.html @@ -1018,7 +1018,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeJsonValue.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeJsonValue.html index 5378de6d55..705017fa24 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeJsonValue.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeJsonValue.html @@ -1072,7 +1072,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeLabeledBoolean.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeLabeledBoolean.html index 8c6a8dc498..d854674408 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeLabeledBoolean.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeLabeledBoolean.html @@ -1072,7 +1072,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeLabeledCounter.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeLabeledCounter.html index 40d3459fb6..3fde556254 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeLabeledCounter.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeLabeledCounter.html @@ -1072,7 +1072,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeLabeledMetricData.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeLabeledMetricData.html index 8d47d8e705..739d28896c 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeLabeledMetricData.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeLabeledMetricData.html @@ -1018,7 +1018,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeLabeledString.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeLabeledString.html index af8e67c467..8f5b821f97 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeLabeledString.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeLabeledString.html @@ -1072,7 +1072,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeLevelFilter.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeLevelFilter.html index 000346be44..21368b3f77 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeLevelFilter.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeLevelFilter.html @@ -1018,7 +1018,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeLifetime.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeLifetime.html index d22a234650..4e34e10aa2 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeLifetime.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeLifetime.html @@ -1018,7 +1018,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeMemoryDistributionMetric.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeMemoryDistributionMetric.html index 3133b633e1..d165a68b6b 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeMemoryDistributionMetric.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeMemoryDistributionMetric.html @@ -1072,7 +1072,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeMemoryUnit.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeMemoryUnit.html index 4964d1c949..d1ba5f4276 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeMemoryUnit.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeMemoryUnit.html @@ -1018,7 +1018,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeNumeratorMetric.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeNumeratorMetric.html index 5a776a3849..646e20155a 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeNumeratorMetric.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeNumeratorMetric.html @@ -1072,7 +1072,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeObjectMetric.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeObjectMetric.html index 5355c37ac9..0884e416c6 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeObjectMetric.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeObjectMetric.html @@ -1072,7 +1072,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypePingRateLimit.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypePingRateLimit.html index 6b5d31bb4f..c85c2f3b13 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypePingRateLimit.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypePingRateLimit.html @@ -1018,7 +1018,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypePingRequest.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypePingRequest.html index fa22d2a6c0..2856dd87ec 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypePingRequest.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypePingRequest.html @@ -1018,7 +1018,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypePingType.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypePingType.html index 95d728cad6..fdcf7f0e37 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypePingType.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypePingType.html @@ -1072,7 +1072,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypePingUploadTask.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypePingUploadTask.html index ffc4af4355..91677c23fd 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypePingUploadTask.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypePingUploadTask.html @@ -1018,7 +1018,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeQuantityMetric.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeQuantityMetric.html index 096b0a0d60..c33394c6f3 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeQuantityMetric.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeQuantityMetric.html @@ -1072,7 +1072,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeRate.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeRate.html index 5c162f0973..08d48322df 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeRate.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeRate.html @@ -1018,7 +1018,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeRateMetric.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeRateMetric.html index 68177e1d6a..4101b8847a 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeRateMetric.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeRateMetric.html @@ -1072,7 +1072,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeRecordedEvent.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeRecordedEvent.html index 584c401630..d2138e5e0b 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeRecordedEvent.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeRecordedEvent.html @@ -1018,7 +1018,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeRecordedExperiment.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeRecordedExperiment.html index dae94a8fcc..65a3710934 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeRecordedExperiment.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeRecordedExperiment.html @@ -1018,7 +1018,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeStringListMetric.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeStringListMetric.html index fd50e8389a..1be26ba301 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeStringListMetric.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeStringListMetric.html @@ -1072,7 +1072,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeStringMetric.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeStringMetric.html index 8d3dfb8f07..71f2a719d0 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeStringMetric.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeStringMetric.html @@ -1072,7 +1072,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeTextMetric.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeTextMetric.html index 1c5cdde9d4..460dc088c2 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeTextMetric.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeTextMetric.html @@ -1072,7 +1072,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeTimeUnit.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeTimeUnit.html index d9ed293aed..36e0cb7938 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeTimeUnit.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeTimeUnit.html @@ -1018,7 +1018,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeTimerId.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeTimerId.html index 28aaafdb7a..c5bca9fe68 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeTimerId.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeTimerId.html @@ -1018,7 +1018,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeTimespanMetric.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeTimespanMetric.html index 6156db4d22..0f9dd17f2d 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeTimespanMetric.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeTimespanMetric.html @@ -1072,7 +1072,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeTimingDistributionMetric.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeTimingDistributionMetric.html index 80cf4c348c..f1da27bb57 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeTimingDistributionMetric.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeTimingDistributionMetric.html @@ -1072,7 +1072,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeUploadResult.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeUploadResult.html index 7b8cd8d714..0be5267304 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeUploadResult.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeUploadResult.html @@ -1018,7 +1018,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeUploadTaskAction.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeUploadTaskAction.html index 29b32ebd25..fff3fafad2 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeUploadTaskAction.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeUploadTaskAction.html @@ -1018,7 +1018,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeUrlMetric.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeUrlMetric.html index 22edd6cd13..e0922b0c74 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeUrlMetric.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeUrlMetric.html @@ -1072,7 +1072,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeUuidMetric.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeUuidMetric.html index f14e3f11fe..8936ecf1c9 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeUuidMetric.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/FfiConverterTypeUuidMetric.html @@ -1072,7 +1072,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/InternalConfiguration.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/InternalConfiguration.html index 8719179275..63b9f470a3 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/InternalConfiguration.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/InternalConfiguration.html @@ -1503,7 +1503,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/PingRateLimit.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/PingRateLimit.html index b88a9f80b7..a3112bca1a 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/PingRateLimit.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/PingRateLimit.html @@ -1098,7 +1098,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/PingRequest.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/PingRequest.html index eb956376ad..31142804c1 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/PingRequest.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/PingRequest.html @@ -1206,7 +1206,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/Rate.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/Rate.html index 68decc55f5..3e200b1fe2 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/Rate.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/Rate.html @@ -1098,7 +1098,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/RecordedEvent.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/RecordedEvent.html index fd1dd40cbd..893903f85b 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/RecordedEvent.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/RecordedEvent.html @@ -1152,7 +1152,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/RecordedExperiment.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/RecordedExperiment.html index 0a2c54f128..75542017b3 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/RecordedExperiment.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/RecordedExperiment.html @@ -1098,7 +1098,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/TimerId.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/TimerId.html index c260dcf055..1f0cf86437 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/TimerId.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Structs/TimerId.html @@ -1071,7 +1071,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/Typealiases.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/Typealiases.html index f5acd41cfc..2a62c39669 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/Typealiases.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/Typealiases.html @@ -1437,7 +1437,7 @@

    Declaration

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/index.html b/swift/docsets/Glean.docset/Contents/Resources/Documents/index.html index 3bf555f5ac..062d1c78a1 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/index.html +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/index.html @@ -969,7 +969,7 @@

    Overview

  • ./glean-core/python contains Python bindings.
  • -

    Note: The Glean SDK requires at least Rust 1.66.0. Older versions are untested.

    +

    Note: The Glean SDK requires at least Rust 1.76.0. Older versions are untested.

    Contact

    To contact us you can:

    @@ -1007,7 +1007,7 @@

    License

    diff --git a/swift/docsets/Glean.docset/Contents/Resources/Documents/search.json b/swift/docsets/Glean.docset/Contents/Resources/Documents/search.json index 64b9192684..3486900ad1 100644 --- a/swift/docsets/Glean.docset/Contents/Resources/Documents/search.json +++ b/swift/docsets/Glean.docset/Contents/Resources/Documents/search.json @@ -1 +1 @@ -{"Typealiases.html#/s:5Glean9CowStringa":{"name":"CowString","abstract":"

    Typealias from the type name used in the UDL file to the builtin type. This"},"Typealiases.html#/s:5Glean9JsonValuea":{"name":"JsonValue","abstract":"

    Typealias from the type name used in the UDL file to the builtin type. This"},"Typealiases.html#/s:5Glean0A7TimerIda":{"name":"GleanTimerId","abstract":"

    Public exported type identifying individual timers for TimingDistributionMetricType

    "},"Typealiases.html#/s:5Glean17BooleanMetricTypea":{"name":"BooleanMetricType","abstract":"

    This implements the developer facing API for recording boolean metrics.

    "},"Typealiases.html#/s:5Glean17CounterMetricTypea":{"name":"CounterMetricType","abstract":"

    This implements the developer facing API for recording counter metrics.

    "},"Typealiases.html#/s:5Glean28MemoryDistributionMetricTypea":{"name":"MemoryDistributionMetricType","abstract":"

    This implements the developer facing API for recording memory distribution metrics.

    "},"Typealiases.html#/s:5Glean18QuantityMetricTypea":{"name":"QuantityMetricType","abstract":"

    This implements the developer facing API for recording quantity metrics.

    "},"Typealiases.html#/s:5Glean14RateMetricTypea":{"name":"RateMetricType","abstract":"

    This implements the developer facing API for recording rate metrics.

    "},"Typealiases.html#/s:5Glean21DenominatorMetricTypea":{"name":"DenominatorMetricType","abstract":"

    This implements the developer facing API for recording a denominator of a rate metric,"},"Typealiases.html#/s:5Glean19NumeratorMetricTypea":{"name":"NumeratorMetricType","abstract":"

    This implements the developer facing API for recording the numerator of a rate metric"},"Typealiases.html#/s:5Glean20StringListMetricTypea":{"name":"StringListMetricType","abstract":"

    This implements the developer facing API for recording string list metrics.

    "},"Typealiases.html#/s:5Glean16StringMetricTypea":{"name":"StringMetricType","abstract":"

    This implements the developer facing API for recording string metrics.

    "},"Typealiases.html#/s:5Glean14TextMetricTypea":{"name":"TextMetricType","abstract":"

    This implements the developer facing API for recording text metrics.

    "},"Typealiases.html#/s:5Glean18TimespanMetricTypea":{"name":"TimespanMetricType","abstract":"

    This implements the developer facing API for recording timespan metrics.

    "},"Typealiases.html#/s:5Glean28TimingDistributionMetricTypea":{"name":"TimingDistributionMetricType","abstract":"

    This implements the developer facing API for recording timing distribution metrics.

    "},"Structs/BuildInfo.html#/s:5Glean9BuildInfoV9buildDateAC10Foundation0E10ComponentsV_tcfc":{"name":"init(buildDate:)","abstract":"

    Undocumented

    ","parent_name":"BuildInfo"},"Structs/FfiConverterTypeJsonValue.html#/s:5Glean25FfiConverterTypeJsonValueV4read4fromSS10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeJsonValue"},"Structs/FfiConverterTypeJsonValue.html#/s:5Glean25FfiConverterTypeJsonValueV5write_4intoySS_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeJsonValue"},"Structs/FfiConverterTypeJsonValue.html#/s:5Glean25FfiConverterTypeJsonValueV4liftySSSo10RustBufferVKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeJsonValue"},"Structs/FfiConverterTypeJsonValue.html#/s:5Glean25FfiConverterTypeJsonValueV5lowerySo10RustBufferVSSFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeJsonValue"},"Structs/FfiConverterTypeCowString.html#/s:5Glean25FfiConverterTypeCowStringV4read4fromSS10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeCowString"},"Structs/FfiConverterTypeCowString.html#/s:5Glean25FfiConverterTypeCowStringV5write_4intoySS_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeCowString"},"Structs/FfiConverterTypeCowString.html#/s:5Glean25FfiConverterTypeCowStringV4liftySSSo10RustBufferVKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeCowString"},"Structs/FfiConverterTypeCowString.html#/s:5Glean25FfiConverterTypeCowStringV5lowerySo10RustBufferVSSFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeCowString"},"Structs/FfiConverterTypeUploadTaskAction.html#/s:5Glean32FfiConverterTypeUploadTaskActionV4read4fromAA0efG0O10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeUploadTaskAction"},"Structs/FfiConverterTypeUploadTaskAction.html#/s:5Glean32FfiConverterTypeUploadTaskActionV5write_4intoyAA0efG0O_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeUploadTaskAction"},"Structs/FfiConverterTypeUploadResult.html#/s:5Glean28FfiConverterTypeUploadResultV4read4fromAA0eF0O10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeUploadResult"},"Structs/FfiConverterTypeUploadResult.html#/s:5Glean28FfiConverterTypeUploadResultV5write_4intoyAA0eF0O_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeUploadResult"},"Structs/FfiConverterTypeTimeUnit.html#/s:5Glean24FfiConverterTypeTimeUnitV4read4fromAA0eF0O10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeTimeUnit"},"Structs/FfiConverterTypeTimeUnit.html#/s:5Glean24FfiConverterTypeTimeUnitV5write_4intoyAA0eF0O_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeTimeUnit"},"Structs/FfiConverterTypePingUploadTask.html#/s:5Glean30FfiConverterTypePingUploadTaskV4read4fromAA0efG0O10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypePingUploadTask"},"Structs/FfiConverterTypePingUploadTask.html#/s:5Glean30FfiConverterTypePingUploadTaskV5write_4intoyAA0efG0O_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypePingUploadTask"},"Structs/FfiConverterTypeMemoryUnit.html#/s:5Glean26FfiConverterTypeMemoryUnitV4read4fromAA0eF0O10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeMemoryUnit"},"Structs/FfiConverterTypeMemoryUnit.html#/s:5Glean26FfiConverterTypeMemoryUnitV5write_4intoyAA0eF0O_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeMemoryUnit"},"Structs/FfiConverterTypeLifetime.html#/s:5Glean24FfiConverterTypeLifetimeV4read4fromAA0E0O10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLifetime"},"Structs/FfiConverterTypeLifetime.html#/s:5Glean24FfiConverterTypeLifetimeV5write_4intoyAA0E0O_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLifetime"},"Structs/FfiConverterTypeLevelFilter.html#/s:5Glean27FfiConverterTypeLevelFilterV4read4fromAA0eF0O10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLevelFilter"},"Structs/FfiConverterTypeLevelFilter.html#/s:5Glean27FfiConverterTypeLevelFilterV5write_4intoyAA0eF0O_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLevelFilter"},"Structs/FfiConverterTypeLabeledMetricData.html#/s:5Glean33FfiConverterTypeLabeledMetricDataV4read4fromAA0efG0O10Foundation0G0V4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLabeledMetricData"},"Structs/FfiConverterTypeLabeledMetricData.html#/s:5Glean33FfiConverterTypeLabeledMetricDataV5write_4intoyAA0efG0O_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLabeledMetricData"},"Structs/FfiConverterTypeHistogramType.html#/s:5Glean025FfiConverterTypeHistogramD0V4read4fromAA0eD0O10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeHistogramType"},"Structs/FfiConverterTypeHistogramType.html#/s:5Glean025FfiConverterTypeHistogramD0V5write_4intoyAA0eD0O_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeHistogramType"},"Structs/FfiConverterTypeErrorType.html#/s:5Glean021FfiConverterTypeErrorD0V4read4fromAA0eD0O10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeErrorType"},"Structs/FfiConverterTypeErrorType.html#/s:5Glean021FfiConverterTypeErrorD0V5write_4intoyAA0eD0O_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeErrorType"},"Structs/FfiConverterTypeCallbackError.html#/s:5Glean29FfiConverterTypeCallbackErrorV4read4fromAA0eF0O10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeCallbackError"},"Structs/FfiConverterTypeCallbackError.html#/s:5Glean29FfiConverterTypeCallbackErrorV5write_4intoyAA0eF0O_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeCallbackError"},"Structs/FfiConverterTypeTimerId.html#/s:5Glean23FfiConverterTypeTimerIdV4read4fromAA0eF0V10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeTimerId"},"Structs/FfiConverterTypeTimerId.html#/s:5Glean23FfiConverterTypeTimerIdV5write_4intoyAA0eF0V_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeTimerId"},"Structs/TimerId.html#/s:5Glean7TimerIdV2ids6UInt64Vvp":{"name":"id","abstract":"

    Undocumented

    ","parent_name":"TimerId"},"Structs/TimerId.html#/s:5Glean7TimerIdV2idACs6UInt64V_tcfc":{"name":"init(id:)","abstract":"

    Undocumented

    ","parent_name":"TimerId"},"Structs/TimerId.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"TimerId"},"Structs/TimerId.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"TimerId"},"Structs/FfiConverterTypeRecordedExperiment.html#/s:5Glean34FfiConverterTypeRecordedExperimentV4read4fromAA0eF0V10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeRecordedExperiment"},"Structs/FfiConverterTypeRecordedExperiment.html#/s:5Glean34FfiConverterTypeRecordedExperimentV5write_4intoyAA0eF0V_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeRecordedExperiment"},"Structs/RecordedExperiment.html#/s:5Glean18RecordedExperimentV6branchSSvp":{"name":"branch","abstract":"

    Undocumented

    ","parent_name":"RecordedExperiment"},"Structs/RecordedExperiment.html#/s:5Glean18RecordedExperimentV5extraSDyS2SGSgvp":{"name":"extra","abstract":"

    Undocumented

    ","parent_name":"RecordedExperiment"},"Structs/RecordedExperiment.html#/s:5Glean18RecordedExperimentV6branch5extraACSS_SDyS2SGSgtcfc":{"name":"init(branch:extra:)","abstract":"

    Undocumented

    ","parent_name":"RecordedExperiment"},"Structs/RecordedExperiment.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"RecordedExperiment"},"Structs/RecordedExperiment.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"RecordedExperiment"},"Structs/FfiConverterTypeRecordedEvent.html#/s:5Glean29FfiConverterTypeRecordedEventV4read4fromAA0eF0V10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeRecordedEvent"},"Structs/FfiConverterTypeRecordedEvent.html#/s:5Glean29FfiConverterTypeRecordedEventV5write_4intoyAA0eF0V_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeRecordedEvent"},"Structs/RecordedEvent.html#/s:5Glean13RecordedEventV9timestamps6UInt64Vvp":{"name":"timestamp","abstract":"

    Undocumented

    ","parent_name":"RecordedEvent"},"Structs/RecordedEvent.html#/s:5Glean13RecordedEventV8categorySSvp":{"name":"category","abstract":"

    Undocumented

    ","parent_name":"RecordedEvent"},"Structs/RecordedEvent.html#/s:5Glean13RecordedEventV4nameSSvp":{"name":"name","abstract":"

    Undocumented

    ","parent_name":"RecordedEvent"},"Structs/RecordedEvent.html#/s:5Glean13RecordedEventV5extraSDyS2SGSgvp":{"name":"extra","abstract":"

    Undocumented

    ","parent_name":"RecordedEvent"},"Structs/RecordedEvent.html#/s:5Glean13RecordedEventV9timestamp8category4name5extraACs6UInt64V_S2SSDyS2SGSgtcfc":{"name":"init(timestamp:category:name:extra:)","abstract":"

    Undocumented

    ","parent_name":"RecordedEvent"},"Structs/RecordedEvent.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"RecordedEvent"},"Structs/RecordedEvent.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"RecordedEvent"},"Structs/FfiConverterTypeRate.html#/s:5Glean20FfiConverterTypeRateV4read4fromAA0E0V10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeRate"},"Structs/FfiConverterTypeRate.html#/s:5Glean20FfiConverterTypeRateV5write_4intoyAA0E0V_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeRate"},"Structs/Rate.html#/s:5Glean4RateV9numerators5Int32Vvp":{"name":"numerator","abstract":"

    Undocumented

    ","parent_name":"Rate"},"Structs/Rate.html#/s:5Glean4RateV11denominators5Int32Vvp":{"name":"denominator","abstract":"

    Undocumented

    ","parent_name":"Rate"},"Structs/Rate.html#/s:5Glean4RateV9numerator11denominatorACs5Int32V_AGtcfc":{"name":"init(numerator:denominator:)","abstract":"

    Undocumented

    ","parent_name":"Rate"},"Structs/Rate.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"Rate"},"Structs/Rate.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"Rate"},"Structs/FfiConverterTypePingRequest.html#/s:5Glean27FfiConverterTypePingRequestV4read4fromAA0eF0V10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypePingRequest"},"Structs/FfiConverterTypePingRequest.html#/s:5Glean27FfiConverterTypePingRequestV5write_4intoyAA0eF0V_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypePingRequest"},"Structs/PingRequest.html#/s:5Glean11PingRequestV10documentIdSSvp":{"name":"documentId","abstract":"

    Undocumented

    ","parent_name":"PingRequest"},"Structs/PingRequest.html#/s:5Glean11PingRequestV4pathSSvp":{"name":"path","abstract":"

    Undocumented

    ","parent_name":"PingRequest"},"Structs/PingRequest.html#/s:5Glean11PingRequestV4bodySays5UInt8VGvp":{"name":"body","abstract":"

    Undocumented

    ","parent_name":"PingRequest"},"Structs/PingRequest.html#/s:5Glean11PingRequestV7headersSDyS2SGvp":{"name":"headers","abstract":"

    Undocumented

    ","parent_name":"PingRequest"},"Structs/PingRequest.html#/s:5Glean11PingRequestV19bodyHasInfoSectionsSbvp":{"name":"bodyHasInfoSections","abstract":"

    Undocumented

    ","parent_name":"PingRequest"},"Structs/PingRequest.html#/s:5Glean11PingRequestV8pingNameSSvp":{"name":"pingName","abstract":"

    Undocumented

    ","parent_name":"PingRequest"},"Structs/PingRequest.html#/s:5Glean11PingRequestV10documentId4path4body7headers0G15HasInfoSections8pingNameACSS_SSSays5UInt8VGSDyS2SGSbSStcfc":{"name":"init(documentId:path:body:headers:bodyHasInfoSections:pingName:)","abstract":"

    Undocumented

    ","parent_name":"PingRequest"},"Structs/PingRequest.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"PingRequest"},"Structs/PingRequest.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"PingRequest"},"Structs/FfiConverterTypePingRateLimit.html#/s:5Glean29FfiConverterTypePingRateLimitV4read4fromAA0efG0V10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypePingRateLimit"},"Structs/FfiConverterTypePingRateLimit.html#/s:5Glean29FfiConverterTypePingRateLimitV5write_4intoyAA0efG0V_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypePingRateLimit"},"Structs/PingRateLimit.html#/s:5Glean13PingRateLimitV18secondsPerIntervals6UInt64Vvp":{"name":"secondsPerInterval","abstract":"

    Undocumented

    ","parent_name":"PingRateLimit"},"Structs/PingRateLimit.html#/s:5Glean13PingRateLimitV16pingsPerIntervals6UInt32Vvp":{"name":"pingsPerInterval","abstract":"

    Undocumented

    ","parent_name":"PingRateLimit"},"Structs/PingRateLimit.html#/s:5Glean13PingRateLimitV18secondsPerInterval05pingsfG0ACs6UInt64V_s6UInt32Vtcfc":{"name":"init(secondsPerInterval:pingsPerInterval:)","abstract":"

    Undocumented

    ","parent_name":"PingRateLimit"},"Structs/PingRateLimit.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"PingRateLimit"},"Structs/PingRateLimit.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"PingRateLimit"},"Structs/FfiConverterTypeInternalConfiguration.html#/s:5Glean37FfiConverterTypeInternalConfigurationV4read4fromAA0eF0V10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeInternalConfiguration"},"Structs/FfiConverterTypeInternalConfiguration.html#/s:5Glean37FfiConverterTypeInternalConfigurationV5write_4intoyAA0eF0V_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeInternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV8dataPathSSvp":{"name":"dataPath","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV13applicationIdSSvp":{"name":"applicationId","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV19languageBindingNameSSvp":{"name":"languageBindingName","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV13uploadEnabledSbvp":{"name":"uploadEnabled","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV9maxEventss6UInt32VSgvp":{"name":"maxEvents","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV19delayPingLifetimeIoSbvp":{"name":"delayPingLifetimeIo","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV8appBuildSSvp":{"name":"appBuild","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV10useCoreMpsSbvp":{"name":"useCoreMps","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV25trimDataToRegisteredPingsSbvp":{"name":"trimDataToRegisteredPings","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV8logLevelAA0E6FilterOSgvp":{"name":"logLevel","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV9rateLimitAA08PingRateE0VSgvp":{"name":"rateLimit","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV21enableEventTimestampsSbvp":{"name":"enableEventTimestamps","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV17experimentationIdSSSgvp":{"name":"experimentationId","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV06enableB5PingsSbvp":{"name":"enableInternalPings","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV12pingScheduleSDySSSaySSGGvp":{"name":"pingSchedule","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV21pingLifetimeThresholds6UInt64Vvp":{"name":"pingLifetimeThreshold","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV19pingLifetimeMaxTimes6UInt64Vvp":{"name":"pingLifetimeMaxTime","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV8dataPath13applicationId19languageBindingName13uploadEnabled9maxEvents19delayPingLifetimeIo8appBuild10useCoreMps25trimDataToRegisteredPings8logLevel9rateLimit21enableEventTimestamps015experimentationG006enableB5Pings12pingSchedule04pingQ9Threshold04pingQ7MaxTimeACSS_S2SSbs6UInt32VSgSbSSS2bAA11LevelFilterOSgAA0P9RateLimitVSgSbSSSgSbSDySSSaySSGGs6UInt64VA6_tcfc":{"name":"init(dataPath:applicationId:languageBindingName:uploadEnabled:maxEvents:delayPingLifetimeIo:appBuild:useCoreMps:trimDataToRegisteredPings:logLevel:rateLimit:enableEventTimestamps:experimentationId:enableInternalPings:pingSchedule:pingLifetimeThreshold:pingLifetimeMaxTime:)","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"InternalConfiguration"},"Structs/FfiConverterTypeDistributionData.html#/s:5Glean32FfiConverterTypeDistributionDataV4read4fromAA0eF0V10Foundation0F0V4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeDistributionData"},"Structs/FfiConverterTypeDistributionData.html#/s:5Glean32FfiConverterTypeDistributionDataV5write_4intoyAA0eF0V_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeDistributionData"},"Structs/DistributionData.html#/s:5Glean16DistributionDataV6valuesSDys5Int64VAFGvp":{"name":"values","abstract":"

    Undocumented

    ","parent_name":"DistributionData"},"Structs/DistributionData.html#/s:5Glean16DistributionDataV3sums5Int64Vvp":{"name":"sum","abstract":"

    Undocumented

    ","parent_name":"DistributionData"},"Structs/DistributionData.html#/s:5Glean16DistributionDataV5counts5Int64Vvp":{"name":"count","abstract":"

    Undocumented

    ","parent_name":"DistributionData"},"Structs/DistributionData.html#/s:5Glean16DistributionDataV6values3sum5countACSDys5Int64VAHG_A2Htcfc":{"name":"init(values:sum:count:)","abstract":"

    Undocumented

    ","parent_name":"DistributionData"},"Structs/DistributionData.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"DistributionData"},"Structs/DistributionData.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"DistributionData"},"Structs/FfiConverterTypeDatetime.html#/s:5Glean24FfiConverterTypeDatetimeV4read4fromAA0E0V10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeDatetime"},"Structs/FfiConverterTypeDatetime.html#/s:5Glean24FfiConverterTypeDatetimeV5write_4intoyAA0E0V_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeDatetime"},"Structs/Datetime.html#/s:5Glean8DatetimeV4years5Int32Vvp":{"name":"year","abstract":"

    Undocumented

    ","parent_name":"Datetime"},"Structs/Datetime.html#/s:5Glean8DatetimeV5months6UInt32Vvp":{"name":"month","abstract":"

    Undocumented

    ","parent_name":"Datetime"},"Structs/Datetime.html#/s:5Glean8DatetimeV3days6UInt32Vvp":{"name":"day","abstract":"

    Undocumented

    ","parent_name":"Datetime"},"Structs/Datetime.html#/s:5Glean8DatetimeV4hours6UInt32Vvp":{"name":"hour","abstract":"

    Undocumented

    ","parent_name":"Datetime"},"Structs/Datetime.html#/s:5Glean8DatetimeV6minutes6UInt32Vvp":{"name":"minute","abstract":"

    Undocumented

    ","parent_name":"Datetime"},"Structs/Datetime.html#/s:5Glean8DatetimeV6seconds6UInt32Vvp":{"name":"second","abstract":"

    Undocumented

    ","parent_name":"Datetime"},"Structs/Datetime.html#/s:5Glean8DatetimeV10nanoseconds6UInt32Vvp":{"name":"nanosecond","abstract":"

    Undocumented

    ","parent_name":"Datetime"},"Structs/Datetime.html#/s:5Glean8DatetimeV13offsetSecondss5Int32Vvp":{"name":"offsetSeconds","abstract":"

    Undocumented

    ","parent_name":"Datetime"},"Structs/Datetime.html#/s:5Glean8DatetimeV4year5month3day4hour6minute6second10nanosecond13offsetSecondsACs5Int32V_s6UInt32VA5oMtcfc":{"name":"init(year:month:day:hour:minute:second:nanosecond:offsetSeconds:)","abstract":"

    Undocumented

    ","parent_name":"Datetime"},"Structs/Datetime.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"Datetime"},"Structs/Datetime.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"Datetime"},"Structs/FfiConverterTypeCommonMetricData.html#/s:5Glean32FfiConverterTypeCommonMetricDataV4read4fromAA0efG0V10Foundation0G0V4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeCommonMetricData"},"Structs/FfiConverterTypeCommonMetricData.html#/s:5Glean32FfiConverterTypeCommonMetricDataV5write_4intoyAA0efG0V_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeCommonMetricData"},"Structs/CommonMetricData.html#/s:5Glean16CommonMetricDataV8categorySSvp":{"name":"category","abstract":"

    Undocumented

    ","parent_name":"CommonMetricData"},"Structs/CommonMetricData.html#/s:5Glean16CommonMetricDataV4nameSSvp":{"name":"name","abstract":"

    Undocumented

    ","parent_name":"CommonMetricData"},"Structs/CommonMetricData.html#/s:5Glean16CommonMetricDataV11sendInPingsSaySSGvp":{"name":"sendInPings","abstract":"

    Undocumented

    ","parent_name":"CommonMetricData"},"Structs/CommonMetricData.html#/s:5Glean16CommonMetricDataV8lifetimeAA8LifetimeOvp":{"name":"lifetime","abstract":"

    Undocumented

    ","parent_name":"CommonMetricData"},"Structs/CommonMetricData.html#/s:5Glean16CommonMetricDataV8disabledSbvp":{"name":"disabled","abstract":"

    Undocumented

    ","parent_name":"CommonMetricData"},"Structs/CommonMetricData.html#/s:5Glean16CommonMetricDataV12dynamicLabelSSSgvp":{"name":"dynamicLabel","abstract":"

    Undocumented

    ","parent_name":"CommonMetricData"},"Structs/CommonMetricData.html#/s:5Glean16CommonMetricDataV8category4name11sendInPings8lifetime8disabled12dynamicLabelACSS_SSSaySSGAA8LifetimeOSbSSSgtcfc":{"name":"init(category:name:sendInPings:lifetime:disabled:dynamicLabel:)","abstract":"

    Undocumented

    ","parent_name":"CommonMetricData"},"Structs/CommonMetricData.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"CommonMetricData"},"Structs/CommonMetricData.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"CommonMetricData"},"Structs/FfiConverterTypeClientInfoMetrics.html#/s:5Glean33FfiConverterTypeClientInfoMetricsV4read4fromAA0efG0V10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeClientInfoMetrics"},"Structs/FfiConverterTypeClientInfoMetrics.html#/s:5Glean33FfiConverterTypeClientInfoMetricsV5write_4intoyAA0efG0V_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeClientInfoMetrics"},"Structs/ClientInfoMetrics.html#/s:5Glean17ClientInfoMetricsV8appBuildSSvp":{"name":"appBuild","abstract":"

    Undocumented

    ","parent_name":"ClientInfoMetrics"},"Structs/ClientInfoMetrics.html#/s:5Glean17ClientInfoMetricsV17appDisplayVersionSSvp":{"name":"appDisplayVersion","abstract":"

    Undocumented

    ","parent_name":"ClientInfoMetrics"},"Structs/ClientInfoMetrics.html#/s:5Glean17ClientInfoMetricsV12appBuildDateAA8DatetimeVvp":{"name":"appBuildDate","abstract":"

    Undocumented

    ","parent_name":"ClientInfoMetrics"},"Structs/ClientInfoMetrics.html#/s:5Glean17ClientInfoMetricsV12architectureSSvp":{"name":"architecture","abstract":"

    Undocumented

    ","parent_name":"ClientInfoMetrics"},"Structs/ClientInfoMetrics.html#/s:5Glean17ClientInfoMetricsV9osVersionSSvp":{"name":"osVersion","abstract":"

    Undocumented

    ","parent_name":"ClientInfoMetrics"},"Structs/ClientInfoMetrics.html#/s:5Glean17ClientInfoMetricsV7channelSSSgvp":{"name":"channel","abstract":"

    Undocumented

    ","parent_name":"ClientInfoMetrics"},"Structs/ClientInfoMetrics.html#/s:5Glean17ClientInfoMetricsV6localeSSSgvp":{"name":"locale","abstract":"

    Undocumented

    ","parent_name":"ClientInfoMetrics"},"Structs/ClientInfoMetrics.html#/s:5Glean17ClientInfoMetricsV18deviceManufacturerSSSgvp":{"name":"deviceManufacturer","abstract":"

    Undocumented

    ","parent_name":"ClientInfoMetrics"},"Structs/ClientInfoMetrics.html#/s:5Glean17ClientInfoMetricsV11deviceModelSSSgvp":{"name":"deviceModel","abstract":"

    Undocumented

    ","parent_name":"ClientInfoMetrics"},"Structs/ClientInfoMetrics.html#/s:5Glean17ClientInfoMetricsV17androidSdkVersionSSSgvp":{"name":"androidSdkVersion","abstract":"

    Undocumented

    ","parent_name":"ClientInfoMetrics"},"Structs/ClientInfoMetrics.html#/s:5Glean17ClientInfoMetricsV18windowsBuildNumbers5Int64VSgvp":{"name":"windowsBuildNumber","abstract":"

    Undocumented

    ","parent_name":"ClientInfoMetrics"},"Structs/ClientInfoMetrics.html#/s:5Glean17ClientInfoMetricsV8appBuild0E14DisplayVersion0eF4Date12architecture02osH07channel6locale18deviceManufacturer0N5Model010androidSdkH007windowsF6NumberACSS_SSAA8DatetimeVS3SSgA4Qs5Int64VSgtcfc":{"name":"init(appBuild:appDisplayVersion:appBuildDate:architecture:osVersion:channel:locale:deviceManufacturer:deviceModel:androidSdkVersion:windowsBuildNumber:)","abstract":"

    Undocumented

    ","parent_name":"ClientInfoMetrics"},"Structs/ClientInfoMetrics.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"ClientInfoMetrics"},"Structs/ClientInfoMetrics.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"ClientInfoMetrics"},"Structs/FfiConverterTypeUuidMetric.html#/s:5Glean26FfiConverterTypeUuidMetricV4liftyAA0eF0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeUuidMetric"},"Structs/FfiConverterTypeUuidMetric.html#/s:5Glean26FfiConverterTypeUuidMetricV5lowerySvAA0eF0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeUuidMetric"},"Structs/FfiConverterTypeUuidMetric.html#/s:5Glean26FfiConverterTypeUuidMetricV4read4fromAA0eF0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeUuidMetric"},"Structs/FfiConverterTypeUuidMetric.html#/s:5Glean26FfiConverterTypeUuidMetricV5write_4intoyAA0eF0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeUuidMetric"},"Structs/FfiConverterTypeUrlMetric.html#/s:5Glean25FfiConverterTypeUrlMetricV4liftyAA0eF0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeUrlMetric"},"Structs/FfiConverterTypeUrlMetric.html#/s:5Glean25FfiConverterTypeUrlMetricV5lowerySvAA0eF0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeUrlMetric"},"Structs/FfiConverterTypeUrlMetric.html#/s:5Glean25FfiConverterTypeUrlMetricV4read4fromAA0eF0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeUrlMetric"},"Structs/FfiConverterTypeUrlMetric.html#/s:5Glean25FfiConverterTypeUrlMetricV5write_4intoyAA0eF0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeUrlMetric"},"Structs/FfiConverterTypeTimingDistributionMetric.html#/s:5Glean40FfiConverterTypeTimingDistributionMetricV4liftyAA0efG0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeTimingDistributionMetric"},"Structs/FfiConverterTypeTimingDistributionMetric.html#/s:5Glean40FfiConverterTypeTimingDistributionMetricV5lowerySvAA0efG0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeTimingDistributionMetric"},"Structs/FfiConverterTypeTimingDistributionMetric.html#/s:5Glean40FfiConverterTypeTimingDistributionMetricV4read4fromAA0efG0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeTimingDistributionMetric"},"Structs/FfiConverterTypeTimingDistributionMetric.html#/s:5Glean40FfiConverterTypeTimingDistributionMetricV5write_4intoyAA0efG0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeTimingDistributionMetric"},"Structs/FfiConverterTypeTimespanMetric.html#/s:5Glean30FfiConverterTypeTimespanMetricV4liftyAA0eF0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeTimespanMetric"},"Structs/FfiConverterTypeTimespanMetric.html#/s:5Glean30FfiConverterTypeTimespanMetricV5lowerySvAA0eF0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeTimespanMetric"},"Structs/FfiConverterTypeTimespanMetric.html#/s:5Glean30FfiConverterTypeTimespanMetricV4read4fromAA0eF0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeTimespanMetric"},"Structs/FfiConverterTypeTimespanMetric.html#/s:5Glean30FfiConverterTypeTimespanMetricV5write_4intoyAA0eF0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeTimespanMetric"},"Structs/FfiConverterTypeTextMetric.html#/s:5Glean26FfiConverterTypeTextMetricV4liftyAA0eF0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeTextMetric"},"Structs/FfiConverterTypeTextMetric.html#/s:5Glean26FfiConverterTypeTextMetricV5lowerySvAA0eF0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeTextMetric"},"Structs/FfiConverterTypeTextMetric.html#/s:5Glean26FfiConverterTypeTextMetricV4read4fromAA0eF0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeTextMetric"},"Structs/FfiConverterTypeTextMetric.html#/s:5Glean26FfiConverterTypeTextMetricV5write_4intoyAA0eF0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeTextMetric"},"Structs/FfiConverterTypeStringMetric.html#/s:5Glean28FfiConverterTypeStringMetricV4liftyAA0eF0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeStringMetric"},"Structs/FfiConverterTypeStringMetric.html#/s:5Glean28FfiConverterTypeStringMetricV5lowerySvAA0eF0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeStringMetric"},"Structs/FfiConverterTypeStringMetric.html#/s:5Glean28FfiConverterTypeStringMetricV4read4fromAA0eF0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeStringMetric"},"Structs/FfiConverterTypeStringMetric.html#/s:5Glean28FfiConverterTypeStringMetricV5write_4intoyAA0eF0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeStringMetric"},"Structs/FfiConverterTypeStringListMetric.html#/s:5Glean32FfiConverterTypeStringListMetricV4liftyAA0efG0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeStringListMetric"},"Structs/FfiConverterTypeStringListMetric.html#/s:5Glean32FfiConverterTypeStringListMetricV5lowerySvAA0efG0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeStringListMetric"},"Structs/FfiConverterTypeStringListMetric.html#/s:5Glean32FfiConverterTypeStringListMetricV4read4fromAA0efG0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeStringListMetric"},"Structs/FfiConverterTypeStringListMetric.html#/s:5Glean32FfiConverterTypeStringListMetricV5write_4intoyAA0efG0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeStringListMetric"},"Structs/FfiConverterTypeRateMetric.html#/s:5Glean26FfiConverterTypeRateMetricV4liftyAA0eF0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeRateMetric"},"Structs/FfiConverterTypeRateMetric.html#/s:5Glean26FfiConverterTypeRateMetricV5lowerySvAA0eF0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeRateMetric"},"Structs/FfiConverterTypeRateMetric.html#/s:5Glean26FfiConverterTypeRateMetricV4read4fromAA0eF0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeRateMetric"},"Structs/FfiConverterTypeRateMetric.html#/s:5Glean26FfiConverterTypeRateMetricV5write_4intoyAA0eF0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeRateMetric"},"Structs/FfiConverterTypeQuantityMetric.html#/s:5Glean30FfiConverterTypeQuantityMetricV4liftyAA0eF0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeQuantityMetric"},"Structs/FfiConverterTypeQuantityMetric.html#/s:5Glean30FfiConverterTypeQuantityMetricV5lowerySvAA0eF0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeQuantityMetric"},"Structs/FfiConverterTypeQuantityMetric.html#/s:5Glean30FfiConverterTypeQuantityMetricV4read4fromAA0eF0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeQuantityMetric"},"Structs/FfiConverterTypeQuantityMetric.html#/s:5Glean30FfiConverterTypeQuantityMetricV5write_4intoyAA0eF0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeQuantityMetric"},"Structs/FfiConverterTypePingType.html#/s:5Glean020FfiConverterTypePingD0V4liftyAA0eD0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypePingType"},"Structs/FfiConverterTypePingType.html#/s:5Glean020FfiConverterTypePingD0V5lowerySvAA0eD0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypePingType"},"Structs/FfiConverterTypePingType.html#/s:5Glean020FfiConverterTypePingD0V4read4fromAA0eD0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypePingType"},"Structs/FfiConverterTypePingType.html#/s:5Glean020FfiConverterTypePingD0V5write_4intoyAA0eD0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypePingType"},"Structs/FfiConverterTypeObjectMetric.html#/s:5Glean28FfiConverterTypeObjectMetricV4liftyAA0eF0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeObjectMetric"},"Structs/FfiConverterTypeObjectMetric.html#/s:5Glean28FfiConverterTypeObjectMetricV5lowerySvAA0eF0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeObjectMetric"},"Structs/FfiConverterTypeObjectMetric.html#/s:5Glean28FfiConverterTypeObjectMetricV4read4fromAA0eF0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeObjectMetric"},"Structs/FfiConverterTypeObjectMetric.html#/s:5Glean28FfiConverterTypeObjectMetricV5write_4intoyAA0eF0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeObjectMetric"},"Structs/FfiConverterTypeNumeratorMetric.html#/s:5Glean31FfiConverterTypeNumeratorMetricV4liftyAA0eF0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeNumeratorMetric"},"Structs/FfiConverterTypeNumeratorMetric.html#/s:5Glean31FfiConverterTypeNumeratorMetricV5lowerySvAA0eF0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeNumeratorMetric"},"Structs/FfiConverterTypeNumeratorMetric.html#/s:5Glean31FfiConverterTypeNumeratorMetricV4read4fromAA0eF0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeNumeratorMetric"},"Structs/FfiConverterTypeNumeratorMetric.html#/s:5Glean31FfiConverterTypeNumeratorMetricV5write_4intoyAA0eF0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeNumeratorMetric"},"Structs/FfiConverterTypeMemoryDistributionMetric.html#/s:5Glean40FfiConverterTypeMemoryDistributionMetricV4liftyAA0efG0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeMemoryDistributionMetric"},"Structs/FfiConverterTypeMemoryDistributionMetric.html#/s:5Glean40FfiConverterTypeMemoryDistributionMetricV5lowerySvAA0efG0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeMemoryDistributionMetric"},"Structs/FfiConverterTypeMemoryDistributionMetric.html#/s:5Glean40FfiConverterTypeMemoryDistributionMetricV4read4fromAA0efG0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeMemoryDistributionMetric"},"Structs/FfiConverterTypeMemoryDistributionMetric.html#/s:5Glean40FfiConverterTypeMemoryDistributionMetricV5write_4intoyAA0efG0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeMemoryDistributionMetric"},"Structs/FfiConverterTypeLabeledString.html#/s:5Glean29FfiConverterTypeLabeledStringV4liftyAA0eF0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLabeledString"},"Structs/FfiConverterTypeLabeledString.html#/s:5Glean29FfiConverterTypeLabeledStringV5lowerySvAA0eF0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLabeledString"},"Structs/FfiConverterTypeLabeledString.html#/s:5Glean29FfiConverterTypeLabeledStringV4read4fromAA0eF0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLabeledString"},"Structs/FfiConverterTypeLabeledString.html#/s:5Glean29FfiConverterTypeLabeledStringV5write_4intoyAA0eF0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLabeledString"},"Structs/FfiConverterTypeLabeledCounter.html#/s:5Glean30FfiConverterTypeLabeledCounterV4liftyAA0eF0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLabeledCounter"},"Structs/FfiConverterTypeLabeledCounter.html#/s:5Glean30FfiConverterTypeLabeledCounterV5lowerySvAA0eF0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLabeledCounter"},"Structs/FfiConverterTypeLabeledCounter.html#/s:5Glean30FfiConverterTypeLabeledCounterV4read4fromAA0eF0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLabeledCounter"},"Structs/FfiConverterTypeLabeledCounter.html#/s:5Glean30FfiConverterTypeLabeledCounterV5write_4intoyAA0eF0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLabeledCounter"},"Structs/FfiConverterTypeLabeledBoolean.html#/s:5Glean30FfiConverterTypeLabeledBooleanV4liftyAA0eF0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLabeledBoolean"},"Structs/FfiConverterTypeLabeledBoolean.html#/s:5Glean30FfiConverterTypeLabeledBooleanV5lowerySvAA0eF0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLabeledBoolean"},"Structs/FfiConverterTypeLabeledBoolean.html#/s:5Glean30FfiConverterTypeLabeledBooleanV4read4fromAA0eF0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLabeledBoolean"},"Structs/FfiConverterTypeLabeledBoolean.html#/s:5Glean30FfiConverterTypeLabeledBooleanV5write_4intoyAA0eF0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLabeledBoolean"},"Structs/FfiConverterTypeEventMetric.html#/s:5Glean27FfiConverterTypeEventMetricV4liftyAA0eF0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeEventMetric"},"Structs/FfiConverterTypeEventMetric.html#/s:5Glean27FfiConverterTypeEventMetricV5lowerySvAA0eF0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeEventMetric"},"Structs/FfiConverterTypeEventMetric.html#/s:5Glean27FfiConverterTypeEventMetricV4read4fromAA0eF0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeEventMetric"},"Structs/FfiConverterTypeEventMetric.html#/s:5Glean27FfiConverterTypeEventMetricV5write_4intoyAA0eF0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeEventMetric"},"Structs/FfiConverterTypeDenominatorMetric.html#/s:5Glean33FfiConverterTypeDenominatorMetricV4liftyAA0eF0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeDenominatorMetric"},"Structs/FfiConverterTypeDenominatorMetric.html#/s:5Glean33FfiConverterTypeDenominatorMetricV5lowerySvAA0eF0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeDenominatorMetric"},"Structs/FfiConverterTypeDenominatorMetric.html#/s:5Glean33FfiConverterTypeDenominatorMetricV4read4fromAA0eF0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeDenominatorMetric"},"Structs/FfiConverterTypeDenominatorMetric.html#/s:5Glean33FfiConverterTypeDenominatorMetricV5write_4intoyAA0eF0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeDenominatorMetric"},"Structs/FfiConverterTypeDatetimeMetric.html#/s:5Glean30FfiConverterTypeDatetimeMetricV4liftyAA0eF0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeDatetimeMetric"},"Structs/FfiConverterTypeDatetimeMetric.html#/s:5Glean30FfiConverterTypeDatetimeMetricV5lowerySvAA0eF0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeDatetimeMetric"},"Structs/FfiConverterTypeDatetimeMetric.html#/s:5Glean30FfiConverterTypeDatetimeMetricV4read4fromAA0eF0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeDatetimeMetric"},"Structs/FfiConverterTypeDatetimeMetric.html#/s:5Glean30FfiConverterTypeDatetimeMetricV5write_4intoyAA0eF0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeDatetimeMetric"},"Structs/FfiConverterTypeCustomDistributionMetric.html#/s:5Glean40FfiConverterTypeCustomDistributionMetricV4liftyAA0efG0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeCustomDistributionMetric"},"Structs/FfiConverterTypeCustomDistributionMetric.html#/s:5Glean40FfiConverterTypeCustomDistributionMetricV5lowerySvAA0efG0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeCustomDistributionMetric"},"Structs/FfiConverterTypeCustomDistributionMetric.html#/s:5Glean40FfiConverterTypeCustomDistributionMetricV4read4fromAA0efG0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeCustomDistributionMetric"},"Structs/FfiConverterTypeCustomDistributionMetric.html#/s:5Glean40FfiConverterTypeCustomDistributionMetricV5write_4intoyAA0efG0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeCustomDistributionMetric"},"Structs/FfiConverterTypeCounterMetric.html#/s:5Glean29FfiConverterTypeCounterMetricV4liftyAA0eF0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeCounterMetric"},"Structs/FfiConverterTypeCounterMetric.html#/s:5Glean29FfiConverterTypeCounterMetricV5lowerySvAA0eF0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeCounterMetric"},"Structs/FfiConverterTypeCounterMetric.html#/s:5Glean29FfiConverterTypeCounterMetricV4read4fromAA0eF0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeCounterMetric"},"Structs/FfiConverterTypeCounterMetric.html#/s:5Glean29FfiConverterTypeCounterMetricV5write_4intoyAA0eF0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeCounterMetric"},"Structs/FfiConverterTypeBooleanMetric.html#/s:5Glean29FfiConverterTypeBooleanMetricV4liftyAA0eF0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeBooleanMetric"},"Structs/FfiConverterTypeBooleanMetric.html#/s:5Glean29FfiConverterTypeBooleanMetricV5lowerySvAA0eF0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeBooleanMetric"},"Structs/FfiConverterTypeBooleanMetric.html#/s:5Glean29FfiConverterTypeBooleanMetricV4read4fromAA0eF0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeBooleanMetric"},"Structs/FfiConverterTypeBooleanMetric.html#/s:5Glean29FfiConverterTypeBooleanMetricV5write_4intoyAA0eF0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeBooleanMetric"},"Structs/Configuration.html#/s:5Glean13ConfigurationV9maxEvents7channel14serverEndpoint8dataPath8logLevel21enableEventTimestamps17experimentationId0L13InternalPings21pingLifetimeThreshold0sT7MaxTimeACs5Int32VSg_SSSgA2qA0K6FilterOSgSbAQSbS2itcfc":{"name":"init(maxEvents:channel:serverEndpoint:dataPath:logLevel:enableEventTimestamps:experimentationId:enableInternalPings:pingLifetimeThreshold:pingLifetimeMaxTime:)","abstract":"

    Create a new Glean Configuration object

    ","parent_name":"Configuration"},"Structs/Configuration.html":{"name":"Configuration","abstract":"

    The Configuration struct describes how to configure Glean as well as providing convenience"},"Structs/FfiConverterTypeBooleanMetric.html":{"name":"FfiConverterTypeBooleanMetric","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeCounterMetric.html":{"name":"FfiConverterTypeCounterMetric","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeCustomDistributionMetric.html":{"name":"FfiConverterTypeCustomDistributionMetric","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeDatetimeMetric.html":{"name":"FfiConverterTypeDatetimeMetric","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeDenominatorMetric.html":{"name":"FfiConverterTypeDenominatorMetric","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeEventMetric.html":{"name":"FfiConverterTypeEventMetric","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeLabeledBoolean.html":{"name":"FfiConverterTypeLabeledBoolean","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeLabeledCounter.html":{"name":"FfiConverterTypeLabeledCounter","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeLabeledString.html":{"name":"FfiConverterTypeLabeledString","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeMemoryDistributionMetric.html":{"name":"FfiConverterTypeMemoryDistributionMetric","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeNumeratorMetric.html":{"name":"FfiConverterTypeNumeratorMetric","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeObjectMetric.html":{"name":"FfiConverterTypeObjectMetric","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypePingType.html":{"name":"FfiConverterTypePingType","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeQuantityMetric.html":{"name":"FfiConverterTypeQuantityMetric","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeRateMetric.html":{"name":"FfiConverterTypeRateMetric","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeStringListMetric.html":{"name":"FfiConverterTypeStringListMetric","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeStringMetric.html":{"name":"FfiConverterTypeStringMetric","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeTextMetric.html":{"name":"FfiConverterTypeTextMetric","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeTimespanMetric.html":{"name":"FfiConverterTypeTimespanMetric","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeTimingDistributionMetric.html":{"name":"FfiConverterTypeTimingDistributionMetric","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeUrlMetric.html":{"name":"FfiConverterTypeUrlMetric","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeUuidMetric.html":{"name":"FfiConverterTypeUuidMetric","abstract":"

    Undocumented

    "},"Structs/ClientInfoMetrics.html":{"name":"ClientInfoMetrics","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeClientInfoMetrics.html":{"name":"FfiConverterTypeClientInfoMetrics","abstract":"

    Undocumented

    "},"Structs/CommonMetricData.html":{"name":"CommonMetricData","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeCommonMetricData.html":{"name":"FfiConverterTypeCommonMetricData","abstract":"

    Undocumented

    "},"Structs/Datetime.html":{"name":"Datetime","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeDatetime.html":{"name":"FfiConverterTypeDatetime","abstract":"

    Undocumented

    "},"Structs/DistributionData.html":{"name":"DistributionData","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeDistributionData.html":{"name":"FfiConverterTypeDistributionData","abstract":"

    Undocumented

    "},"Structs/InternalConfiguration.html":{"name":"InternalConfiguration","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeInternalConfiguration.html":{"name":"FfiConverterTypeInternalConfiguration","abstract":"

    Undocumented

    "},"Structs/PingRateLimit.html":{"name":"PingRateLimit","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypePingRateLimit.html":{"name":"FfiConverterTypePingRateLimit","abstract":"

    Undocumented

    "},"Structs/PingRequest.html":{"name":"PingRequest","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypePingRequest.html":{"name":"FfiConverterTypePingRequest","abstract":"

    Undocumented

    "},"Structs/Rate.html":{"name":"Rate","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeRate.html":{"name":"FfiConverterTypeRate","abstract":"

    Undocumented

    "},"Structs/RecordedEvent.html":{"name":"RecordedEvent","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeRecordedEvent.html":{"name":"FfiConverterTypeRecordedEvent","abstract":"

    Undocumented

    "},"Structs/RecordedExperiment.html":{"name":"RecordedExperiment","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeRecordedExperiment.html":{"name":"FfiConverterTypeRecordedExperiment","abstract":"

    Undocumented

    "},"Structs/TimerId.html":{"name":"TimerId","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeTimerId.html":{"name":"FfiConverterTypeTimerId","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeCallbackError.html":{"name":"FfiConverterTypeCallbackError","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeErrorType.html":{"name":"FfiConverterTypeErrorType","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeHistogramType.html":{"name":"FfiConverterTypeHistogramType","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeLabeledMetricData.html":{"name":"FfiConverterTypeLabeledMetricData","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeLevelFilter.html":{"name":"FfiConverterTypeLevelFilter","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeLifetime.html":{"name":"FfiConverterTypeLifetime","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeMemoryUnit.html":{"name":"FfiConverterTypeMemoryUnit","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypePingUploadTask.html":{"name":"FfiConverterTypePingUploadTask","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeTimeUnit.html":{"name":"FfiConverterTypeTimeUnit","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeUploadResult.html":{"name":"FfiConverterTypeUploadResult","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeUploadTaskAction.html":{"name":"FfiConverterTypeUploadTaskAction","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeCowString.html":{"name":"FfiConverterTypeCowString","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeJsonValue.html":{"name":"FfiConverterTypeJsonValue","abstract":"

    Undocumented

    "},"Structs/BuildInfo.html":{"name":"BuildInfo","abstract":"

    Undocumented

    "},"Protocols/ReasonCodes.html#/s:5Glean11ReasonCodesP5indexSiyF":{"name":"index()","abstract":"

    The index of the reason code, used to index the string array passed at","parent_name":"ReasonCodes"},"Protocols/ObjectSerialize.html#/s:5Glean15ObjectSerializeP014intoSerializedB0SSyF":{"name":"intoSerializedObject()","abstract":"

    Undocumented

    ","parent_name":"ObjectSerialize"},"Protocols/EventExtras.html#/s:5Glean11EventExtrasP13toExtraRecordSDyS2SGyF":{"name":"toExtraRecord()","abstract":"

    Convert the event extras into 2 lists:

    ","parent_name":"EventExtras"},"Protocols/OnGleanEvents.html#/s:5Glean02OnA6EventsP18initializeFinishedyyF":{"name":"initializeFinished()","abstract":"

    Undocumented

    ","parent_name":"OnGleanEvents"},"Protocols/OnGleanEvents.html#/s:5Glean02OnA6EventsP13triggerUploadyyKF":{"name":"triggerUpload()","abstract":"

    Undocumented

    ","parent_name":"OnGleanEvents"},"Protocols/OnGleanEvents.html#/s:5Glean02OnA6EventsP25startMetricsPingSchedulerSbyF":{"name":"startMetricsPingScheduler()","abstract":"

    Undocumented

    ","parent_name":"OnGleanEvents"},"Protocols/OnGleanEvents.html#/s:5Glean02OnA6EventsP13cancelUploadsyyKF":{"name":"cancelUploads()","abstract":"

    Undocumented

    ","parent_name":"OnGleanEvents"},"Protocols/OnGleanEvents.html#/s:5Glean02OnA6EventsP8shutdownyyKF":{"name":"shutdown()","abstract":"

    Undocumented

    ","parent_name":"OnGleanEvents"},"Protocols/GleanEventListener.html#/s:5Glean0A13EventListenerP02onB8RecordedyySSF":{"name":"onEventRecorded(_:)","abstract":"

    Undocumented

    ","parent_name":"GleanEventListener"},"Protocols/UuidMetricProtocol.html#/s:5Glean18UuidMetricProtocolP14generateAndSetSSyF":{"name":"generateAndSet()","abstract":"

    Undocumented

    ","parent_name":"UuidMetricProtocol"},"Protocols/UuidMetricProtocol.html#/s:5Glean18UuidMetricProtocolP3setyySSF":{"name":"set(_:)","abstract":"

    Undocumented

    ","parent_name":"UuidMetricProtocol"},"Protocols/UuidMetricProtocol.html#/s:5Glean18UuidMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"UuidMetricProtocol"},"Protocols/UuidMetricProtocol.html#/s:5Glean18UuidMetricProtocolP12testGetValueySSSgAEF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"UuidMetricProtocol"},"Protocols/UrlMetricProtocol.html#/s:5Glean17UrlMetricProtocolP3setyySSF":{"name":"set(_:)","abstract":"

    Undocumented

    ","parent_name":"UrlMetricProtocol"},"Protocols/UrlMetricProtocol.html#/s:5Glean17UrlMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"UrlMetricProtocol"},"Protocols/UrlMetricProtocol.html#/s:5Glean17UrlMetricProtocolP12testGetValueySSSgAEF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"UrlMetricProtocol"},"Protocols/TimingDistributionMetricProtocol.html#/s:5Glean32TimingDistributionMetricProtocolP17accumulateSamplesyySays5Int64VGF":{"name":"accumulateSamples(_:)","abstract":"

    Undocumented

    ","parent_name":"TimingDistributionMetricProtocol"},"Protocols/TimingDistributionMetricProtocol.html#/s:5Glean32TimingDistributionMetricProtocolP22accumulateSingleSampleyys5Int64VF":{"name":"accumulateSingleSample(_:)","abstract":"

    Undocumented

    ","parent_name":"TimingDistributionMetricProtocol"},"Protocols/TimingDistributionMetricProtocol.html#/s:5Glean32TimingDistributionMetricProtocolP6cancelyyAA7TimerIdVF":{"name":"cancel(_:)","abstract":"

    Undocumented

    ","parent_name":"TimingDistributionMetricProtocol"},"Protocols/TimingDistributionMetricProtocol.html#/s:5Glean32TimingDistributionMetricProtocolP5startAA7TimerIdVyF":{"name":"start()","abstract":"

    Undocumented

    ","parent_name":"TimingDistributionMetricProtocol"},"Protocols/TimingDistributionMetricProtocol.html#/s:5Glean32TimingDistributionMetricProtocolP17stopAndAccumulateyyAA7TimerIdVF":{"name":"stopAndAccumulate(_:)","abstract":"

    Undocumented

    ","parent_name":"TimingDistributionMetricProtocol"},"Protocols/TimingDistributionMetricProtocol.html#/s:5Glean32TimingDistributionMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"TimingDistributionMetricProtocol"},"Protocols/TimingDistributionMetricProtocol.html#/s:5Glean32TimingDistributionMetricProtocolP12testGetValueyAA0C4DataVSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"TimingDistributionMetricProtocol"},"Protocols/TimespanMetricProtocol.html#/s:5Glean22TimespanMetricProtocolP6cancelyyF":{"name":"cancel()","abstract":"

    Undocumented

    ","parent_name":"TimespanMetricProtocol"},"Protocols/TimespanMetricProtocol.html#/s:5Glean22TimespanMetricProtocolP11setRawNanosyys5Int64VF":{"name":"setRawNanos(_:)","abstract":"

    Undocumented

    ","parent_name":"TimespanMetricProtocol"},"Protocols/TimespanMetricProtocol.html#/s:5Glean22TimespanMetricProtocolP5startyyF":{"name":"start()","abstract":"

    Undocumented

    ","parent_name":"TimespanMetricProtocol"},"Protocols/TimespanMetricProtocol.html#/s:5Glean22TimespanMetricProtocolP4stopyyF":{"name":"stop()","abstract":"

    Undocumented

    ","parent_name":"TimespanMetricProtocol"},"Protocols/TimespanMetricProtocol.html#/s:5Glean22TimespanMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"TimespanMetricProtocol"},"Protocols/TimespanMetricProtocol.html#/s:5Glean22TimespanMetricProtocolP12testGetValueys5Int64VSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"TimespanMetricProtocol"},"Protocols/TextMetricProtocol.html#/s:5Glean18TextMetricProtocolP3setyySSF":{"name":"set(_:)","abstract":"

    Undocumented

    ","parent_name":"TextMetricProtocol"},"Protocols/TextMetricProtocol.html#/s:5Glean18TextMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"TextMetricProtocol"},"Protocols/TextMetricProtocol.html#/s:5Glean18TextMetricProtocolP12testGetValueySSSgAEF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"TextMetricProtocol"},"Protocols/StringMetricProtocol.html#/s:5Glean20StringMetricProtocolP3setyySSF":{"name":"set(_:)","abstract":"

    Undocumented

    ","parent_name":"StringMetricProtocol"},"Protocols/StringMetricProtocol.html#/s:5Glean20StringMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"StringMetricProtocol"},"Protocols/StringMetricProtocol.html#/s:5Glean20StringMetricProtocolP12testGetValueySSSgAEF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"StringMetricProtocol"},"Protocols/StringListMetricProtocol.html#/s:5Glean24StringListMetricProtocolP3addyySSF":{"name":"add(_:)","abstract":"

    Undocumented

    ","parent_name":"StringListMetricProtocol"},"Protocols/StringListMetricProtocol.html#/s:5Glean24StringListMetricProtocolP3setyySaySSGF":{"name":"set(_:)","abstract":"

    Undocumented

    ","parent_name":"StringListMetricProtocol"},"Protocols/StringListMetricProtocol.html#/s:5Glean24StringListMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"StringListMetricProtocol"},"Protocols/StringListMetricProtocol.html#/s:5Glean24StringListMetricProtocolP12testGetValueySaySSGSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"StringListMetricProtocol"},"Protocols/RateMetricProtocol.html#/s:5Glean18RateMetricProtocolP16addToDenominatoryys5Int32VF":{"name":"addToDenominator(_:)","abstract":"

    Undocumented

    ","parent_name":"RateMetricProtocol"},"Protocols/RateMetricProtocol.html#/s:5Glean18RateMetricProtocolP14addToNumeratoryys5Int32VF":{"name":"addToNumerator(_:)","abstract":"

    Undocumented

    ","parent_name":"RateMetricProtocol"},"Protocols/RateMetricProtocol.html#/s:5Glean18RateMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"RateMetricProtocol"},"Protocols/RateMetricProtocol.html#/s:5Glean18RateMetricProtocolP12testGetValueyAA0B0VSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"RateMetricProtocol"},"Protocols/QuantityMetricProtocol.html#/s:5Glean22QuantityMetricProtocolP3setyys5Int64VF":{"name":"set(_:)","abstract":"

    Undocumented

    ","parent_name":"QuantityMetricProtocol"},"Protocols/QuantityMetricProtocol.html#/s:5Glean22QuantityMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"QuantityMetricProtocol"},"Protocols/QuantityMetricProtocol.html#/s:5Glean22QuantityMetricProtocolP12testGetValueys5Int64VSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"QuantityMetricProtocol"},"Protocols/PingTypeProtocol.html#/s:5Glean16PingTypeProtocolP6submityySSSgF":{"name":"submit(_:)","abstract":"

    Undocumented

    ","parent_name":"PingTypeProtocol"},"Protocols/ObjectMetricProtocol.html#/s:5Glean20ObjectMetricProtocolP17recordSchemaErroryyF":{"name":"recordSchemaError()","abstract":"

    Undocumented

    ","parent_name":"ObjectMetricProtocol"},"Protocols/ObjectMetricProtocol.html#/s:5Glean20ObjectMetricProtocolP9setStringyySSF":{"name":"setString(_:)","abstract":"

    Undocumented

    ","parent_name":"ObjectMetricProtocol"},"Protocols/ObjectMetricProtocol.html#/s:5Glean20ObjectMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"ObjectMetricProtocol"},"Protocols/ObjectMetricProtocol.html#/s:5Glean20ObjectMetricProtocolP12testGetValueySSSgAEF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"ObjectMetricProtocol"},"Protocols/NumeratorMetricProtocol.html#/s:5Glean23NumeratorMetricProtocolP05addToB0yys5Int32VF":{"name":"addToNumerator(_:)","abstract":"

    Undocumented

    ","parent_name":"NumeratorMetricProtocol"},"Protocols/NumeratorMetricProtocol.html#/s:5Glean23NumeratorMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"NumeratorMetricProtocol"},"Protocols/NumeratorMetricProtocol.html#/s:5Glean23NumeratorMetricProtocolP12testGetValueyAA4RateVSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"NumeratorMetricProtocol"},"Protocols/MemoryDistributionMetricProtocol.html#/s:5Glean32MemoryDistributionMetricProtocolP10accumulateyys5Int64VF":{"name":"accumulate(_:)","abstract":"

    Undocumented

    ","parent_name":"MemoryDistributionMetricProtocol"},"Protocols/MemoryDistributionMetricProtocol.html#/s:5Glean32MemoryDistributionMetricProtocolP17accumulateSamplesyySays5Int64VGF":{"name":"accumulateSamples(_:)","abstract":"

    Undocumented

    ","parent_name":"MemoryDistributionMetricProtocol"},"Protocols/MemoryDistributionMetricProtocol.html#/s:5Glean32MemoryDistributionMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"MemoryDistributionMetricProtocol"},"Protocols/MemoryDistributionMetricProtocol.html#/s:5Glean32MemoryDistributionMetricProtocolP12testGetValueyAA0C4DataVSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"MemoryDistributionMetricProtocol"},"Protocols/LabeledStringProtocol.html#/s:5Glean21LabeledStringProtocolP3getyAA0C6MetricCSSF":{"name":"get(_:)","abstract":"

    Undocumented

    ","parent_name":"LabeledStringProtocol"},"Protocols/LabeledStringProtocol.html#/s:5Glean21LabeledStringProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"LabeledStringProtocol"},"Protocols/LabeledCounterProtocol.html#/s:5Glean22LabeledCounterProtocolP3getyAA0C6MetricCSSF":{"name":"get(_:)","abstract":"

    Undocumented

    ","parent_name":"LabeledCounterProtocol"},"Protocols/LabeledCounterProtocol.html#/s:5Glean22LabeledCounterProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"LabeledCounterProtocol"},"Protocols/LabeledBooleanProtocol.html#/s:5Glean22LabeledBooleanProtocolP3getyAA0C6MetricCSSF":{"name":"get(_:)","abstract":"

    Undocumented

    ","parent_name":"LabeledBooleanProtocol"},"Protocols/LabeledBooleanProtocol.html#/s:5Glean22LabeledBooleanProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"LabeledBooleanProtocol"},"Protocols/EventMetricProtocol.html#/s:5Glean19EventMetricProtocolP6recordyySDyS2SGF":{"name":"record(_:)","abstract":"

    Undocumented

    ","parent_name":"EventMetricProtocol"},"Protocols/EventMetricProtocol.html#/s:5Glean19EventMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"EventMetricProtocol"},"Protocols/EventMetricProtocol.html#/s:5Glean19EventMetricProtocolP12testGetValueySayAA08RecordedB0VGSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"EventMetricProtocol"},"Protocols/DenominatorMetricProtocol.html#/s:5Glean25DenominatorMetricProtocolP3addyys5Int32VF":{"name":"add(_:)","abstract":"

    Undocumented

    ","parent_name":"DenominatorMetricProtocol"},"Protocols/DenominatorMetricProtocol.html#/s:5Glean25DenominatorMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"DenominatorMetricProtocol"},"Protocols/DenominatorMetricProtocol.html#/s:5Glean25DenominatorMetricProtocolP12testGetValueys5Int32VSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"DenominatorMetricProtocol"},"Protocols/DatetimeMetricProtocol.html#/s:5Glean22DatetimeMetricProtocolP3setyyAA0B0VSgF":{"name":"set(_:)","abstract":"

    Undocumented

    ","parent_name":"DatetimeMetricProtocol"},"Protocols/DatetimeMetricProtocol.html#/s:5Glean22DatetimeMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"DatetimeMetricProtocol"},"Protocols/DatetimeMetricProtocol.html#/s:5Glean22DatetimeMetricProtocolP12testGetValueyAA0B0VSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"DatetimeMetricProtocol"},"Protocols/DatetimeMetricProtocol.html#/s:5Glean22DatetimeMetricProtocolP20testGetValueAsStringySSSgAEF":{"name":"testGetValueAsString(_:)","abstract":"

    Undocumented

    ","parent_name":"DatetimeMetricProtocol"},"Protocols/CustomDistributionMetricProtocol.html#/s:5Glean32CustomDistributionMetricProtocolP17accumulateSamplesyySays5Int64VGF":{"name":"accumulateSamples(_:)","abstract":"

    Undocumented

    ","parent_name":"CustomDistributionMetricProtocol"},"Protocols/CustomDistributionMetricProtocol.html#/s:5Glean32CustomDistributionMetricProtocolP22accumulateSingleSampleyys5Int64VF":{"name":"accumulateSingleSample(_:)","abstract":"

    Undocumented

    ","parent_name":"CustomDistributionMetricProtocol"},"Protocols/CustomDistributionMetricProtocol.html#/s:5Glean32CustomDistributionMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"CustomDistributionMetricProtocol"},"Protocols/CustomDistributionMetricProtocol.html#/s:5Glean32CustomDistributionMetricProtocolP12testGetValueyAA0C4DataVSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"CustomDistributionMetricProtocol"},"Protocols/CounterMetricProtocol.html#/s:5Glean21CounterMetricProtocolP3addyys5Int32VF":{"name":"add(_:)","abstract":"

    Undocumented

    ","parent_name":"CounterMetricProtocol"},"Protocols/CounterMetricProtocol.html#/s:5Glean21CounterMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"CounterMetricProtocol"},"Protocols/CounterMetricProtocol.html#/s:5Glean21CounterMetricProtocolP12testGetValueys5Int32VSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"CounterMetricProtocol"},"Protocols/BooleanMetricProtocol.html#/s:5Glean21BooleanMetricProtocolP3setyySbF":{"name":"set(_:)","abstract":"

    Undocumented

    ","parent_name":"BooleanMetricProtocol"},"Protocols/BooleanMetricProtocol.html#/s:5Glean21BooleanMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"BooleanMetricProtocol"},"Protocols/BooleanMetricProtocol.html#/s:5Glean21BooleanMetricProtocolP12testGetValueySbSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"BooleanMetricProtocol"},"Protocols/BooleanMetricProtocol.html":{"name":"BooleanMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/CounterMetricProtocol.html":{"name":"CounterMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/CustomDistributionMetricProtocol.html":{"name":"CustomDistributionMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/DatetimeMetricProtocol.html":{"name":"DatetimeMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/DenominatorMetricProtocol.html":{"name":"DenominatorMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/EventMetricProtocol.html":{"name":"EventMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/LabeledBooleanProtocol.html":{"name":"LabeledBooleanProtocol","abstract":"

    Undocumented

    "},"Protocols/LabeledCounterProtocol.html":{"name":"LabeledCounterProtocol","abstract":"

    Undocumented

    "},"Protocols/LabeledStringProtocol.html":{"name":"LabeledStringProtocol","abstract":"

    Undocumented

    "},"Protocols/MemoryDistributionMetricProtocol.html":{"name":"MemoryDistributionMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/NumeratorMetricProtocol.html":{"name":"NumeratorMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/ObjectMetricProtocol.html":{"name":"ObjectMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/PingTypeProtocol.html":{"name":"PingTypeProtocol","abstract":"

    Undocumented

    "},"Protocols/QuantityMetricProtocol.html":{"name":"QuantityMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/RateMetricProtocol.html":{"name":"RateMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/StringListMetricProtocol.html":{"name":"StringListMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/StringMetricProtocol.html":{"name":"StringMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/TextMetricProtocol.html":{"name":"TextMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/TimespanMetricProtocol.html":{"name":"TimespanMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/TimingDistributionMetricProtocol.html":{"name":"TimingDistributionMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/UrlMetricProtocol.html":{"name":"UrlMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/UuidMetricProtocol.html":{"name":"UuidMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/GleanEventListener.html":{"name":"GleanEventListener","abstract":"

    Undocumented

    "},"Protocols/OnGleanEvents.html":{"name":"OnGleanEvents","abstract":"

    Undocumented

    "},"Protocols/EventExtras.html":{"name":"EventExtras","abstract":"

    Extra keys for events by name.

    "},"Protocols/ObjectSerialize.html":{"name":"ObjectSerialize","abstract":"

    An object that can be serialized into JSON.

    "},"Protocols/ReasonCodes.html":{"name":"ReasonCodes","abstract":"

    The reasons a ping may be sent."},"Functions.html#/s:5Glean34FfiConverterTypeBooleanMetric_liftyAA0eF0CSvKF":{"name":"FfiConverterTypeBooleanMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean35FfiConverterTypeBooleanMetric_lowerySvAA0eF0CF":{"name":"FfiConverterTypeBooleanMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean34FfiConverterTypeCounterMetric_liftyAA0eF0CSvKF":{"name":"FfiConverterTypeCounterMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean35FfiConverterTypeCounterMetric_lowerySvAA0eF0CF":{"name":"FfiConverterTypeCounterMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean45FfiConverterTypeCustomDistributionMetric_liftyAA0efG0CSvKF":{"name":"FfiConverterTypeCustomDistributionMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean46FfiConverterTypeCustomDistributionMetric_lowerySvAA0efG0CF":{"name":"FfiConverterTypeCustomDistributionMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean35FfiConverterTypeDatetimeMetric_liftyAA0eF0CSvKF":{"name":"FfiConverterTypeDatetimeMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean36FfiConverterTypeDatetimeMetric_lowerySvAA0eF0CF":{"name":"FfiConverterTypeDatetimeMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean38FfiConverterTypeDenominatorMetric_liftyAA0eF0CSvKF":{"name":"FfiConverterTypeDenominatorMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean39FfiConverterTypeDenominatorMetric_lowerySvAA0eF0CF":{"name":"FfiConverterTypeDenominatorMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean32FfiConverterTypeEventMetric_liftyAA0eF0CSvKF":{"name":"FfiConverterTypeEventMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean33FfiConverterTypeEventMetric_lowerySvAA0eF0CF":{"name":"FfiConverterTypeEventMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean35FfiConverterTypeLabeledBoolean_liftyAA0eF0CSvKF":{"name":"FfiConverterTypeLabeledBoolean_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean36FfiConverterTypeLabeledBoolean_lowerySvAA0eF0CF":{"name":"FfiConverterTypeLabeledBoolean_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean35FfiConverterTypeLabeledCounter_liftyAA0eF0CSvKF":{"name":"FfiConverterTypeLabeledCounter_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean36FfiConverterTypeLabeledCounter_lowerySvAA0eF0CF":{"name":"FfiConverterTypeLabeledCounter_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean34FfiConverterTypeLabeledString_liftyAA0eF0CSvKF":{"name":"FfiConverterTypeLabeledString_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean35FfiConverterTypeLabeledString_lowerySvAA0eF0CF":{"name":"FfiConverterTypeLabeledString_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean45FfiConverterTypeMemoryDistributionMetric_liftyAA0efG0CSvKF":{"name":"FfiConverterTypeMemoryDistributionMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean46FfiConverterTypeMemoryDistributionMetric_lowerySvAA0efG0CF":{"name":"FfiConverterTypeMemoryDistributionMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean36FfiConverterTypeNumeratorMetric_liftyAA0eF0CSvKF":{"name":"FfiConverterTypeNumeratorMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean37FfiConverterTypeNumeratorMetric_lowerySvAA0eF0CF":{"name":"FfiConverterTypeNumeratorMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean33FfiConverterTypeObjectMetric_liftyAA0eF0CSvKF":{"name":"FfiConverterTypeObjectMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean34FfiConverterTypeObjectMetric_lowerySvAA0eF0CF":{"name":"FfiConverterTypeObjectMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean020FfiConverterTypePingD5_liftyAA0eD0CSvKF":{"name":"FfiConverterTypePingType_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean020FfiConverterTypePingD6_lowerySvAA0eD0CF":{"name":"FfiConverterTypePingType_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean35FfiConverterTypeQuantityMetric_liftyAA0eF0CSvKF":{"name":"FfiConverterTypeQuantityMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean36FfiConverterTypeQuantityMetric_lowerySvAA0eF0CF":{"name":"FfiConverterTypeQuantityMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean31FfiConverterTypeRateMetric_liftyAA0eF0CSvKF":{"name":"FfiConverterTypeRateMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean32FfiConverterTypeRateMetric_lowerySvAA0eF0CF":{"name":"FfiConverterTypeRateMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean37FfiConverterTypeStringListMetric_liftyAA0efG0CSvKF":{"name":"FfiConverterTypeStringListMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean38FfiConverterTypeStringListMetric_lowerySvAA0efG0CF":{"name":"FfiConverterTypeStringListMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean33FfiConverterTypeStringMetric_liftyAA0eF0CSvKF":{"name":"FfiConverterTypeStringMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean34FfiConverterTypeStringMetric_lowerySvAA0eF0CF":{"name":"FfiConverterTypeStringMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean31FfiConverterTypeTextMetric_liftyAA0eF0CSvKF":{"name":"FfiConverterTypeTextMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean32FfiConverterTypeTextMetric_lowerySvAA0eF0CF":{"name":"FfiConverterTypeTextMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean35FfiConverterTypeTimespanMetric_liftyAA0eF0CSvKF":{"name":"FfiConverterTypeTimespanMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean36FfiConverterTypeTimespanMetric_lowerySvAA0eF0CF":{"name":"FfiConverterTypeTimespanMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean45FfiConverterTypeTimingDistributionMetric_liftyAA0efG0CSvKF":{"name":"FfiConverterTypeTimingDistributionMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean46FfiConverterTypeTimingDistributionMetric_lowerySvAA0efG0CF":{"name":"FfiConverterTypeTimingDistributionMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean30FfiConverterTypeUrlMetric_liftyAA0eF0CSvKF":{"name":"FfiConverterTypeUrlMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean31FfiConverterTypeUrlMetric_lowerySvAA0eF0CF":{"name":"FfiConverterTypeUrlMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean31FfiConverterTypeUuidMetric_liftyAA0eF0CSvKF":{"name":"FfiConverterTypeUuidMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean32FfiConverterTypeUuidMetric_lowerySvAA0eF0CF":{"name":"FfiConverterTypeUuidMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean38FfiConverterTypeClientInfoMetrics_liftyAA0efG0VSo10RustBufferVKF":{"name":"FfiConverterTypeClientInfoMetrics_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean39FfiConverterTypeClientInfoMetrics_lowerySo10RustBufferVAA0efG0VF":{"name":"FfiConverterTypeClientInfoMetrics_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean37FfiConverterTypeCommonMetricData_liftyAA0efG0VSo10RustBufferVKF":{"name":"FfiConverterTypeCommonMetricData_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean38FfiConverterTypeCommonMetricData_lowerySo10RustBufferVAA0efG0VF":{"name":"FfiConverterTypeCommonMetricData_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean29FfiConverterTypeDatetime_liftyAA0E0VSo10RustBufferVKF":{"name":"FfiConverterTypeDatetime_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean30FfiConverterTypeDatetime_lowerySo10RustBufferVAA0E0VF":{"name":"FfiConverterTypeDatetime_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean37FfiConverterTypeDistributionData_liftyAA0eF0VSo10RustBufferVKF":{"name":"FfiConverterTypeDistributionData_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean38FfiConverterTypeDistributionData_lowerySo10RustBufferVAA0eF0VF":{"name":"FfiConverterTypeDistributionData_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean42FfiConverterTypeInternalConfiguration_liftyAA0eF0VSo10RustBufferVKF":{"name":"FfiConverterTypeInternalConfiguration_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean43FfiConverterTypeInternalConfiguration_lowerySo10RustBufferVAA0eF0VF":{"name":"FfiConverterTypeInternalConfiguration_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean34FfiConverterTypePingRateLimit_liftyAA0efG0VSo10RustBufferVKF":{"name":"FfiConverterTypePingRateLimit_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean35FfiConverterTypePingRateLimit_lowerySo10RustBufferVAA0efG0VF":{"name":"FfiConverterTypePingRateLimit_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean32FfiConverterTypePingRequest_liftyAA0eF0VSo10RustBufferVKF":{"name":"FfiConverterTypePingRequest_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean33FfiConverterTypePingRequest_lowerySo10RustBufferVAA0eF0VF":{"name":"FfiConverterTypePingRequest_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean25FfiConverterTypeRate_liftyAA0E0VSo10RustBufferVKF":{"name":"FfiConverterTypeRate_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean26FfiConverterTypeRate_lowerySo10RustBufferVAA0E0VF":{"name":"FfiConverterTypeRate_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean34FfiConverterTypeRecordedEvent_liftyAA0eF0VSo10RustBufferVKF":{"name":"FfiConverterTypeRecordedEvent_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean35FfiConverterTypeRecordedEvent_lowerySo10RustBufferVAA0eF0VF":{"name":"FfiConverterTypeRecordedEvent_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean39FfiConverterTypeRecordedExperiment_liftyAA0eF0VSo10RustBufferVKF":{"name":"FfiConverterTypeRecordedExperiment_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean40FfiConverterTypeRecordedExperiment_lowerySo10RustBufferVAA0eF0VF":{"name":"FfiConverterTypeRecordedExperiment_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean28FfiConverterTypeTimerId_liftyAA0eF0VSo10RustBufferVKF":{"name":"FfiConverterTypeTimerId_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean29FfiConverterTypeTimerId_lowerySo10RustBufferVAA0eF0VF":{"name":"FfiConverterTypeTimerId_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean021FfiConverterTypeErrorD5_liftyAA0eD0OSo10RustBufferVKF":{"name":"FfiConverterTypeErrorType_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean021FfiConverterTypeErrorD6_lowerySo10RustBufferVAA0eD0OF":{"name":"FfiConverterTypeErrorType_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean025FfiConverterTypeHistogramD5_liftyAA0eD0OSo10RustBufferVKF":{"name":"FfiConverterTypeHistogramType_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean025FfiConverterTypeHistogramD6_lowerySo10RustBufferVAA0eD0OF":{"name":"FfiConverterTypeHistogramType_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean38FfiConverterTypeLabeledMetricData_liftyAA0efG0OSo10RustBufferVKF":{"name":"FfiConverterTypeLabeledMetricData_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean39FfiConverterTypeLabeledMetricData_lowerySo10RustBufferVAA0efG0OF":{"name":"FfiConverterTypeLabeledMetricData_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean32FfiConverterTypeLevelFilter_liftyAA0eF0OSo10RustBufferVKF":{"name":"FfiConverterTypeLevelFilter_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean33FfiConverterTypeLevelFilter_lowerySo10RustBufferVAA0eF0OF":{"name":"FfiConverterTypeLevelFilter_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean29FfiConverterTypeLifetime_liftyAA0E0OSo10RustBufferVKF":{"name":"FfiConverterTypeLifetime_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean30FfiConverterTypeLifetime_lowerySo10RustBufferVAA0E0OF":{"name":"FfiConverterTypeLifetime_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean31FfiConverterTypeMemoryUnit_liftyAA0eF0OSo10RustBufferVKF":{"name":"FfiConverterTypeMemoryUnit_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean32FfiConverterTypeMemoryUnit_lowerySo10RustBufferVAA0eF0OF":{"name":"FfiConverterTypeMemoryUnit_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean35FfiConverterTypePingUploadTask_liftyAA0efG0OSo10RustBufferVKF":{"name":"FfiConverterTypePingUploadTask_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean36FfiConverterTypePingUploadTask_lowerySo10RustBufferVAA0efG0OF":{"name":"FfiConverterTypePingUploadTask_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean29FfiConverterTypeTimeUnit_liftyAA0eF0OSo10RustBufferVKF":{"name":"FfiConverterTypeTimeUnit_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean30FfiConverterTypeTimeUnit_lowerySo10RustBufferVAA0eF0OF":{"name":"FfiConverterTypeTimeUnit_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean33FfiConverterTypeUploadResult_liftyAA0eF0OSo10RustBufferVKF":{"name":"FfiConverterTypeUploadResult_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean34FfiConverterTypeUploadResult_lowerySo10RustBufferVAA0eF0OF":{"name":"FfiConverterTypeUploadResult_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean37FfiConverterTypeUploadTaskAction_liftyAA0efG0OSo10RustBufferVKF":{"name":"FfiConverterTypeUploadTaskAction_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean38FfiConverterTypeUploadTaskAction_lowerySo10RustBufferVAA0efG0OF":{"name":"FfiConverterTypeUploadTaskAction_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean30FfiConverterTypeCowString_liftySSSo10RustBufferVKF":{"name":"FfiConverterTypeCowString_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean31FfiConverterTypeCowString_lowerySo10RustBufferVSSF":{"name":"FfiConverterTypeCowString_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean30FfiConverterTypeJsonValue_liftySSSo10RustBufferVKF":{"name":"FfiConverterTypeJsonValue_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean31FfiConverterTypeJsonValue_lowerySo10RustBufferVSSF":{"name":"FfiConverterTypeJsonValue_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean27gleanApplyServerKnobsConfigyySSF":{"name":"gleanApplyServerKnobsConfig(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean18gleanEnableLoggingyyF":{"name":"gleanEnableLogging()","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean22gleanEnableLoggingToFdyys6UInt64VF":{"name":"gleanEnableLoggingToFd(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean18gleanGetUploadTaskAA04PingdE0OyF":{"name":"gleanGetUploadTask()","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean23gleanHandleClientActiveyyF":{"name":"gleanHandleClientActive()","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean25gleanHandleClientInactiveyyF":{"name":"gleanHandleClientInactive()","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean15gleanInitializeyyAA21InternalConfigurationV_AA17ClientInfoMetricsVAA02OnA6Events_ptF":{"name":"gleanInitialize(_:_:_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean28gleanInitializeForSubprocessySbAA21InternalConfigurationVF":{"name":"gleanInitializeForSubprocess(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean28gleanPersistPingLifetimeDatayyF":{"name":"gleanPersistPingLifetimeData()","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean30gleanProcessPingUploadResponseyAA0E10TaskActionOSS_AA0E6ResultOtF":{"name":"gleanProcessPingUploadResponse(_:_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean26gleanRegisterEventListeneryySS_AA0adE0_ptF":{"name":"gleanRegisterEventListener(_:_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean20gleanSetDebugViewTagySbSSF":{"name":"gleanSetDebugViewTag(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean17gleanSetDirtyFlagyySbF":{"name":"gleanSetDirtyFlag(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean24gleanSetExperimentActiveyySS_SSSDyS2SGtF":{"name":"gleanSetExperimentActive(_:_:_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean26gleanSetExperimentInactiveyySSF":{"name":"gleanSetExperimentInactive(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean25gleanSetExperimentationIdyySSF":{"name":"gleanSetExperimentationId(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean16gleanSetLogPingsyySbF":{"name":"gleanSetLogPings(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean18gleanSetSourceTagsySbSaySSGF":{"name":"gleanSetSourceTags(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean16gleanSetTestModeyySbF":{"name":"gleanSetTestMode(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean21gleanSetUploadEnabledyySbF":{"name":"gleanSetUploadEnabled(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean13gleanShutdownyyF":{"name":"gleanShutdown()","abstract":"

    Shuts down Glean in an orderly fashion.

    "},"Functions.html#/s:5Glean21gleanSubmitPingByNameyySS_SSSgtF":{"name":"gleanSubmitPingByName(_:_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean25gleanSubmitPingByNameSyncySbSS_SSSgtF":{"name":"gleanSubmitPingByNameSync(_:_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean016gleanTestDestroyA0yySb_SSSgtF":{"name":"gleanTestDestroyGlean(_:_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean26gleanTestGetExperimentDatayAA08RecordedE0VSgSSF":{"name":"gleanTestGetExperimentData(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean29gleanTestGetExperimentationIdSSSgyF":{"name":"gleanTestGetExperimentationId()","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean28gleanUnregisterEventListeneryySSF":{"name":"gleanUnregisterEventListener(_:)","abstract":"

    Undocumented

    "},"Extensions/String.html#/s:SS5GleanE16errorDescriptionSSSgvp":{"name":"errorDescription","abstract":"

    The string itself is the error description.

    ","parent_name":"String"},"Extensions/TimingDistributionMetricType.html#/s:5Glean24TimingDistributionMetricC7measure13funcToMeasurexxyXE_tlF":{"name":"measure(funcToMeasure:)","abstract":"

    Convenience method to simplify measuring a function or block of code

    ","parent_name":"TimingDistributionMetricType"},"Extensions/TimingDistributionMetricType.html#/s:5Glean24TimingDistributionMetricC7measure13funcToMeasurexxyKXE_tKlF":{"name":"measure(funcToMeasure:)","abstract":"

    Convenience method to simplify measuring a function or block of code

    ","parent_name":"TimingDistributionMetricType"},"Extensions/TimespanMetricType.html#/s:5Glean14TimespanMetricC7measure13funcToMeasurexxyXE_tlF":{"name":"measure(funcToMeasure:)","abstract":"

    Convenience method to simplify measuring a function or block of code

    ","parent_name":"TimespanMetricType"},"Extensions/TimespanMetricType.html#/s:5Glean14TimespanMetricC7measure13funcToMeasurexxyKXE_tKlF":{"name":"measure(funcToMeasure:)","abstract":"

    Convenience method to simplify measuring a function or block of code

    ","parent_name":"TimespanMetricType"},"Extensions/Array.html#/s:Sa5GleanSeRzSERzlE20intoSerializedObjectSSyF":{"name":"intoSerializedObject()","abstract":"

    Undocumented

    ","parent_name":"Array"},"Extensions/Array.html":{"name":"Array"},"Extensions/TimespanMetricType.html":{"name":"TimespanMetricType"},"Extensions/TimingDistributionMetricType.html":{"name":"TimingDistributionMetricType"},"Extensions/String.html":{"name":"String","abstract":"

    Turn a string into an error, so that it can be thrown as an exception.

    "},"Enums/NoReasonCodes.html#/s:5Glean11ReasonCodesP5indexSiyF":{"name":"index()","parent_name":"NoReasonCodes"},"Enums/UploadTaskAction.html#/s:5Glean16UploadTaskActionO4nextyA2CmF":{"name":"next","abstract":"

    Undocumented

    ","parent_name":"UploadTaskAction"},"Enums/UploadTaskAction.html#/s:5Glean16UploadTaskActionO3endyA2CmF":{"name":"end","abstract":"

    Undocumented

    ","parent_name":"UploadTaskAction"},"Enums/UploadResult.html#/s:5Glean12UploadResultO18recoverableFailureyACs4Int8V_tcACmF":{"name":"recoverableFailure(unused:)","abstract":"

    Undocumented

    ","parent_name":"UploadResult"},"Enums/UploadResult.html#/s:5Glean12UploadResultO20unrecoverableFailureyACs4Int8V_tcACmF":{"name":"unrecoverableFailure(unused:)","abstract":"

    Undocumented

    ","parent_name":"UploadResult"},"Enums/UploadResult.html#/s:5Glean12UploadResultO10httpStatusyACs5Int32V_tcACmF":{"name":"httpStatus(code:)","abstract":"

    Undocumented

    ","parent_name":"UploadResult"},"Enums/UploadResult.html#/s:5Glean12UploadResultO4doneyACs4Int8V_tcACmF":{"name":"done(unused:)","abstract":"

    Undocumented

    ","parent_name":"UploadResult"},"Enums/TimeUnit.html#/s:5Glean8TimeUnitO10nanosecondyA2CmF":{"name":"nanosecond","abstract":"

    Undocumented

    ","parent_name":"TimeUnit"},"Enums/TimeUnit.html#/s:5Glean8TimeUnitO11microsecondyA2CmF":{"name":"microsecond","abstract":"

    Undocumented

    ","parent_name":"TimeUnit"},"Enums/TimeUnit.html#/s:5Glean8TimeUnitO11millisecondyA2CmF":{"name":"millisecond","abstract":"

    Undocumented

    ","parent_name":"TimeUnit"},"Enums/TimeUnit.html#/s:5Glean8TimeUnitO6secondyA2CmF":{"name":"second","abstract":"

    Undocumented

    ","parent_name":"TimeUnit"},"Enums/TimeUnit.html#/s:5Glean8TimeUnitO6minuteyA2CmF":{"name":"minute","abstract":"

    Undocumented

    ","parent_name":"TimeUnit"},"Enums/TimeUnit.html#/s:5Glean8TimeUnitO4houryA2CmF":{"name":"hour","abstract":"

    Undocumented

    ","parent_name":"TimeUnit"},"Enums/TimeUnit.html#/s:5Glean8TimeUnitO3dayyA2CmF":{"name":"day","abstract":"

    Undocumented

    ","parent_name":"TimeUnit"},"Enums/PingUploadTask.html#/s:5Glean14PingUploadTaskO6uploadyAcA0B7RequestV_tcACmF":{"name":"upload(request:)","abstract":"

    Undocumented

    ","parent_name":"PingUploadTask"},"Enums/PingUploadTask.html#/s:5Glean14PingUploadTaskO4waityACs6UInt64V_tcACmF":{"name":"wait(time:)","abstract":"

    Undocumented

    ","parent_name":"PingUploadTask"},"Enums/PingUploadTask.html#/s:5Glean14PingUploadTaskO4doneyACs4Int8V_tcACmF":{"name":"done(unused:)","abstract":"

    Undocumented

    ","parent_name":"PingUploadTask"},"Enums/MemoryUnit.html#/s:5Glean10MemoryUnitO4byteyA2CmF":{"name":"byte","abstract":"

    Undocumented

    ","parent_name":"MemoryUnit"},"Enums/MemoryUnit.html#/s:5Glean10MemoryUnitO8kilobyteyA2CmF":{"name":"kilobyte","abstract":"

    Undocumented

    ","parent_name":"MemoryUnit"},"Enums/MemoryUnit.html#/s:5Glean10MemoryUnitO8megabyteyA2CmF":{"name":"megabyte","abstract":"

    Undocumented

    ","parent_name":"MemoryUnit"},"Enums/MemoryUnit.html#/s:5Glean10MemoryUnitO8gigabyteyA2CmF":{"name":"gigabyte","abstract":"

    Undocumented

    ","parent_name":"MemoryUnit"},"Enums/Lifetime.html#/s:5Glean8LifetimeO4pingyA2CmF":{"name":"ping","abstract":"

    Undocumented

    ","parent_name":"Lifetime"},"Enums/Lifetime.html#/s:5Glean8LifetimeO11applicationyA2CmF":{"name":"application","abstract":"

    Undocumented

    ","parent_name":"Lifetime"},"Enums/Lifetime.html#/s:5Glean8LifetimeO4useryA2CmF":{"name":"user","abstract":"

    Undocumented

    ","parent_name":"Lifetime"},"Enums/LevelFilter.html#/s:5Glean11LevelFilterO3offyA2CmF":{"name":"off","abstract":"

    Undocumented

    ","parent_name":"LevelFilter"},"Enums/LevelFilter.html#/s:5Glean11LevelFilterO5erroryA2CmF":{"name":"error","abstract":"

    Undocumented

    ","parent_name":"LevelFilter"},"Enums/LevelFilter.html#/s:5Glean11LevelFilterO4warnyA2CmF":{"name":"warn","abstract":"

    Undocumented

    ","parent_name":"LevelFilter"},"Enums/LevelFilter.html#/s:5Glean11LevelFilterO4infoyA2CmF":{"name":"info","abstract":"

    Undocumented

    ","parent_name":"LevelFilter"},"Enums/LevelFilter.html#/s:5Glean11LevelFilterO5debugyA2CmF":{"name":"debug","abstract":"

    Undocumented

    ","parent_name":"LevelFilter"},"Enums/LevelFilter.html#/s:5Glean11LevelFilterO5traceyA2CmF":{"name":"trace","abstract":"

    Undocumented

    ","parent_name":"LevelFilter"},"Enums/LabeledMetricData.html#/s:5Glean17LabeledMetricDataO6commonyAcA06CommoncD0V_tcACmF":{"name":"common(cmd:)","abstract":"

    Undocumented

    ","parent_name":"LabeledMetricData"},"Enums/LabeledMetricData.html#/s:5Glean17LabeledMetricDataO18customDistributionyAcA06CommoncD0V_s5Int64VA2hA13HistogramTypeOtcACmF":{"name":"customDistribution(cmd:rangeMin:rangeMax:bucketCount:histogramType:)","abstract":"

    Undocumented

    ","parent_name":"LabeledMetricData"},"Enums/LabeledMetricData.html#/s:5Glean17LabeledMetricDataO18memoryDistributionyAcA06CommoncD0V_AA10MemoryUnitOtcACmF":{"name":"memoryDistribution(cmd:unit:)","abstract":"

    Undocumented

    ","parent_name":"LabeledMetricData"},"Enums/LabeledMetricData.html#/s:5Glean17LabeledMetricDataO18timingDistributionyAcA06CommoncD0V_AA8TimeUnitOtcACmF":{"name":"timingDistribution(cmd:unit:)","abstract":"

    Undocumented

    ","parent_name":"LabeledMetricData"},"Enums/HistogramType.html#/s:5Glean13HistogramTypeO6linearyA2CmF":{"name":"linear","abstract":"

    Undocumented

    ","parent_name":"HistogramType"},"Enums/HistogramType.html#/s:5Glean13HistogramTypeO11exponentialyA2CmF":{"name":"exponential","abstract":"

    Undocumented

    ","parent_name":"HistogramType"},"Enums/ErrorType.html#/s:5Glean9ErrorTypeO12invalidValueyA2CmF":{"name":"invalidValue","abstract":"

    Undocumented

    ","parent_name":"ErrorType"},"Enums/ErrorType.html#/s:5Glean9ErrorTypeO12invalidLabelyA2CmF":{"name":"invalidLabel","abstract":"

    Undocumented

    ","parent_name":"ErrorType"},"Enums/ErrorType.html#/s:5Glean9ErrorTypeO12invalidStateyA2CmF":{"name":"invalidState","abstract":"

    Undocumented

    ","parent_name":"ErrorType"},"Enums/ErrorType.html#/s:5Glean9ErrorTypeO15invalidOverflowyA2CmF":{"name":"invalidOverflow","abstract":"

    Undocumented

    ","parent_name":"ErrorType"},"Enums/CallbackError.html#/s:5Glean13CallbackErrorO010UnexpectedC0yACSS_tcACmF":{"name":"UnexpectedError(message:)","abstract":"

    Undocumented

    ","parent_name":"CallbackError"},"Enums/CallbackError.html":{"name":"CallbackError","abstract":"

    Undocumented

    "},"Enums/ErrorType.html":{"name":"ErrorType","abstract":"

    Undocumented

    "},"Enums/HistogramType.html":{"name":"HistogramType","abstract":"

    Undocumented

    "},"Enums/LabeledMetricData.html":{"name":"LabeledMetricData","abstract":"

    Undocumented

    "},"Enums/LevelFilter.html":{"name":"LevelFilter","abstract":"

    Undocumented

    "},"Enums/Lifetime.html":{"name":"Lifetime","abstract":"

    Undocumented

    "},"Enums/MemoryUnit.html":{"name":"MemoryUnit","abstract":"

    Undocumented

    "},"Enums/PingUploadTask.html":{"name":"PingUploadTask","abstract":"

    Undocumented

    "},"Enums/TimeUnit.html":{"name":"TimeUnit","abstract":"

    Undocumented

    "},"Enums/UploadResult.html":{"name":"UploadResult","abstract":"

    Undocumented

    "},"Enums/UploadTaskAction.html":{"name":"UploadTaskAction","abstract":"

    Undocumented

    "},"Enums.html#/s:5Glean0A7MetricsO":{"name":"GleanMetrics","abstract":"

    Namespace for user metrics

    "},"Enums/NoReasonCodes.html":{"name":"NoReasonCodes","abstract":"

    Default of no reason codes for pings.

    "},"Classes/HttpPingUploader.html#/s:5Glean16HttpPingUploaderC13configuration7sessionAcA13ConfigurationV_So12NSURLSessionCtcfc":{"name":"init(configuration:session:)","abstract":"

    Initialize the HTTP Ping uploader from a Glean configuration object","parent_name":"HttpPingUploader"},"Classes/UuidMetricType.html#/s:5Glean14UuidMetricTypeCyAcA06CommonC4DataVcfc":{"name":"init(_:)","abstract":"

    The public constructor used by automatically generated metrics.

    ","parent_name":"UuidMetricType"},"Classes/UuidMetricType.html#/s:5Glean14UuidMetricTypeC14generateAndSet10Foundation4UUIDVyF":{"name":"generateAndSet()","abstract":"

    Generate a new UUID and set it in the metric store.

    ","parent_name":"UuidMetricType"},"Classes/UuidMetricType.html#/s:5Glean14UuidMetricTypeC3setyy10Foundation4UUIDVF":{"name":"set(_:)","abstract":"

    Explicitly set an existing UUID value.

    ","parent_name":"UuidMetricType"},"Classes/UuidMetricType.html#/s:5Glean14UuidMetricTypeC12testGetValuey10Foundation4UUIDVSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Returns the stored value for testing purposes only. This function will attempt to await the","parent_name":"UuidMetricType"},"Classes/UrlMetricType.html#/s:5Glean13UrlMetricTypeCyAcA06CommonC4DataVcfc":{"name":"init(_:)","abstract":"

    The public constructor used by automatically generated metrics.

    ","parent_name":"UrlMetricType"},"Classes/UrlMetricType.html#/s:5Glean13UrlMetricTypeC3set3urly10Foundation3URLV_tF":{"name":"set(url:)","abstract":"

    Set a URL value.

    ","parent_name":"UrlMetricType"},"Classes/UrlMetricType.html#/s:5Glean13UrlMetricTypeC3setyySSF":{"name":"set(_:)","abstract":"

    Set a URL value.

    ","parent_name":"UrlMetricType"},"Classes/UrlMetricType.html#/s:5Glean13UrlMetricTypeC12testGetValueySSSgAEF":{"name":"testGetValue(_:)","abstract":"

    Returns the stored value for testing purposes only. This function will attempt to await the","parent_name":"UrlMetricType"},"Classes/UrlMetricType.html#/s:5Glean13UrlMetricTypeC24testGetNumRecordedErrorsys5Int32VAA05ErrorD0OF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Returns the number of errors recorded for the given metric.

    ","parent_name":"UrlMetricType"},"Classes/Ping.html#/s:5Glean4PingC4name15includeClientId11sendIfEmpty17preciseTimestamps0D12InfoSections7enabled14schedulesPings11reasonCodesACyxGSS_S5bSaySSGAMtcfc":{"name":"init(name:includeClientId:sendIfEmpty:preciseTimestamps:includeInfoSections:enabled:schedulesPings:reasonCodes:)","abstract":"

    The public constructor used by automatically generated metrics.

    ","parent_name":"Ping"},"Classes/Ping.html#/s:5Glean4PingC20testBeforeNextSubmit2cbyyxSgKc_tF":{"name":"testBeforeNextSubmit(cb:)","abstract":"

    Test-only API

    ","parent_name":"Ping"},"Classes/Ping.html#/s:5Glean4PingC6submit6reasonyxSg_tF":{"name":"submit(reason:)","abstract":"

    Collect and submit the ping for eventual uploading.

    ","parent_name":"Ping"},"Classes/ObjectMetricType.html#/s:5Glean16ObjectMetricTypeCyACyxGAA06CommonC4DataVcfc":{"name":"init(_:)","abstract":"

    The public constructor used by automatically generated metrics.

    ","parent_name":"ObjectMetricType"},"Classes/ObjectMetricType.html#/s:5Glean16ObjectMetricTypeC3setyyxF":{"name":"set(_:)","abstract":"

    Sets to the associated structure.

    ","parent_name":"ObjectMetricType"},"Classes/ObjectMetricType.html#/s:5Glean16ObjectMetricTypeC12testGetValueyxSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Returns the stored value for testing purposes only. This function will attempt to await the","parent_name":"ObjectMetricType"},"Classes/ObjectMetricType.html#/s:5Glean16ObjectMetricTypeC24testGetNumRecordedErrorsys5Int32VAA05ErrorD0OF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Returns the number of errors recorded for the given metric.

    ","parent_name":"ObjectMetricType"},"Classes/LabeledMetricType.html#/s:5Glean17LabeledMetricTypeC8category4name11sendInPings8lifetime8disabled03subC06labelsACyxGSS_SSSaySSGAA8LifetimeOSbxALSgtKcfc":{"name":"init(category:name:sendInPings:lifetime:disabled:subMetric:labels:)","abstract":"

    The public constructor used by automatically generated metrics.

    ","parent_name":"LabeledMetricType"},"Classes/LabeledMetricType.html#/s:5Glean17LabeledMetricTypeCyxSScip":{"name":"subscript(_:)","abstract":"

    Get the specific metric for a given label.

    ","parent_name":"LabeledMetricType"},"Classes/LabeledMetricType.html#/s:5Glean17LabeledMetricTypeC24testGetNumRecordedErrorsys5Int32VAA05ErrorD0OF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Returns the number of errors recorded for the given metric.

    ","parent_name":"LabeledMetricType"},"Classes/EventMetricType.html#/s:5Glean15EventMetricTypeCyACyxGAA06CommonC4DataV_SaySSGSgtcfc":{"name":"init(_:_:)","abstract":"

    The public constructor used by automatically generated metrics.

    ","parent_name":"EventMetricType"},"Classes/EventMetricType.html#/s:5Glean15EventMetricTypeC6recordyyxSgF":{"name":"record(_:)","abstract":"

    Undocumented

    ","parent_name":"EventMetricType"},"Classes/EventMetricType.html#/s:5Glean15EventMetricTypeC12testGetValueySayAA08RecordedB0VGSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Returns the stored value for testing purposes only. This function will attempt to await the","parent_name":"EventMetricType"},"Classes/EventMetricType.html#/s:5Glean15EventMetricTypeC24testGetNumRecordedErrorsys5Int32VAA05ErrorD0OF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Returns the number of errors recorded for the given metric.

    ","parent_name":"EventMetricType"},"Classes/NoExtras.html#/s:5Glean11EventExtrasP13toExtraRecordSDyS2SGyF":{"name":"toExtraRecord()","parent_name":"NoExtras"},"Classes/DatetimeMetricType.html#/s:5Glean18DatetimeMetricTypeCyAcA06CommonC4DataV_AA8TimeUnitOtcfc":{"name":"init(_:_:)","abstract":"

    The public constructor used by automatically generated metrics.

    ","parent_name":"DatetimeMetricType"},"Classes/DatetimeMetricType.html#/s:5Glean18DatetimeMetricTypeC3setyy10Foundation4DateVF":{"name":"set(_:)","abstract":"

    Set a datetime value, truncating it to the metric’s resolution.

    ","parent_name":"DatetimeMetricType"},"Classes/DatetimeMetricType.html#/s:5Glean18DatetimeMetricTypeC20testGetValueAsStringySSSgAEF":{"name":"testGetValueAsString(_:)","abstract":"

    Returns the string representation of the stored value for testing purposes only. This function","parent_name":"DatetimeMetricType"},"Classes/DatetimeMetricType.html#/s:5Glean18DatetimeMetricTypeC12testGetValuey10Foundation4DateVSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Returns the stored value for testing purposes only. This function will attempt to await the","parent_name":"DatetimeMetricType"},"Classes/DatetimeMetricType.html#/s:5Glean18DatetimeMetricTypeC24testGetNumRecordedErrorsys5Int32VAA05ErrorD0OF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Returns the number of errors recorded for the given metric.

    ","parent_name":"DatetimeMetricType"},"Classes/Glean.html#/s:5GleanAAC6sharedABvpZ":{"name":"shared","abstract":"

    The main Glean object.

    ","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC10initialize13uploadEnabled13configuration9buildInfoySb_AA13ConfigurationVAA05BuildG0VtF":{"name":"initialize(uploadEnabled:configuration:buildInfo:)","abstract":"

    Initialize the Glean SDK.

    ","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC16setUploadEnabledyySbF":{"name":"setUploadEnabled(_:)","abstract":"

    Enable or disable Glean collection and upload.

    ","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC19setExperimentActive_6branch5extraySS_SSSDyS2SGSgtF":{"name":"setExperimentActive(_:branch:extra:)","abstract":"

    Used to indicate that an experiment is running.

    ","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC21setExperimentInactiveyySSF":{"name":"setExperimentInactive(_:)","abstract":"

    Used to indicate that an experiment is no longer running.

    ","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC22testIsExperimentActiveySbSSF":{"name":"testIsExperimentActive(_:)","abstract":"

    Tests whether an experiment is active, for testing purposes only.

    ","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC21testGetExperimentDatayAA08RecordedD0VSgSSF":{"name":"testGetExperimentData(_:)","abstract":"

    PUBLIC TEST ONLY FUNCTION.

    ","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC20setExperimentationIdyySSF":{"name":"setExperimentationId(_:)","abstract":"

    Dynamically set the experimentation identifier, as opposed to setting it through the configuration","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC24testGetExperimentationIdSSSgyF":{"name":"testGetExperimentationId()","abstract":"

    PUBLIC TEST ONLY FUNCTION.

    ","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC13registerPingsyyypF":{"name":"registerPings(_:)","abstract":"

    Register the pings generated from pings.yaml with the Glean SDK.

    ","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC15setDebugViewTagySbSSF":{"name":"setDebugViewTag(_:)","abstract":"

    Set a tag to be applied to headers when uploading pings for debug view.","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC11setLogPingsyySbF":{"name":"setLogPings(_:)","abstract":"

    Set the log_pings debug option,","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC13setSourceTagsySbSaySSGF":{"name":"setSourceTags(_:)","abstract":"

    Set the source tags to be applied as headers when uploading pings.

    ","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC21registerEventListener3tag8listenerySS_AA0acD0_ptF":{"name":"registerEventListener(tag:listener:)","abstract":"

    EXPERIMENTAL: Register a listener to receive notification of event recordings

    ","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC23unregisterEventListener3tagySS_tF":{"name":"unregisterEventListener(tag:)","abstract":"

    EXPERIMENTAL: Unregister a listener to receive notification of event recordings

    ","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC22applyServerKnobsConfigyySSF":{"name":"applyServerKnobsConfig(_:)","abstract":"

    Set configuration to override metrics’ default enabled/disabled state, typically from","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC8shutdownyyF":{"name":"shutdown()","abstract":"

    Shuts down Glean in an orderly fashion

    ","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC15handleCustomUrl3urly10Foundation3URLV_tF":{"name":"handleCustomUrl(url:)","abstract":"

    When applications are launched using the custom URL scheme, this helper function will process","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC17enableTestingModeyyF":{"name":"enableTestingMode()","abstract":"

    PUBLIC TEST ONLY FUNCTION.

    ","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC05resetA013configuration11clearStores13uploadEnabledyAA13ConfigurationV_S2btF":{"name":"resetGlean(configuration:clearStores:uploadEnabled:)","abstract":"

    PUBLIC TEST ONLY FUNCTION.

    ","parent_name":"Glean"},"Classes/UuidMetric/NoPointer.html#/s:5Glean10UuidMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/UuidMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"UuidMetric"},"Classes/UuidMetric.html#/s:5Glean10UuidMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"UuidMetric"},"Classes/UuidMetric.html#/s:5Glean10UuidMetricC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"UuidMetric"},"Classes/UuidMetric.html#/s:5Glean10UuidMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"UuidMetric"},"Classes/UuidMetric.html#/s:5Glean10UuidMetricCyAcA06CommonC4DataVcfc":{"name":"init(_:)","abstract":"

    Undocumented

    ","parent_name":"UuidMetric"},"Classes/UuidMetric.html#/s:5Glean10UuidMetricC14generateAndSetSSyF":{"name":"generateAndSet()","abstract":"

    Undocumented

    ","parent_name":"UuidMetric"},"Classes/UuidMetric.html#/s:5Glean10UuidMetricC3setyySSF":{"name":"set(_:)","abstract":"

    Undocumented

    ","parent_name":"UuidMetric"},"Classes/UuidMetric.html#/s:5Glean10UuidMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"UuidMetric"},"Classes/UuidMetric.html#/s:5Glean10UuidMetricC12testGetValueySSSgAEF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"UuidMetric"},"Classes/UrlMetric/NoPointer.html#/s:5Glean9UrlMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/UrlMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"UrlMetric"},"Classes/UrlMetric.html#/s:5Glean9UrlMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"UrlMetric"},"Classes/UrlMetric.html#/s:5Glean9UrlMetricC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"UrlMetric"},"Classes/UrlMetric.html#/s:5Glean9UrlMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"UrlMetric"},"Classes/UrlMetric.html#/s:5Glean9UrlMetricCyAcA06CommonC4DataVcfc":{"name":"init(_:)","abstract":"

    Undocumented

    ","parent_name":"UrlMetric"},"Classes/UrlMetric.html#/s:5Glean9UrlMetricC3setyySSF":{"name":"set(_:)","abstract":"

    Undocumented

    ","parent_name":"UrlMetric"},"Classes/UrlMetric.html#/s:5Glean9UrlMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"UrlMetric"},"Classes/UrlMetric.html#/s:5Glean9UrlMetricC12testGetValueySSSgAEF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"UrlMetric"},"Classes/TimingDistributionMetric/NoPointer.html#/s:5Glean24TimingDistributionMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/TimingDistributionMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"TimingDistributionMetric"},"Classes/TimingDistributionMetric.html#/s:5Glean24TimingDistributionMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"TimingDistributionMetric"},"Classes/TimingDistributionMetric.html#/s:5Glean24TimingDistributionMetricC9noPointerA2C02NoF0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"TimingDistributionMetric"},"Classes/TimingDistributionMetric.html#/s:5Glean24TimingDistributionMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"TimingDistributionMetric"},"Classes/TimingDistributionMetric.html#/s:5Glean24TimingDistributionMetricCyAcA06CommonD4DataV_AA8TimeUnitOtcfc":{"name":"init(_:_:)","abstract":"

    Undocumented

    ","parent_name":"TimingDistributionMetric"},"Classes/TimingDistributionMetric.html#/s:5Glean24TimingDistributionMetricC17accumulateSamplesyySays5Int64VGF":{"name":"accumulateSamples(_:)","abstract":"

    Undocumented

    ","parent_name":"TimingDistributionMetric"},"Classes/TimingDistributionMetric.html#/s:5Glean24TimingDistributionMetricC22accumulateSingleSampleyys5Int64VF":{"name":"accumulateSingleSample(_:)","abstract":"

    Undocumented

    ","parent_name":"TimingDistributionMetric"},"Classes/TimingDistributionMetric.html#/s:5Glean24TimingDistributionMetricC6cancelyyAA7TimerIdVF":{"name":"cancel(_:)","abstract":"

    Undocumented

    ","parent_name":"TimingDistributionMetric"},"Classes/TimingDistributionMetric.html#/s:5Glean24TimingDistributionMetricC5startAA7TimerIdVyF":{"name":"start()","abstract":"

    Undocumented

    ","parent_name":"TimingDistributionMetric"},"Classes/TimingDistributionMetric.html#/s:5Glean24TimingDistributionMetricC17stopAndAccumulateyyAA7TimerIdVF":{"name":"stopAndAccumulate(_:)","abstract":"

    Undocumented

    ","parent_name":"TimingDistributionMetric"},"Classes/TimingDistributionMetric.html#/s:5Glean24TimingDistributionMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"TimingDistributionMetric"},"Classes/TimingDistributionMetric.html#/s:5Glean24TimingDistributionMetricC12testGetValueyAA0C4DataVSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"TimingDistributionMetric"},"Classes/TimespanMetric/NoPointer.html#/s:5Glean14TimespanMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/TimespanMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"TimespanMetric"},"Classes/TimespanMetric.html#/s:5Glean14TimespanMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"TimespanMetric"},"Classes/TimespanMetric.html#/s:5Glean14TimespanMetricC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"TimespanMetric"},"Classes/TimespanMetric.html#/s:5Glean14TimespanMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"TimespanMetric"},"Classes/TimespanMetric.html#/s:5Glean14TimespanMetricCyAcA06CommonC4DataV_AA8TimeUnitOtcfc":{"name":"init(_:_:)","abstract":"

    Undocumented

    ","parent_name":"TimespanMetric"},"Classes/TimespanMetric.html#/s:5Glean14TimespanMetricC6cancelyyF":{"name":"cancel()","abstract":"

    Undocumented

    ","parent_name":"TimespanMetric"},"Classes/TimespanMetric.html#/s:5Glean14TimespanMetricC11setRawNanosyys5Int64VF":{"name":"setRawNanos(_:)","abstract":"

    Undocumented

    ","parent_name":"TimespanMetric"},"Classes/TimespanMetric.html#/s:5Glean14TimespanMetricC5startyyF":{"name":"start()","abstract":"

    Undocumented

    ","parent_name":"TimespanMetric"},"Classes/TimespanMetric.html#/s:5Glean14TimespanMetricC4stopyyF":{"name":"stop()","abstract":"

    Undocumented

    ","parent_name":"TimespanMetric"},"Classes/TimespanMetric.html#/s:5Glean14TimespanMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"TimespanMetric"},"Classes/TimespanMetric.html#/s:5Glean14TimespanMetricC12testGetValueys5Int64VSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"TimespanMetric"},"Classes/TextMetric/NoPointer.html#/s:5Glean10TextMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/TextMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"TextMetric"},"Classes/TextMetric.html#/s:5Glean10TextMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"TextMetric"},"Classes/TextMetric.html#/s:5Glean10TextMetricC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"TextMetric"},"Classes/TextMetric.html#/s:5Glean10TextMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"TextMetric"},"Classes/TextMetric.html#/s:5Glean10TextMetricCyAcA06CommonC4DataVcfc":{"name":"init(_:)","abstract":"

    Undocumented

    ","parent_name":"TextMetric"},"Classes/TextMetric.html#/s:5Glean10TextMetricC3setyySSF":{"name":"set(_:)","abstract":"

    Undocumented

    ","parent_name":"TextMetric"},"Classes/TextMetric.html#/s:5Glean10TextMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"TextMetric"},"Classes/TextMetric.html#/s:5Glean10TextMetricC12testGetValueySSSgAEF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"TextMetric"},"Classes/StringMetric/NoPointer.html#/s:5Glean12StringMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/StringMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"StringMetric"},"Classes/StringMetric.html#/s:5Glean12StringMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"StringMetric"},"Classes/StringMetric.html#/s:5Glean12StringMetricC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"StringMetric"},"Classes/StringMetric.html#/s:5Glean12StringMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"StringMetric"},"Classes/StringMetric.html#/s:5Glean12StringMetricCyAcA06CommonC4DataVcfc":{"name":"init(_:)","abstract":"

    Undocumented

    ","parent_name":"StringMetric"},"Classes/StringMetric.html#/s:5Glean12StringMetricC3setyySSF":{"name":"set(_:)","abstract":"

    Undocumented

    ","parent_name":"StringMetric"},"Classes/StringMetric.html#/s:5Glean12StringMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"StringMetric"},"Classes/StringMetric.html#/s:5Glean12StringMetricC12testGetValueySSSgAEF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"StringMetric"},"Classes/StringListMetric/NoPointer.html#/s:5Glean16StringListMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/StringListMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"StringListMetric"},"Classes/StringListMetric.html#/s:5Glean16StringListMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"StringListMetric"},"Classes/StringListMetric.html#/s:5Glean16StringListMetricC9noPointerA2C02NoF0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"StringListMetric"},"Classes/StringListMetric.html#/s:5Glean16StringListMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"StringListMetric"},"Classes/StringListMetric.html#/s:5Glean16StringListMetricCyAcA06CommonD4DataVcfc":{"name":"init(_:)","abstract":"

    Undocumented

    ","parent_name":"StringListMetric"},"Classes/StringListMetric.html#/s:5Glean16StringListMetricC3addyySSF":{"name":"add(_:)","abstract":"

    Undocumented

    ","parent_name":"StringListMetric"},"Classes/StringListMetric.html#/s:5Glean16StringListMetricC3setyySaySSGF":{"name":"set(_:)","abstract":"

    Undocumented

    ","parent_name":"StringListMetric"},"Classes/StringListMetric.html#/s:5Glean16StringListMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"StringListMetric"},"Classes/StringListMetric.html#/s:5Glean16StringListMetricC12testGetValueySaySSGSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"StringListMetric"},"Classes/RateMetric/NoPointer.html#/s:5Glean10RateMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/RateMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"RateMetric"},"Classes/RateMetric.html#/s:5Glean10RateMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"RateMetric"},"Classes/RateMetric.html#/s:5Glean10RateMetricC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"RateMetric"},"Classes/RateMetric.html#/s:5Glean10RateMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"RateMetric"},"Classes/RateMetric.html#/s:5Glean10RateMetricCyAcA06CommonC4DataVcfc":{"name":"init(_:)","abstract":"

    Undocumented

    ","parent_name":"RateMetric"},"Classes/RateMetric.html#/s:5Glean10RateMetricC16addToDenominatoryys5Int32VF":{"name":"addToDenominator(_:)","abstract":"

    Undocumented

    ","parent_name":"RateMetric"},"Classes/RateMetric.html#/s:5Glean10RateMetricC14addToNumeratoryys5Int32VF":{"name":"addToNumerator(_:)","abstract":"

    Undocumented

    ","parent_name":"RateMetric"},"Classes/RateMetric.html#/s:5Glean10RateMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"RateMetric"},"Classes/RateMetric.html#/s:5Glean10RateMetricC12testGetValueyAA0B0VSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"RateMetric"},"Classes/QuantityMetric/NoPointer.html#/s:5Glean14QuantityMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/QuantityMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"QuantityMetric"},"Classes/QuantityMetric.html#/s:5Glean14QuantityMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"QuantityMetric"},"Classes/QuantityMetric.html#/s:5Glean14QuantityMetricC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"QuantityMetric"},"Classes/QuantityMetric.html#/s:5Glean14QuantityMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"QuantityMetric"},"Classes/QuantityMetric.html#/s:5Glean14QuantityMetricCyAcA06CommonC4DataVcfc":{"name":"init(_:)","abstract":"

    Undocumented

    ","parent_name":"QuantityMetric"},"Classes/QuantityMetric.html#/s:5Glean14QuantityMetricC3setyys5Int64VF":{"name":"set(_:)","abstract":"

    Undocumented

    ","parent_name":"QuantityMetric"},"Classes/QuantityMetric.html#/s:5Glean14QuantityMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"QuantityMetric"},"Classes/QuantityMetric.html#/s:5Glean14QuantityMetricC12testGetValueys5Int64VSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"QuantityMetric"},"Classes/PingType/NoPointer.html#/s:5Glean8PingTypeC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/PingType/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"PingType"},"Classes/PingType.html#/s:5Glean8PingTypeC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"PingType"},"Classes/PingType.html#/s:5Glean8PingTypeC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"PingType"},"Classes/PingType.html#/s:5Glean8PingTypeC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"PingType"},"Classes/PingType.html#/s:5Glean8PingTypeCyACSS_S5bSaySSGADtcfc":{"name":"init(_:_:_:_:_:_:_:_:)","abstract":"

    Undocumented

    ","parent_name":"PingType"},"Classes/PingType.html#/s:5Glean8PingTypeC6submityySSSgF":{"name":"submit(_:)","abstract":"

    Undocumented

    ","parent_name":"PingType"},"Classes/ObjectMetric/NoPointer.html#/s:5Glean12ObjectMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/ObjectMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"ObjectMetric"},"Classes/ObjectMetric.html#/s:5Glean12ObjectMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"ObjectMetric"},"Classes/ObjectMetric.html#/s:5Glean12ObjectMetricC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"ObjectMetric"},"Classes/ObjectMetric.html#/s:5Glean12ObjectMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"ObjectMetric"},"Classes/ObjectMetric.html#/s:5Glean12ObjectMetricCyAcA06CommonC4DataVcfc":{"name":"init(_:)","abstract":"

    Undocumented

    ","parent_name":"ObjectMetric"},"Classes/ObjectMetric.html#/s:5Glean12ObjectMetricC17recordSchemaErroryyF":{"name":"recordSchemaError()","abstract":"

    Undocumented

    ","parent_name":"ObjectMetric"},"Classes/ObjectMetric.html#/s:5Glean12ObjectMetricC9setStringyySSF":{"name":"setString(_:)","abstract":"

    Undocumented

    ","parent_name":"ObjectMetric"},"Classes/ObjectMetric.html#/s:5Glean12ObjectMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"ObjectMetric"},"Classes/ObjectMetric.html#/s:5Glean12ObjectMetricC12testGetValueySSSgAEF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"ObjectMetric"},"Classes/NumeratorMetric/NoPointer.html#/s:5Glean15NumeratorMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/NumeratorMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"NumeratorMetric"},"Classes/NumeratorMetric.html#/s:5Glean15NumeratorMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"NumeratorMetric"},"Classes/NumeratorMetric.html#/s:5Glean15NumeratorMetricC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"NumeratorMetric"},"Classes/NumeratorMetric.html#/s:5Glean15NumeratorMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"NumeratorMetric"},"Classes/NumeratorMetric.html#/s:5Glean15NumeratorMetricCyAcA06CommonC4DataVcfc":{"name":"init(_:)","abstract":"

    Undocumented

    ","parent_name":"NumeratorMetric"},"Classes/NumeratorMetric.html#/s:5Glean15NumeratorMetricC05addToB0yys5Int32VF":{"name":"addToNumerator(_:)","abstract":"

    Undocumented

    ","parent_name":"NumeratorMetric"},"Classes/NumeratorMetric.html#/s:5Glean15NumeratorMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"NumeratorMetric"},"Classes/NumeratorMetric.html#/s:5Glean15NumeratorMetricC12testGetValueyAA4RateVSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"NumeratorMetric"},"Classes/MemoryDistributionMetric/NoPointer.html#/s:5Glean24MemoryDistributionMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/MemoryDistributionMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"MemoryDistributionMetric"},"Classes/MemoryDistributionMetric.html#/s:5Glean24MemoryDistributionMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"MemoryDistributionMetric"},"Classes/MemoryDistributionMetric.html#/s:5Glean24MemoryDistributionMetricC9noPointerA2C02NoF0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"MemoryDistributionMetric"},"Classes/MemoryDistributionMetric.html#/s:5Glean24MemoryDistributionMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"MemoryDistributionMetric"},"Classes/MemoryDistributionMetric.html#/s:5Glean24MemoryDistributionMetricCyAcA06CommonD4DataV_AA0B4UnitOtcfc":{"name":"init(_:_:)","abstract":"

    Undocumented

    ","parent_name":"MemoryDistributionMetric"},"Classes/MemoryDistributionMetric.html#/s:5Glean24MemoryDistributionMetricC10accumulateyys5Int64VF":{"name":"accumulate(_:)","abstract":"

    Undocumented

    ","parent_name":"MemoryDistributionMetric"},"Classes/MemoryDistributionMetric.html#/s:5Glean24MemoryDistributionMetricC17accumulateSamplesyySays5Int64VGF":{"name":"accumulateSamples(_:)","abstract":"

    Undocumented

    ","parent_name":"MemoryDistributionMetric"},"Classes/MemoryDistributionMetric.html#/s:5Glean24MemoryDistributionMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"MemoryDistributionMetric"},"Classes/MemoryDistributionMetric.html#/s:5Glean24MemoryDistributionMetricC12testGetValueyAA0C4DataVSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"MemoryDistributionMetric"},"Classes/LabeledString/NoPointer.html#/s:5Glean13LabeledStringC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/LabeledString/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"LabeledString"},"Classes/LabeledString.html#/s:5Glean13LabeledStringC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"LabeledString"},"Classes/LabeledString.html#/s:5Glean13LabeledStringC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"LabeledString"},"Classes/LabeledString.html#/s:5Glean13LabeledStringC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"LabeledString"},"Classes/LabeledString.html#/s:5Glean13LabeledStringCyAcA0B10MetricDataO_SaySSGSgtcfc":{"name":"init(_:_:)","abstract":"

    Undocumented

    ","parent_name":"LabeledString"},"Classes/LabeledString.html#/s:5Glean13LabeledStringC3getyAA0C6MetricCSSF":{"name":"get(_:)","abstract":"

    Undocumented

    ","parent_name":"LabeledString"},"Classes/LabeledString.html#/s:5Glean13LabeledStringC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"LabeledString"},"Classes/LabeledCounter/NoPointer.html#/s:5Glean14LabeledCounterC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/LabeledCounter/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"LabeledCounter"},"Classes/LabeledCounter.html#/s:5Glean14LabeledCounterC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"LabeledCounter"},"Classes/LabeledCounter.html#/s:5Glean14LabeledCounterC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"LabeledCounter"},"Classes/LabeledCounter.html#/s:5Glean14LabeledCounterC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"LabeledCounter"},"Classes/LabeledCounter.html#/s:5Glean14LabeledCounterCyAcA0B10MetricDataO_SaySSGSgtcfc":{"name":"init(_:_:)","abstract":"

    Undocumented

    ","parent_name":"LabeledCounter"},"Classes/LabeledCounter.html#/s:5Glean14LabeledCounterC3getyAA0C6MetricCSSF":{"name":"get(_:)","abstract":"

    Undocumented

    ","parent_name":"LabeledCounter"},"Classes/LabeledCounter.html#/s:5Glean14LabeledCounterC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"LabeledCounter"},"Classes/LabeledBoolean/NoPointer.html#/s:5Glean14LabeledBooleanC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/LabeledBoolean/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"LabeledBoolean"},"Classes/LabeledBoolean.html#/s:5Glean14LabeledBooleanC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"LabeledBoolean"},"Classes/LabeledBoolean.html#/s:5Glean14LabeledBooleanC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"LabeledBoolean"},"Classes/LabeledBoolean.html#/s:5Glean14LabeledBooleanC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"LabeledBoolean"},"Classes/LabeledBoolean.html#/s:5Glean14LabeledBooleanCyAcA0B10MetricDataO_SaySSGSgtcfc":{"name":"init(_:_:)","abstract":"

    Undocumented

    ","parent_name":"LabeledBoolean"},"Classes/LabeledBoolean.html#/s:5Glean14LabeledBooleanC3getyAA0C6MetricCSSF":{"name":"get(_:)","abstract":"

    Undocumented

    ","parent_name":"LabeledBoolean"},"Classes/LabeledBoolean.html#/s:5Glean14LabeledBooleanC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"LabeledBoolean"},"Classes/EventMetric/NoPointer.html#/s:5Glean11EventMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/EventMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"EventMetric"},"Classes/EventMetric.html#/s:5Glean11EventMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"EventMetric"},"Classes/EventMetric.html#/s:5Glean11EventMetricC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"EventMetric"},"Classes/EventMetric.html#/s:5Glean11EventMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"EventMetric"},"Classes/EventMetric.html#/s:5Glean11EventMetricCyAcA06CommonC4DataV_SaySSGtcfc":{"name":"init(_:_:)","abstract":"

    Undocumented

    ","parent_name":"EventMetric"},"Classes/EventMetric.html#/s:5Glean11EventMetricC6recordyySDyS2SGF":{"name":"record(_:)","abstract":"

    Undocumented

    ","parent_name":"EventMetric"},"Classes/EventMetric.html#/s:5Glean11EventMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"EventMetric"},"Classes/EventMetric.html#/s:5Glean11EventMetricC12testGetValueySayAA08RecordedB0VGSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"EventMetric"},"Classes/DenominatorMetric/NoPointer.html#/s:5Glean17DenominatorMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/DenominatorMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"DenominatorMetric"},"Classes/DenominatorMetric.html#/s:5Glean17DenominatorMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"DenominatorMetric"},"Classes/DenominatorMetric.html#/s:5Glean17DenominatorMetricC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"DenominatorMetric"},"Classes/DenominatorMetric.html#/s:5Glean17DenominatorMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"DenominatorMetric"},"Classes/DenominatorMetric.html#/s:5Glean17DenominatorMetricCyAcA06CommonC4DataV_SayAEGtcfc":{"name":"init(_:_:)","abstract":"

    Undocumented

    ","parent_name":"DenominatorMetric"},"Classes/DenominatorMetric.html#/s:5Glean17DenominatorMetricC3addyys5Int32VF":{"name":"add(_:)","abstract":"

    Undocumented

    ","parent_name":"DenominatorMetric"},"Classes/DenominatorMetric.html#/s:5Glean17DenominatorMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"DenominatorMetric"},"Classes/DenominatorMetric.html#/s:5Glean17DenominatorMetricC12testGetValueys5Int32VSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"DenominatorMetric"},"Classes/DatetimeMetric/NoPointer.html#/s:5Glean14DatetimeMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/DatetimeMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"DatetimeMetric"},"Classes/DatetimeMetric.html#/s:5Glean14DatetimeMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"DatetimeMetric"},"Classes/DatetimeMetric.html#/s:5Glean14DatetimeMetricC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"DatetimeMetric"},"Classes/DatetimeMetric.html#/s:5Glean14DatetimeMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"DatetimeMetric"},"Classes/DatetimeMetric.html#/s:5Glean14DatetimeMetricCyAcA06CommonC4DataV_AA8TimeUnitOtcfc":{"name":"init(_:_:)","abstract":"

    Undocumented

    ","parent_name":"DatetimeMetric"},"Classes/DatetimeMetric.html#/s:5Glean14DatetimeMetricC3setyyAA0B0VSgF":{"name":"set(_:)","abstract":"

    Undocumented

    ","parent_name":"DatetimeMetric"},"Classes/DatetimeMetric.html#/s:5Glean14DatetimeMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"DatetimeMetric"},"Classes/DatetimeMetric.html#/s:5Glean14DatetimeMetricC12testGetValueyAA0B0VSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"DatetimeMetric"},"Classes/DatetimeMetric.html#/s:5Glean14DatetimeMetricC20testGetValueAsStringySSSgAEF":{"name":"testGetValueAsString(_:)","abstract":"

    Undocumented

    ","parent_name":"DatetimeMetric"},"Classes/CustomDistributionMetric/NoPointer.html#/s:5Glean24CustomDistributionMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/CustomDistributionMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"CustomDistributionMetric"},"Classes/CustomDistributionMetric.html#/s:5Glean24CustomDistributionMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"CustomDistributionMetric"},"Classes/CustomDistributionMetric.html#/s:5Glean24CustomDistributionMetricC9noPointerA2C02NoF0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"CustomDistributionMetric"},"Classes/CustomDistributionMetric.html#/s:5Glean24CustomDistributionMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"CustomDistributionMetric"},"Classes/CustomDistributionMetric.html#/s:5Glean24CustomDistributionMetricCyAcA06CommonD4DataV_s5Int64VA2gA13HistogramTypeOtcfc":{"name":"init(_:_:_:_:_:)","abstract":"

    Undocumented

    ","parent_name":"CustomDistributionMetric"},"Classes/CustomDistributionMetric.html#/s:5Glean24CustomDistributionMetricC17accumulateSamplesyySays5Int64VGF":{"name":"accumulateSamples(_:)","abstract":"

    Undocumented

    ","parent_name":"CustomDistributionMetric"},"Classes/CustomDistributionMetric.html#/s:5Glean24CustomDistributionMetricC22accumulateSingleSampleyys5Int64VF":{"name":"accumulateSingleSample(_:)","abstract":"

    Undocumented

    ","parent_name":"CustomDistributionMetric"},"Classes/CustomDistributionMetric.html#/s:5Glean24CustomDistributionMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"CustomDistributionMetric"},"Classes/CustomDistributionMetric.html#/s:5Glean24CustomDistributionMetricC12testGetValueyAA0C4DataVSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"CustomDistributionMetric"},"Classes/CounterMetric/NoPointer.html#/s:5Glean13CounterMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/CounterMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"CounterMetric"},"Classes/CounterMetric.html#/s:5Glean13CounterMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"CounterMetric"},"Classes/CounterMetric.html#/s:5Glean13CounterMetricC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"CounterMetric"},"Classes/CounterMetric.html#/s:5Glean13CounterMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"CounterMetric"},"Classes/CounterMetric.html#/s:5Glean13CounterMetricCyAcA06CommonC4DataVcfc":{"name":"init(_:)","abstract":"

    Undocumented

    ","parent_name":"CounterMetric"},"Classes/CounterMetric.html#/s:5Glean13CounterMetricC3addyys5Int32VF":{"name":"add(_:)","abstract":"

    Undocumented

    ","parent_name":"CounterMetric"},"Classes/CounterMetric.html#/s:5Glean13CounterMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"CounterMetric"},"Classes/CounterMetric.html#/s:5Glean13CounterMetricC12testGetValueys5Int32VSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"CounterMetric"},"Classes/BooleanMetric/NoPointer.html#/s:5Glean13BooleanMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/BooleanMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"BooleanMetric"},"Classes/BooleanMetric.html#/s:5Glean13BooleanMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"BooleanMetric"},"Classes/BooleanMetric.html#/s:5Glean13BooleanMetricC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"BooleanMetric"},"Classes/BooleanMetric.html#/s:5Glean13BooleanMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"BooleanMetric"},"Classes/BooleanMetric.html#/s:5Glean13BooleanMetricCyAcA06CommonC4DataVcfc":{"name":"init(_:)","abstract":"

    Undocumented

    ","parent_name":"BooleanMetric"},"Classes/BooleanMetric.html#/s:5Glean13BooleanMetricC3setyySbF":{"name":"set(_:)","abstract":"

    Undocumented

    ","parent_name":"BooleanMetric"},"Classes/BooleanMetric.html#/s:5Glean13BooleanMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"BooleanMetric"},"Classes/BooleanMetric.html#/s:5Glean13BooleanMetricC12testGetValueySbSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"BooleanMetric"},"Classes/BooleanMetric.html":{"name":"BooleanMetric","abstract":"

    Undocumented

    "},"Classes/CounterMetric.html":{"name":"CounterMetric","abstract":"

    Undocumented

    "},"Classes/CustomDistributionMetric.html":{"name":"CustomDistributionMetric","abstract":"

    Undocumented

    "},"Classes/DatetimeMetric.html":{"name":"DatetimeMetric","abstract":"

    Undocumented

    "},"Classes/DenominatorMetric.html":{"name":"DenominatorMetric","abstract":"

    Undocumented

    "},"Classes/EventMetric.html":{"name":"EventMetric","abstract":"

    Undocumented

    "},"Classes/LabeledBoolean.html":{"name":"LabeledBoolean","abstract":"

    Undocumented

    "},"Classes/LabeledCounter.html":{"name":"LabeledCounter","abstract":"

    Undocumented

    "},"Classes/LabeledString.html":{"name":"LabeledString","abstract":"

    Undocumented

    "},"Classes/MemoryDistributionMetric.html":{"name":"MemoryDistributionMetric","abstract":"

    Undocumented

    "},"Classes/NumeratorMetric.html":{"name":"NumeratorMetric","abstract":"

    Undocumented

    "},"Classes/ObjectMetric.html":{"name":"ObjectMetric","abstract":"

    Undocumented

    "},"Classes/PingType.html":{"name":"PingType","abstract":"

    Undocumented

    "},"Classes/QuantityMetric.html":{"name":"QuantityMetric","abstract":"

    Undocumented

    "},"Classes/RateMetric.html":{"name":"RateMetric","abstract":"

    Undocumented

    "},"Classes/StringListMetric.html":{"name":"StringListMetric","abstract":"

    Undocumented

    "},"Classes/StringMetric.html":{"name":"StringMetric","abstract":"

    Undocumented

    "},"Classes/TextMetric.html":{"name":"TextMetric","abstract":"

    Undocumented

    "},"Classes/TimespanMetric.html":{"name":"TimespanMetric","abstract":"

    Undocumented

    "},"Classes/TimingDistributionMetric.html":{"name":"TimingDistributionMetric","abstract":"

    Undocumented

    "},"Classes/UrlMetric.html":{"name":"UrlMetric","abstract":"

    Undocumented

    "},"Classes/UuidMetric.html":{"name":"UuidMetric","abstract":"

    Undocumented

    "},"Classes/Glean.html":{"name":"Glean","abstract":"

    The main Glean API.

    "},"Classes/DatetimeMetricType.html":{"name":"DatetimeMetricType","abstract":"

    This implements the developer facing API for recording datetime metrics.

    "},"Classes/NoExtras.html":{"name":"NoExtras","abstract":"

    Default of no extra keys for events (for the new API).

    "},"Classes/EventMetricType.html":{"name":"EventMetricType","abstract":"

    This implements the developer facing API for recording events.

    "},"Classes/LabeledMetricType.html":{"name":"LabeledMetricType","abstract":"

    This implements the developer facing API for labeled metrics.

    "},"Classes/ObjectMetricType.html":{"name":"ObjectMetricType","abstract":"

    This implements the developer facing API for the object metric type.

    "},"Classes/Ping.html":{"name":"Ping","abstract":"

    This implements the developer facing API for custom pings.

    "},"Classes/UrlMetricType.html":{"name":"UrlMetricType","abstract":"

    This implements the developer facing API for recording URL metrics.

    "},"Classes/UuidMetricType.html":{"name":"UuidMetricType","abstract":"

    This implements the developer facing API for recording UUID metrics.

    "},"Classes/HttpPingUploader.html":{"name":"HttpPingUploader","abstract":"

    This class represents a ping uploader via HTTP.

    "},"Classes.html":{"name":"Classes","abstract":"

    The following classes are available globally.

    "},"Enums.html":{"name":"Enumerations","abstract":"

    The following enumerations are available globally.

    "},"Extensions.html":{"name":"Extensions","abstract":"

    The following extensions are available globally.

    "},"Functions.html":{"name":"Functions","abstract":"

    The following functions are available globally.

    "},"Protocols.html":{"name":"Protocols","abstract":"

    The following protocols are available globally.

    "},"Structs.html":{"name":"Structures","abstract":"

    The following structures are available globally.

    "},"Typealiases.html":{"name":"Type Aliases","abstract":"

    The following type aliases are available globally.

    "}} \ No newline at end of file +{"Typealiases.html#/s:5Glean9CowStringa":{"name":"CowString","abstract":"

    Typealias from the type name used in the UDL file to the builtin type. This"},"Typealiases.html#/s:5Glean9JsonValuea":{"name":"JsonValue","abstract":"

    Typealias from the type name used in the UDL file to the builtin type. This"},"Typealiases.html#/s:5Glean0A7TimerIda":{"name":"GleanTimerId","abstract":"

    Public exported type identifying individual timers for TimingDistributionMetricType

    "},"Typealiases.html#/s:5Glean17BooleanMetricTypea":{"name":"BooleanMetricType","abstract":"

    This implements the developer facing API for recording boolean metrics.

    "},"Typealiases.html#/s:5Glean17CounterMetricTypea":{"name":"CounterMetricType","abstract":"

    This implements the developer facing API for recording counter metrics.

    "},"Typealiases.html#/s:5Glean28MemoryDistributionMetricTypea":{"name":"MemoryDistributionMetricType","abstract":"

    This implements the developer facing API for recording memory distribution metrics.

    "},"Typealiases.html#/s:5Glean18QuantityMetricTypea":{"name":"QuantityMetricType","abstract":"

    This implements the developer facing API for recording quantity metrics.

    "},"Typealiases.html#/s:5Glean14RateMetricTypea":{"name":"RateMetricType","abstract":"

    This implements the developer facing API for recording rate metrics.

    "},"Typealiases.html#/s:5Glean21DenominatorMetricTypea":{"name":"DenominatorMetricType","abstract":"

    This implements the developer facing API for recording a denominator of a rate metric,"},"Typealiases.html#/s:5Glean19NumeratorMetricTypea":{"name":"NumeratorMetricType","abstract":"

    This implements the developer facing API for recording the numerator of a rate metric"},"Typealiases.html#/s:5Glean20StringListMetricTypea":{"name":"StringListMetricType","abstract":"

    This implements the developer facing API for recording string list metrics.

    "},"Typealiases.html#/s:5Glean16StringMetricTypea":{"name":"StringMetricType","abstract":"

    This implements the developer facing API for recording string metrics.

    "},"Typealiases.html#/s:5Glean14TextMetricTypea":{"name":"TextMetricType","abstract":"

    This implements the developer facing API for recording text metrics.

    "},"Typealiases.html#/s:5Glean18TimespanMetricTypea":{"name":"TimespanMetricType","abstract":"

    This implements the developer facing API for recording timespan metrics.

    "},"Typealiases.html#/s:5Glean28TimingDistributionMetricTypea":{"name":"TimingDistributionMetricType","abstract":"

    This implements the developer facing API for recording timing distribution metrics.

    "},"Structs/BuildInfo.html#/s:5Glean9BuildInfoV9buildDateAC10Foundation0E10ComponentsV_tcfc":{"name":"init(buildDate:)","abstract":"

    Undocumented

    ","parent_name":"BuildInfo"},"Structs/FfiConverterTypeJsonValue.html#/s:5Glean25FfiConverterTypeJsonValueV4read4fromSS10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeJsonValue"},"Structs/FfiConverterTypeJsonValue.html#/s:5Glean25FfiConverterTypeJsonValueV5write_4intoySS_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeJsonValue"},"Structs/FfiConverterTypeJsonValue.html#/s:5Glean25FfiConverterTypeJsonValueV4liftySSSo10RustBufferVKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeJsonValue"},"Structs/FfiConverterTypeJsonValue.html#/s:5Glean25FfiConverterTypeJsonValueV5lowerySo10RustBufferVSSFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeJsonValue"},"Structs/FfiConverterTypeCowString.html#/s:5Glean25FfiConverterTypeCowStringV4read4fromSS10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeCowString"},"Structs/FfiConverterTypeCowString.html#/s:5Glean25FfiConverterTypeCowStringV5write_4intoySS_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeCowString"},"Structs/FfiConverterTypeCowString.html#/s:5Glean25FfiConverterTypeCowStringV4liftySSSo10RustBufferVKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeCowString"},"Structs/FfiConverterTypeCowString.html#/s:5Glean25FfiConverterTypeCowStringV5lowerySo10RustBufferVSSFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeCowString"},"Structs/FfiConverterTypeUploadTaskAction.html#/s:5Glean32FfiConverterTypeUploadTaskActionV4read4fromAA0efG0O10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeUploadTaskAction"},"Structs/FfiConverterTypeUploadTaskAction.html#/s:5Glean32FfiConverterTypeUploadTaskActionV5write_4intoyAA0efG0O_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeUploadTaskAction"},"Structs/FfiConverterTypeUploadResult.html#/s:5Glean28FfiConverterTypeUploadResultV4read4fromAA0eF0O10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeUploadResult"},"Structs/FfiConverterTypeUploadResult.html#/s:5Glean28FfiConverterTypeUploadResultV5write_4intoyAA0eF0O_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeUploadResult"},"Structs/FfiConverterTypeTimeUnit.html#/s:5Glean24FfiConverterTypeTimeUnitV4read4fromAA0eF0O10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeTimeUnit"},"Structs/FfiConverterTypeTimeUnit.html#/s:5Glean24FfiConverterTypeTimeUnitV5write_4intoyAA0eF0O_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeTimeUnit"},"Structs/FfiConverterTypePingUploadTask.html#/s:5Glean30FfiConverterTypePingUploadTaskV4read4fromAA0efG0O10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypePingUploadTask"},"Structs/FfiConverterTypePingUploadTask.html#/s:5Glean30FfiConverterTypePingUploadTaskV5write_4intoyAA0efG0O_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypePingUploadTask"},"Structs/FfiConverterTypeMemoryUnit.html#/s:5Glean26FfiConverterTypeMemoryUnitV4read4fromAA0eF0O10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeMemoryUnit"},"Structs/FfiConverterTypeMemoryUnit.html#/s:5Glean26FfiConverterTypeMemoryUnitV5write_4intoyAA0eF0O_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeMemoryUnit"},"Structs/FfiConverterTypeLifetime.html#/s:5Glean24FfiConverterTypeLifetimeV4read4fromAA0E0O10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLifetime"},"Structs/FfiConverterTypeLifetime.html#/s:5Glean24FfiConverterTypeLifetimeV5write_4intoyAA0E0O_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLifetime"},"Structs/FfiConverterTypeLevelFilter.html#/s:5Glean27FfiConverterTypeLevelFilterV4read4fromAA0eF0O10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLevelFilter"},"Structs/FfiConverterTypeLevelFilter.html#/s:5Glean27FfiConverterTypeLevelFilterV5write_4intoyAA0eF0O_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLevelFilter"},"Structs/FfiConverterTypeLabeledMetricData.html#/s:5Glean33FfiConverterTypeLabeledMetricDataV4read4fromAA0efG0O10Foundation0G0V4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLabeledMetricData"},"Structs/FfiConverterTypeLabeledMetricData.html#/s:5Glean33FfiConverterTypeLabeledMetricDataV5write_4intoyAA0efG0O_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLabeledMetricData"},"Structs/FfiConverterTypeHistogramType.html#/s:5Glean025FfiConverterTypeHistogramD0V4read4fromAA0eD0O10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeHistogramType"},"Structs/FfiConverterTypeHistogramType.html#/s:5Glean025FfiConverterTypeHistogramD0V5write_4intoyAA0eD0O_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeHistogramType"},"Structs/FfiConverterTypeErrorType.html#/s:5Glean021FfiConverterTypeErrorD0V4read4fromAA0eD0O10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeErrorType"},"Structs/FfiConverterTypeErrorType.html#/s:5Glean021FfiConverterTypeErrorD0V5write_4intoyAA0eD0O_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeErrorType"},"Structs/FfiConverterTypeCallbackError.html#/s:5Glean29FfiConverterTypeCallbackErrorV4read4fromAA0eF0O10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeCallbackError"},"Structs/FfiConverterTypeCallbackError.html#/s:5Glean29FfiConverterTypeCallbackErrorV5write_4intoyAA0eF0O_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeCallbackError"},"Structs/FfiConverterTypeTimerId.html#/s:5Glean23FfiConverterTypeTimerIdV4read4fromAA0eF0V10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeTimerId"},"Structs/FfiConverterTypeTimerId.html#/s:5Glean23FfiConverterTypeTimerIdV5write_4intoyAA0eF0V_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeTimerId"},"Structs/TimerId.html#/s:5Glean7TimerIdV2ids6UInt64Vvp":{"name":"id","abstract":"

    Undocumented

    ","parent_name":"TimerId"},"Structs/TimerId.html#/s:5Glean7TimerIdV2idACs6UInt64V_tcfc":{"name":"init(id:)","abstract":"

    Undocumented

    ","parent_name":"TimerId"},"Structs/TimerId.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"TimerId"},"Structs/TimerId.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"TimerId"},"Structs/FfiConverterTypeRecordedExperiment.html#/s:5Glean34FfiConverterTypeRecordedExperimentV4read4fromAA0eF0V10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeRecordedExperiment"},"Structs/FfiConverterTypeRecordedExperiment.html#/s:5Glean34FfiConverterTypeRecordedExperimentV5write_4intoyAA0eF0V_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeRecordedExperiment"},"Structs/RecordedExperiment.html#/s:5Glean18RecordedExperimentV6branchSSvp":{"name":"branch","abstract":"

    Undocumented

    ","parent_name":"RecordedExperiment"},"Structs/RecordedExperiment.html#/s:5Glean18RecordedExperimentV5extraSDyS2SGSgvp":{"name":"extra","abstract":"

    Undocumented

    ","parent_name":"RecordedExperiment"},"Structs/RecordedExperiment.html#/s:5Glean18RecordedExperimentV6branch5extraACSS_SDyS2SGSgtcfc":{"name":"init(branch:extra:)","abstract":"

    Undocumented

    ","parent_name":"RecordedExperiment"},"Structs/RecordedExperiment.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"RecordedExperiment"},"Structs/RecordedExperiment.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"RecordedExperiment"},"Structs/FfiConverterTypeRecordedEvent.html#/s:5Glean29FfiConverterTypeRecordedEventV4read4fromAA0eF0V10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeRecordedEvent"},"Structs/FfiConverterTypeRecordedEvent.html#/s:5Glean29FfiConverterTypeRecordedEventV5write_4intoyAA0eF0V_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeRecordedEvent"},"Structs/RecordedEvent.html#/s:5Glean13RecordedEventV9timestamps6UInt64Vvp":{"name":"timestamp","abstract":"

    Undocumented

    ","parent_name":"RecordedEvent"},"Structs/RecordedEvent.html#/s:5Glean13RecordedEventV8categorySSvp":{"name":"category","abstract":"

    Undocumented

    ","parent_name":"RecordedEvent"},"Structs/RecordedEvent.html#/s:5Glean13RecordedEventV4nameSSvp":{"name":"name","abstract":"

    Undocumented

    ","parent_name":"RecordedEvent"},"Structs/RecordedEvent.html#/s:5Glean13RecordedEventV5extraSDyS2SGSgvp":{"name":"extra","abstract":"

    Undocumented

    ","parent_name":"RecordedEvent"},"Structs/RecordedEvent.html#/s:5Glean13RecordedEventV9timestamp8category4name5extraACs6UInt64V_S2SSDyS2SGSgtcfc":{"name":"init(timestamp:category:name:extra:)","abstract":"

    Undocumented

    ","parent_name":"RecordedEvent"},"Structs/RecordedEvent.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"RecordedEvent"},"Structs/RecordedEvent.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"RecordedEvent"},"Structs/FfiConverterTypeRate.html#/s:5Glean20FfiConverterTypeRateV4read4fromAA0E0V10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeRate"},"Structs/FfiConverterTypeRate.html#/s:5Glean20FfiConverterTypeRateV5write_4intoyAA0E0V_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeRate"},"Structs/Rate.html#/s:5Glean4RateV9numerators5Int32Vvp":{"name":"numerator","abstract":"

    Undocumented

    ","parent_name":"Rate"},"Structs/Rate.html#/s:5Glean4RateV11denominators5Int32Vvp":{"name":"denominator","abstract":"

    Undocumented

    ","parent_name":"Rate"},"Structs/Rate.html#/s:5Glean4RateV9numerator11denominatorACs5Int32V_AGtcfc":{"name":"init(numerator:denominator:)","abstract":"

    Undocumented

    ","parent_name":"Rate"},"Structs/Rate.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"Rate"},"Structs/Rate.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"Rate"},"Structs/FfiConverterTypePingRequest.html#/s:5Glean27FfiConverterTypePingRequestV4read4fromAA0eF0V10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypePingRequest"},"Structs/FfiConverterTypePingRequest.html#/s:5Glean27FfiConverterTypePingRequestV5write_4intoyAA0eF0V_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypePingRequest"},"Structs/PingRequest.html#/s:5Glean11PingRequestV10documentIdSSvp":{"name":"documentId","abstract":"

    Undocumented

    ","parent_name":"PingRequest"},"Structs/PingRequest.html#/s:5Glean11PingRequestV4pathSSvp":{"name":"path","abstract":"

    Undocumented

    ","parent_name":"PingRequest"},"Structs/PingRequest.html#/s:5Glean11PingRequestV4bodySays5UInt8VGvp":{"name":"body","abstract":"

    Undocumented

    ","parent_name":"PingRequest"},"Structs/PingRequest.html#/s:5Glean11PingRequestV7headersSDyS2SGvp":{"name":"headers","abstract":"

    Undocumented

    ","parent_name":"PingRequest"},"Structs/PingRequest.html#/s:5Glean11PingRequestV19bodyHasInfoSectionsSbvp":{"name":"bodyHasInfoSections","abstract":"

    Undocumented

    ","parent_name":"PingRequest"},"Structs/PingRequest.html#/s:5Glean11PingRequestV8pingNameSSvp":{"name":"pingName","abstract":"

    Undocumented

    ","parent_name":"PingRequest"},"Structs/PingRequest.html#/s:5Glean11PingRequestV10documentId4path4body7headers0G15HasInfoSections8pingNameACSS_SSSays5UInt8VGSDyS2SGSbSStcfc":{"name":"init(documentId:path:body:headers:bodyHasInfoSections:pingName:)","abstract":"

    Undocumented

    ","parent_name":"PingRequest"},"Structs/PingRequest.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"PingRequest"},"Structs/PingRequest.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"PingRequest"},"Structs/FfiConverterTypePingRateLimit.html#/s:5Glean29FfiConverterTypePingRateLimitV4read4fromAA0efG0V10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypePingRateLimit"},"Structs/FfiConverterTypePingRateLimit.html#/s:5Glean29FfiConverterTypePingRateLimitV5write_4intoyAA0efG0V_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypePingRateLimit"},"Structs/PingRateLimit.html#/s:5Glean13PingRateLimitV18secondsPerIntervals6UInt64Vvp":{"name":"secondsPerInterval","abstract":"

    Undocumented

    ","parent_name":"PingRateLimit"},"Structs/PingRateLimit.html#/s:5Glean13PingRateLimitV16pingsPerIntervals6UInt32Vvp":{"name":"pingsPerInterval","abstract":"

    Undocumented

    ","parent_name":"PingRateLimit"},"Structs/PingRateLimit.html#/s:5Glean13PingRateLimitV18secondsPerInterval05pingsfG0ACs6UInt64V_s6UInt32Vtcfc":{"name":"init(secondsPerInterval:pingsPerInterval:)","abstract":"

    Undocumented

    ","parent_name":"PingRateLimit"},"Structs/PingRateLimit.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"PingRateLimit"},"Structs/PingRateLimit.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"PingRateLimit"},"Structs/FfiConverterTypeInternalConfiguration.html#/s:5Glean37FfiConverterTypeInternalConfigurationV4read4fromAA0eF0V10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeInternalConfiguration"},"Structs/FfiConverterTypeInternalConfiguration.html#/s:5Glean37FfiConverterTypeInternalConfigurationV5write_4intoyAA0eF0V_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeInternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV8dataPathSSvp":{"name":"dataPath","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV13applicationIdSSvp":{"name":"applicationId","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV19languageBindingNameSSvp":{"name":"languageBindingName","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV13uploadEnabledSbvp":{"name":"uploadEnabled","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV9maxEventss6UInt32VSgvp":{"name":"maxEvents","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV19delayPingLifetimeIoSbvp":{"name":"delayPingLifetimeIo","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV8appBuildSSvp":{"name":"appBuild","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV10useCoreMpsSbvp":{"name":"useCoreMps","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV25trimDataToRegisteredPingsSbvp":{"name":"trimDataToRegisteredPings","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV8logLevelAA0E6FilterOSgvp":{"name":"logLevel","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV9rateLimitAA08PingRateE0VSgvp":{"name":"rateLimit","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV21enableEventTimestampsSbvp":{"name":"enableEventTimestamps","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV17experimentationIdSSSgvp":{"name":"experimentationId","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV06enableB5PingsSbvp":{"name":"enableInternalPings","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV12pingScheduleSDySSSaySSGGvp":{"name":"pingSchedule","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV21pingLifetimeThresholds6UInt64Vvp":{"name":"pingLifetimeThreshold","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV19pingLifetimeMaxTimes6UInt64Vvp":{"name":"pingLifetimeMaxTime","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV8dataPath13applicationId19languageBindingName13uploadEnabled9maxEvents19delayPingLifetimeIo8appBuild10useCoreMps25trimDataToRegisteredPings8logLevel9rateLimit21enableEventTimestamps015experimentationG006enableB5Pings12pingSchedule04pingQ9Threshold04pingQ7MaxTimeACSS_S2SSbs6UInt32VSgSbSSS2bAA11LevelFilterOSgAA0P9RateLimitVSgSbSSSgSbSDySSSaySSGGs6UInt64VA6_tcfc":{"name":"init(dataPath:applicationId:languageBindingName:uploadEnabled:maxEvents:delayPingLifetimeIo:appBuild:useCoreMps:trimDataToRegisteredPings:logLevel:rateLimit:enableEventTimestamps:experimentationId:enableInternalPings:pingSchedule:pingLifetimeThreshold:pingLifetimeMaxTime:)","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"InternalConfiguration"},"Structs/FfiConverterTypeDistributionData.html#/s:5Glean32FfiConverterTypeDistributionDataV4read4fromAA0eF0V10Foundation0F0V4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeDistributionData"},"Structs/FfiConverterTypeDistributionData.html#/s:5Glean32FfiConverterTypeDistributionDataV5write_4intoyAA0eF0V_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeDistributionData"},"Structs/DistributionData.html#/s:5Glean16DistributionDataV6valuesSDys5Int64VAFGvp":{"name":"values","abstract":"

    Undocumented

    ","parent_name":"DistributionData"},"Structs/DistributionData.html#/s:5Glean16DistributionDataV3sums5Int64Vvp":{"name":"sum","abstract":"

    Undocumented

    ","parent_name":"DistributionData"},"Structs/DistributionData.html#/s:5Glean16DistributionDataV5counts5Int64Vvp":{"name":"count","abstract":"

    Undocumented

    ","parent_name":"DistributionData"},"Structs/DistributionData.html#/s:5Glean16DistributionDataV6values3sum5countACSDys5Int64VAHG_A2Htcfc":{"name":"init(values:sum:count:)","abstract":"

    Undocumented

    ","parent_name":"DistributionData"},"Structs/DistributionData.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"DistributionData"},"Structs/DistributionData.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"DistributionData"},"Structs/FfiConverterTypeDatetime.html#/s:5Glean24FfiConverterTypeDatetimeV4read4fromAA0E0V10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeDatetime"},"Structs/FfiConverterTypeDatetime.html#/s:5Glean24FfiConverterTypeDatetimeV5write_4intoyAA0E0V_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeDatetime"},"Structs/Datetime.html#/s:5Glean8DatetimeV4years5Int32Vvp":{"name":"year","abstract":"

    Undocumented

    ","parent_name":"Datetime"},"Structs/Datetime.html#/s:5Glean8DatetimeV5months6UInt32Vvp":{"name":"month","abstract":"

    Undocumented

    ","parent_name":"Datetime"},"Structs/Datetime.html#/s:5Glean8DatetimeV3days6UInt32Vvp":{"name":"day","abstract":"

    Undocumented

    ","parent_name":"Datetime"},"Structs/Datetime.html#/s:5Glean8DatetimeV4hours6UInt32Vvp":{"name":"hour","abstract":"

    Undocumented

    ","parent_name":"Datetime"},"Structs/Datetime.html#/s:5Glean8DatetimeV6minutes6UInt32Vvp":{"name":"minute","abstract":"

    Undocumented

    ","parent_name":"Datetime"},"Structs/Datetime.html#/s:5Glean8DatetimeV6seconds6UInt32Vvp":{"name":"second","abstract":"

    Undocumented

    ","parent_name":"Datetime"},"Structs/Datetime.html#/s:5Glean8DatetimeV10nanoseconds6UInt32Vvp":{"name":"nanosecond","abstract":"

    Undocumented

    ","parent_name":"Datetime"},"Structs/Datetime.html#/s:5Glean8DatetimeV13offsetSecondss5Int32Vvp":{"name":"offsetSeconds","abstract":"

    Undocumented

    ","parent_name":"Datetime"},"Structs/Datetime.html#/s:5Glean8DatetimeV4year5month3day4hour6minute6second10nanosecond13offsetSecondsACs5Int32V_s6UInt32VA5oMtcfc":{"name":"init(year:month:day:hour:minute:second:nanosecond:offsetSeconds:)","abstract":"

    Undocumented

    ","parent_name":"Datetime"},"Structs/Datetime.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"Datetime"},"Structs/Datetime.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"Datetime"},"Structs/FfiConverterTypeCommonMetricData.html#/s:5Glean32FfiConverterTypeCommonMetricDataV4read4fromAA0efG0V10Foundation0G0V4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeCommonMetricData"},"Structs/FfiConverterTypeCommonMetricData.html#/s:5Glean32FfiConverterTypeCommonMetricDataV5write_4intoyAA0efG0V_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeCommonMetricData"},"Structs/CommonMetricData.html#/s:5Glean16CommonMetricDataV8categorySSvp":{"name":"category","abstract":"

    Undocumented

    ","parent_name":"CommonMetricData"},"Structs/CommonMetricData.html#/s:5Glean16CommonMetricDataV4nameSSvp":{"name":"name","abstract":"

    Undocumented

    ","parent_name":"CommonMetricData"},"Structs/CommonMetricData.html#/s:5Glean16CommonMetricDataV11sendInPingsSaySSGvp":{"name":"sendInPings","abstract":"

    Undocumented

    ","parent_name":"CommonMetricData"},"Structs/CommonMetricData.html#/s:5Glean16CommonMetricDataV8lifetimeAA8LifetimeOvp":{"name":"lifetime","abstract":"

    Undocumented

    ","parent_name":"CommonMetricData"},"Structs/CommonMetricData.html#/s:5Glean16CommonMetricDataV8disabledSbvp":{"name":"disabled","abstract":"

    Undocumented

    ","parent_name":"CommonMetricData"},"Structs/CommonMetricData.html#/s:5Glean16CommonMetricDataV12dynamicLabelSSSgvp":{"name":"dynamicLabel","abstract":"

    Undocumented

    ","parent_name":"CommonMetricData"},"Structs/CommonMetricData.html#/s:5Glean16CommonMetricDataV8category4name11sendInPings8lifetime8disabled12dynamicLabelACSS_SSSaySSGAA8LifetimeOSbSSSgtcfc":{"name":"init(category:name:sendInPings:lifetime:disabled:dynamicLabel:)","abstract":"

    Undocumented

    ","parent_name":"CommonMetricData"},"Structs/CommonMetricData.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"CommonMetricData"},"Structs/CommonMetricData.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"CommonMetricData"},"Structs/FfiConverterTypeClientInfoMetrics.html#/s:5Glean33FfiConverterTypeClientInfoMetricsV4read4fromAA0efG0V10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeClientInfoMetrics"},"Structs/FfiConverterTypeClientInfoMetrics.html#/s:5Glean33FfiConverterTypeClientInfoMetricsV5write_4intoyAA0efG0V_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeClientInfoMetrics"},"Structs/ClientInfoMetrics.html#/s:5Glean17ClientInfoMetricsV8appBuildSSvp":{"name":"appBuild","abstract":"

    Undocumented

    ","parent_name":"ClientInfoMetrics"},"Structs/ClientInfoMetrics.html#/s:5Glean17ClientInfoMetricsV17appDisplayVersionSSvp":{"name":"appDisplayVersion","abstract":"

    Undocumented

    ","parent_name":"ClientInfoMetrics"},"Structs/ClientInfoMetrics.html#/s:5Glean17ClientInfoMetricsV12appBuildDateAA8DatetimeVvp":{"name":"appBuildDate","abstract":"

    Undocumented

    ","parent_name":"ClientInfoMetrics"},"Structs/ClientInfoMetrics.html#/s:5Glean17ClientInfoMetricsV12architectureSSvp":{"name":"architecture","abstract":"

    Undocumented

    ","parent_name":"ClientInfoMetrics"},"Structs/ClientInfoMetrics.html#/s:5Glean17ClientInfoMetricsV9osVersionSSvp":{"name":"osVersion","abstract":"

    Undocumented

    ","parent_name":"ClientInfoMetrics"},"Structs/ClientInfoMetrics.html#/s:5Glean17ClientInfoMetricsV7channelSSSgvp":{"name":"channel","abstract":"

    Undocumented

    ","parent_name":"ClientInfoMetrics"},"Structs/ClientInfoMetrics.html#/s:5Glean17ClientInfoMetricsV6localeSSSgvp":{"name":"locale","abstract":"

    Undocumented

    ","parent_name":"ClientInfoMetrics"},"Structs/ClientInfoMetrics.html#/s:5Glean17ClientInfoMetricsV18deviceManufacturerSSSgvp":{"name":"deviceManufacturer","abstract":"

    Undocumented

    ","parent_name":"ClientInfoMetrics"},"Structs/ClientInfoMetrics.html#/s:5Glean17ClientInfoMetricsV11deviceModelSSSgvp":{"name":"deviceModel","abstract":"

    Undocumented

    ","parent_name":"ClientInfoMetrics"},"Structs/ClientInfoMetrics.html#/s:5Glean17ClientInfoMetricsV17androidSdkVersionSSSgvp":{"name":"androidSdkVersion","abstract":"

    Undocumented

    ","parent_name":"ClientInfoMetrics"},"Structs/ClientInfoMetrics.html#/s:5Glean17ClientInfoMetricsV18windowsBuildNumbers5Int64VSgvp":{"name":"windowsBuildNumber","abstract":"

    Undocumented

    ","parent_name":"ClientInfoMetrics"},"Structs/ClientInfoMetrics.html#/s:5Glean17ClientInfoMetricsV8appBuild0E14DisplayVersion0eF4Date12architecture02osH07channel6locale18deviceManufacturer0N5Model010androidSdkH007windowsF6NumberACSS_SSAA8DatetimeVS3SSgA4Qs5Int64VSgtcfc":{"name":"init(appBuild:appDisplayVersion:appBuildDate:architecture:osVersion:channel:locale:deviceManufacturer:deviceModel:androidSdkVersion:windowsBuildNumber:)","abstract":"

    Undocumented

    ","parent_name":"ClientInfoMetrics"},"Structs/ClientInfoMetrics.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"ClientInfoMetrics"},"Structs/ClientInfoMetrics.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"ClientInfoMetrics"},"Structs/FfiConverterTypeUuidMetric.html#/s:5Glean26FfiConverterTypeUuidMetricV4liftyAA0eF0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeUuidMetric"},"Structs/FfiConverterTypeUuidMetric.html#/s:5Glean26FfiConverterTypeUuidMetricV5lowerySvAA0eF0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeUuidMetric"},"Structs/FfiConverterTypeUuidMetric.html#/s:5Glean26FfiConverterTypeUuidMetricV4read4fromAA0eF0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeUuidMetric"},"Structs/FfiConverterTypeUuidMetric.html#/s:5Glean26FfiConverterTypeUuidMetricV5write_4intoyAA0eF0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeUuidMetric"},"Structs/FfiConverterTypeUrlMetric.html#/s:5Glean25FfiConverterTypeUrlMetricV4liftyAA0eF0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeUrlMetric"},"Structs/FfiConverterTypeUrlMetric.html#/s:5Glean25FfiConverterTypeUrlMetricV5lowerySvAA0eF0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeUrlMetric"},"Structs/FfiConverterTypeUrlMetric.html#/s:5Glean25FfiConverterTypeUrlMetricV4read4fromAA0eF0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeUrlMetric"},"Structs/FfiConverterTypeUrlMetric.html#/s:5Glean25FfiConverterTypeUrlMetricV5write_4intoyAA0eF0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeUrlMetric"},"Structs/FfiConverterTypeTimingDistributionMetric.html#/s:5Glean40FfiConverterTypeTimingDistributionMetricV4liftyAA0efG0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeTimingDistributionMetric"},"Structs/FfiConverterTypeTimingDistributionMetric.html#/s:5Glean40FfiConverterTypeTimingDistributionMetricV5lowerySvAA0efG0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeTimingDistributionMetric"},"Structs/FfiConverterTypeTimingDistributionMetric.html#/s:5Glean40FfiConverterTypeTimingDistributionMetricV4read4fromAA0efG0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeTimingDistributionMetric"},"Structs/FfiConverterTypeTimingDistributionMetric.html#/s:5Glean40FfiConverterTypeTimingDistributionMetricV5write_4intoyAA0efG0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeTimingDistributionMetric"},"Structs/FfiConverterTypeTimespanMetric.html#/s:5Glean30FfiConverterTypeTimespanMetricV4liftyAA0eF0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeTimespanMetric"},"Structs/FfiConverterTypeTimespanMetric.html#/s:5Glean30FfiConverterTypeTimespanMetricV5lowerySvAA0eF0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeTimespanMetric"},"Structs/FfiConverterTypeTimespanMetric.html#/s:5Glean30FfiConverterTypeTimespanMetricV4read4fromAA0eF0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeTimespanMetric"},"Structs/FfiConverterTypeTimespanMetric.html#/s:5Glean30FfiConverterTypeTimespanMetricV5write_4intoyAA0eF0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeTimespanMetric"},"Structs/FfiConverterTypeTextMetric.html#/s:5Glean26FfiConverterTypeTextMetricV4liftyAA0eF0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeTextMetric"},"Structs/FfiConverterTypeTextMetric.html#/s:5Glean26FfiConverterTypeTextMetricV5lowerySvAA0eF0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeTextMetric"},"Structs/FfiConverterTypeTextMetric.html#/s:5Glean26FfiConverterTypeTextMetricV4read4fromAA0eF0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeTextMetric"},"Structs/FfiConverterTypeTextMetric.html#/s:5Glean26FfiConverterTypeTextMetricV5write_4intoyAA0eF0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeTextMetric"},"Structs/FfiConverterTypeStringMetric.html#/s:5Glean28FfiConverterTypeStringMetricV4liftyAA0eF0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeStringMetric"},"Structs/FfiConverterTypeStringMetric.html#/s:5Glean28FfiConverterTypeStringMetricV5lowerySvAA0eF0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeStringMetric"},"Structs/FfiConverterTypeStringMetric.html#/s:5Glean28FfiConverterTypeStringMetricV4read4fromAA0eF0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeStringMetric"},"Structs/FfiConverterTypeStringMetric.html#/s:5Glean28FfiConverterTypeStringMetricV5write_4intoyAA0eF0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeStringMetric"},"Structs/FfiConverterTypeStringListMetric.html#/s:5Glean32FfiConverterTypeStringListMetricV4liftyAA0efG0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeStringListMetric"},"Structs/FfiConverterTypeStringListMetric.html#/s:5Glean32FfiConverterTypeStringListMetricV5lowerySvAA0efG0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeStringListMetric"},"Structs/FfiConverterTypeStringListMetric.html#/s:5Glean32FfiConverterTypeStringListMetricV4read4fromAA0efG0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeStringListMetric"},"Structs/FfiConverterTypeStringListMetric.html#/s:5Glean32FfiConverterTypeStringListMetricV5write_4intoyAA0efG0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeStringListMetric"},"Structs/FfiConverterTypeRateMetric.html#/s:5Glean26FfiConverterTypeRateMetricV4liftyAA0eF0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeRateMetric"},"Structs/FfiConverterTypeRateMetric.html#/s:5Glean26FfiConverterTypeRateMetricV5lowerySvAA0eF0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeRateMetric"},"Structs/FfiConverterTypeRateMetric.html#/s:5Glean26FfiConverterTypeRateMetricV4read4fromAA0eF0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeRateMetric"},"Structs/FfiConverterTypeRateMetric.html#/s:5Glean26FfiConverterTypeRateMetricV5write_4intoyAA0eF0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeRateMetric"},"Structs/FfiConverterTypeQuantityMetric.html#/s:5Glean30FfiConverterTypeQuantityMetricV4liftyAA0eF0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeQuantityMetric"},"Structs/FfiConverterTypeQuantityMetric.html#/s:5Glean30FfiConverterTypeQuantityMetricV5lowerySvAA0eF0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeQuantityMetric"},"Structs/FfiConverterTypeQuantityMetric.html#/s:5Glean30FfiConverterTypeQuantityMetricV4read4fromAA0eF0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeQuantityMetric"},"Structs/FfiConverterTypeQuantityMetric.html#/s:5Glean30FfiConverterTypeQuantityMetricV5write_4intoyAA0eF0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeQuantityMetric"},"Structs/FfiConverterTypePingType.html#/s:5Glean020FfiConverterTypePingD0V4liftyAA0eD0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypePingType"},"Structs/FfiConverterTypePingType.html#/s:5Glean020FfiConverterTypePingD0V5lowerySvAA0eD0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypePingType"},"Structs/FfiConverterTypePingType.html#/s:5Glean020FfiConverterTypePingD0V4read4fromAA0eD0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypePingType"},"Structs/FfiConverterTypePingType.html#/s:5Glean020FfiConverterTypePingD0V5write_4intoyAA0eD0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypePingType"},"Structs/FfiConverterTypeObjectMetric.html#/s:5Glean28FfiConverterTypeObjectMetricV4liftyAA0eF0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeObjectMetric"},"Structs/FfiConverterTypeObjectMetric.html#/s:5Glean28FfiConverterTypeObjectMetricV5lowerySvAA0eF0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeObjectMetric"},"Structs/FfiConverterTypeObjectMetric.html#/s:5Glean28FfiConverterTypeObjectMetricV4read4fromAA0eF0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeObjectMetric"},"Structs/FfiConverterTypeObjectMetric.html#/s:5Glean28FfiConverterTypeObjectMetricV5write_4intoyAA0eF0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeObjectMetric"},"Structs/FfiConverterTypeNumeratorMetric.html#/s:5Glean31FfiConverterTypeNumeratorMetricV4liftyAA0eF0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeNumeratorMetric"},"Structs/FfiConverterTypeNumeratorMetric.html#/s:5Glean31FfiConverterTypeNumeratorMetricV5lowerySvAA0eF0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeNumeratorMetric"},"Structs/FfiConverterTypeNumeratorMetric.html#/s:5Glean31FfiConverterTypeNumeratorMetricV4read4fromAA0eF0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeNumeratorMetric"},"Structs/FfiConverterTypeNumeratorMetric.html#/s:5Glean31FfiConverterTypeNumeratorMetricV5write_4intoyAA0eF0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeNumeratorMetric"},"Structs/FfiConverterTypeMemoryDistributionMetric.html#/s:5Glean40FfiConverterTypeMemoryDistributionMetricV4liftyAA0efG0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeMemoryDistributionMetric"},"Structs/FfiConverterTypeMemoryDistributionMetric.html#/s:5Glean40FfiConverterTypeMemoryDistributionMetricV5lowerySvAA0efG0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeMemoryDistributionMetric"},"Structs/FfiConverterTypeMemoryDistributionMetric.html#/s:5Glean40FfiConverterTypeMemoryDistributionMetricV4read4fromAA0efG0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeMemoryDistributionMetric"},"Structs/FfiConverterTypeMemoryDistributionMetric.html#/s:5Glean40FfiConverterTypeMemoryDistributionMetricV5write_4intoyAA0efG0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeMemoryDistributionMetric"},"Structs/FfiConverterTypeLabeledString.html#/s:5Glean29FfiConverterTypeLabeledStringV4liftyAA0eF0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLabeledString"},"Structs/FfiConverterTypeLabeledString.html#/s:5Glean29FfiConverterTypeLabeledStringV5lowerySvAA0eF0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLabeledString"},"Structs/FfiConverterTypeLabeledString.html#/s:5Glean29FfiConverterTypeLabeledStringV4read4fromAA0eF0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLabeledString"},"Structs/FfiConverterTypeLabeledString.html#/s:5Glean29FfiConverterTypeLabeledStringV5write_4intoyAA0eF0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLabeledString"},"Structs/FfiConverterTypeLabeledCounter.html#/s:5Glean30FfiConverterTypeLabeledCounterV4liftyAA0eF0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLabeledCounter"},"Structs/FfiConverterTypeLabeledCounter.html#/s:5Glean30FfiConverterTypeLabeledCounterV5lowerySvAA0eF0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLabeledCounter"},"Structs/FfiConverterTypeLabeledCounter.html#/s:5Glean30FfiConverterTypeLabeledCounterV4read4fromAA0eF0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLabeledCounter"},"Structs/FfiConverterTypeLabeledCounter.html#/s:5Glean30FfiConverterTypeLabeledCounterV5write_4intoyAA0eF0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLabeledCounter"},"Structs/FfiConverterTypeLabeledBoolean.html#/s:5Glean30FfiConverterTypeLabeledBooleanV4liftyAA0eF0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLabeledBoolean"},"Structs/FfiConverterTypeLabeledBoolean.html#/s:5Glean30FfiConverterTypeLabeledBooleanV5lowerySvAA0eF0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLabeledBoolean"},"Structs/FfiConverterTypeLabeledBoolean.html#/s:5Glean30FfiConverterTypeLabeledBooleanV4read4fromAA0eF0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLabeledBoolean"},"Structs/FfiConverterTypeLabeledBoolean.html#/s:5Glean30FfiConverterTypeLabeledBooleanV5write_4intoyAA0eF0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLabeledBoolean"},"Structs/FfiConverterTypeEventMetric.html#/s:5Glean27FfiConverterTypeEventMetricV4liftyAA0eF0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeEventMetric"},"Structs/FfiConverterTypeEventMetric.html#/s:5Glean27FfiConverterTypeEventMetricV5lowerySvAA0eF0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeEventMetric"},"Structs/FfiConverterTypeEventMetric.html#/s:5Glean27FfiConverterTypeEventMetricV4read4fromAA0eF0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeEventMetric"},"Structs/FfiConverterTypeEventMetric.html#/s:5Glean27FfiConverterTypeEventMetricV5write_4intoyAA0eF0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeEventMetric"},"Structs/FfiConverterTypeDenominatorMetric.html#/s:5Glean33FfiConverterTypeDenominatorMetricV4liftyAA0eF0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeDenominatorMetric"},"Structs/FfiConverterTypeDenominatorMetric.html#/s:5Glean33FfiConverterTypeDenominatorMetricV5lowerySvAA0eF0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeDenominatorMetric"},"Structs/FfiConverterTypeDenominatorMetric.html#/s:5Glean33FfiConverterTypeDenominatorMetricV4read4fromAA0eF0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeDenominatorMetric"},"Structs/FfiConverterTypeDenominatorMetric.html#/s:5Glean33FfiConverterTypeDenominatorMetricV5write_4intoyAA0eF0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeDenominatorMetric"},"Structs/FfiConverterTypeDatetimeMetric.html#/s:5Glean30FfiConverterTypeDatetimeMetricV4liftyAA0eF0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeDatetimeMetric"},"Structs/FfiConverterTypeDatetimeMetric.html#/s:5Glean30FfiConverterTypeDatetimeMetricV5lowerySvAA0eF0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeDatetimeMetric"},"Structs/FfiConverterTypeDatetimeMetric.html#/s:5Glean30FfiConverterTypeDatetimeMetricV4read4fromAA0eF0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeDatetimeMetric"},"Structs/FfiConverterTypeDatetimeMetric.html#/s:5Glean30FfiConverterTypeDatetimeMetricV5write_4intoyAA0eF0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeDatetimeMetric"},"Structs/FfiConverterTypeCustomDistributionMetric.html#/s:5Glean40FfiConverterTypeCustomDistributionMetricV4liftyAA0efG0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeCustomDistributionMetric"},"Structs/FfiConverterTypeCustomDistributionMetric.html#/s:5Glean40FfiConverterTypeCustomDistributionMetricV5lowerySvAA0efG0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeCustomDistributionMetric"},"Structs/FfiConverterTypeCustomDistributionMetric.html#/s:5Glean40FfiConverterTypeCustomDistributionMetricV4read4fromAA0efG0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeCustomDistributionMetric"},"Structs/FfiConverterTypeCustomDistributionMetric.html#/s:5Glean40FfiConverterTypeCustomDistributionMetricV5write_4intoyAA0efG0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeCustomDistributionMetric"},"Structs/FfiConverterTypeCounterMetric.html#/s:5Glean29FfiConverterTypeCounterMetricV4liftyAA0eF0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeCounterMetric"},"Structs/FfiConverterTypeCounterMetric.html#/s:5Glean29FfiConverterTypeCounterMetricV5lowerySvAA0eF0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeCounterMetric"},"Structs/FfiConverterTypeCounterMetric.html#/s:5Glean29FfiConverterTypeCounterMetricV4read4fromAA0eF0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeCounterMetric"},"Structs/FfiConverterTypeCounterMetric.html#/s:5Glean29FfiConverterTypeCounterMetricV5write_4intoyAA0eF0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeCounterMetric"},"Structs/FfiConverterTypeBooleanMetric.html#/s:5Glean29FfiConverterTypeBooleanMetricV4liftyAA0eF0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeBooleanMetric"},"Structs/FfiConverterTypeBooleanMetric.html#/s:5Glean29FfiConverterTypeBooleanMetricV5lowerySvAA0eF0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeBooleanMetric"},"Structs/FfiConverterTypeBooleanMetric.html#/s:5Glean29FfiConverterTypeBooleanMetricV4read4fromAA0eF0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeBooleanMetric"},"Structs/FfiConverterTypeBooleanMetric.html#/s:5Glean29FfiConverterTypeBooleanMetricV5write_4intoyAA0eF0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeBooleanMetric"},"Structs/Configuration.html#/s:5Glean13ConfigurationV9maxEvents7channel14serverEndpoint8dataPath8logLevel21enableEventTimestamps17experimentationId0L13InternalPings21pingLifetimeThreshold0sT7MaxTimeACs5Int32VSg_SSSgA2qA0K6FilterOSgSbAQSbS2itcfc":{"name":"init(maxEvents:channel:serverEndpoint:dataPath:logLevel:enableEventTimestamps:experimentationId:enableInternalPings:pingLifetimeThreshold:pingLifetimeMaxTime:)","abstract":"

    Create a new Glean Configuration object

    ","parent_name":"Configuration"},"Structs/Configuration.html":{"name":"Configuration","abstract":"

    The Configuration struct describes how to configure Glean as well as providing convenience"},"Structs/FfiConverterTypeBooleanMetric.html":{"name":"FfiConverterTypeBooleanMetric","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeCounterMetric.html":{"name":"FfiConverterTypeCounterMetric","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeCustomDistributionMetric.html":{"name":"FfiConverterTypeCustomDistributionMetric","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeDatetimeMetric.html":{"name":"FfiConverterTypeDatetimeMetric","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeDenominatorMetric.html":{"name":"FfiConverterTypeDenominatorMetric","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeEventMetric.html":{"name":"FfiConverterTypeEventMetric","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeLabeledBoolean.html":{"name":"FfiConverterTypeLabeledBoolean","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeLabeledCounter.html":{"name":"FfiConverterTypeLabeledCounter","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeLabeledString.html":{"name":"FfiConverterTypeLabeledString","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeMemoryDistributionMetric.html":{"name":"FfiConverterTypeMemoryDistributionMetric","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeNumeratorMetric.html":{"name":"FfiConverterTypeNumeratorMetric","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeObjectMetric.html":{"name":"FfiConverterTypeObjectMetric","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypePingType.html":{"name":"FfiConverterTypePingType","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeQuantityMetric.html":{"name":"FfiConverterTypeQuantityMetric","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeRateMetric.html":{"name":"FfiConverterTypeRateMetric","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeStringListMetric.html":{"name":"FfiConverterTypeStringListMetric","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeStringMetric.html":{"name":"FfiConverterTypeStringMetric","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeTextMetric.html":{"name":"FfiConverterTypeTextMetric","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeTimespanMetric.html":{"name":"FfiConverterTypeTimespanMetric","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeTimingDistributionMetric.html":{"name":"FfiConverterTypeTimingDistributionMetric","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeUrlMetric.html":{"name":"FfiConverterTypeUrlMetric","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeUuidMetric.html":{"name":"FfiConverterTypeUuidMetric","abstract":"

    Undocumented

    "},"Structs/ClientInfoMetrics.html":{"name":"ClientInfoMetrics","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeClientInfoMetrics.html":{"name":"FfiConverterTypeClientInfoMetrics","abstract":"

    Undocumented

    "},"Structs/CommonMetricData.html":{"name":"CommonMetricData","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeCommonMetricData.html":{"name":"FfiConverterTypeCommonMetricData","abstract":"

    Undocumented

    "},"Structs/Datetime.html":{"name":"Datetime","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeDatetime.html":{"name":"FfiConverterTypeDatetime","abstract":"

    Undocumented

    "},"Structs/DistributionData.html":{"name":"DistributionData","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeDistributionData.html":{"name":"FfiConverterTypeDistributionData","abstract":"

    Undocumented

    "},"Structs/InternalConfiguration.html":{"name":"InternalConfiguration","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeInternalConfiguration.html":{"name":"FfiConverterTypeInternalConfiguration","abstract":"

    Undocumented

    "},"Structs/PingRateLimit.html":{"name":"PingRateLimit","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypePingRateLimit.html":{"name":"FfiConverterTypePingRateLimit","abstract":"

    Undocumented

    "},"Structs/PingRequest.html":{"name":"PingRequest","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypePingRequest.html":{"name":"FfiConverterTypePingRequest","abstract":"

    Undocumented

    "},"Structs/Rate.html":{"name":"Rate","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeRate.html":{"name":"FfiConverterTypeRate","abstract":"

    Undocumented

    "},"Structs/RecordedEvent.html":{"name":"RecordedEvent","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeRecordedEvent.html":{"name":"FfiConverterTypeRecordedEvent","abstract":"

    Undocumented

    "},"Structs/RecordedExperiment.html":{"name":"RecordedExperiment","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeRecordedExperiment.html":{"name":"FfiConverterTypeRecordedExperiment","abstract":"

    Undocumented

    "},"Structs/TimerId.html":{"name":"TimerId","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeTimerId.html":{"name":"FfiConverterTypeTimerId","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeCallbackError.html":{"name":"FfiConverterTypeCallbackError","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeErrorType.html":{"name":"FfiConverterTypeErrorType","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeHistogramType.html":{"name":"FfiConverterTypeHistogramType","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeLabeledMetricData.html":{"name":"FfiConverterTypeLabeledMetricData","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeLevelFilter.html":{"name":"FfiConverterTypeLevelFilter","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeLifetime.html":{"name":"FfiConverterTypeLifetime","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeMemoryUnit.html":{"name":"FfiConverterTypeMemoryUnit","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypePingUploadTask.html":{"name":"FfiConverterTypePingUploadTask","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeTimeUnit.html":{"name":"FfiConverterTypeTimeUnit","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeUploadResult.html":{"name":"FfiConverterTypeUploadResult","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeUploadTaskAction.html":{"name":"FfiConverterTypeUploadTaskAction","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeCowString.html":{"name":"FfiConverterTypeCowString","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeJsonValue.html":{"name":"FfiConverterTypeJsonValue","abstract":"

    Undocumented

    "},"Structs/BuildInfo.html":{"name":"BuildInfo","abstract":"

    Undocumented

    "},"Protocols/ReasonCodes.html#/s:5Glean11ReasonCodesP5indexSiyF":{"name":"index()","abstract":"

    The index of the reason code, used to index the string array passed at","parent_name":"ReasonCodes"},"Protocols/ObjectSerialize.html#/s:5Glean15ObjectSerializeP014intoSerializedB0SSyF":{"name":"intoSerializedObject()","abstract":"

    Undocumented

    ","parent_name":"ObjectSerialize"},"Protocols/EventExtras.html#/s:5Glean11EventExtrasP13toExtraRecordSDyS2SGyF":{"name":"toExtraRecord()","abstract":"

    Convert the event extras into 2 lists:

    ","parent_name":"EventExtras"},"Protocols/OnGleanEvents.html#/s:5Glean02OnA6EventsP18initializeFinishedyyF":{"name":"initializeFinished()","abstract":"

    Undocumented

    ","parent_name":"OnGleanEvents"},"Protocols/OnGleanEvents.html#/s:5Glean02OnA6EventsP13triggerUploadyyKF":{"name":"triggerUpload()","abstract":"

    Undocumented

    ","parent_name":"OnGleanEvents"},"Protocols/OnGleanEvents.html#/s:5Glean02OnA6EventsP25startMetricsPingSchedulerSbyF":{"name":"startMetricsPingScheduler()","abstract":"

    Undocumented

    ","parent_name":"OnGleanEvents"},"Protocols/OnGleanEvents.html#/s:5Glean02OnA6EventsP13cancelUploadsyyKF":{"name":"cancelUploads()","abstract":"

    Undocumented

    ","parent_name":"OnGleanEvents"},"Protocols/OnGleanEvents.html#/s:5Glean02OnA6EventsP8shutdownyyKF":{"name":"shutdown()","abstract":"

    Undocumented

    ","parent_name":"OnGleanEvents"},"Protocols/GleanEventListener.html#/s:5Glean0A13EventListenerP02onB8RecordedyySSF":{"name":"onEventRecorded(_:)","abstract":"

    Undocumented

    ","parent_name":"GleanEventListener"},"Protocols/UuidMetricProtocol.html#/s:5Glean18UuidMetricProtocolP14generateAndSetSSyF":{"name":"generateAndSet()","abstract":"

    Undocumented

    ","parent_name":"UuidMetricProtocol"},"Protocols/UuidMetricProtocol.html#/s:5Glean18UuidMetricProtocolP3setyySSF":{"name":"set(_:)","abstract":"

    Undocumented

    ","parent_name":"UuidMetricProtocol"},"Protocols/UuidMetricProtocol.html#/s:5Glean18UuidMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"UuidMetricProtocol"},"Protocols/UuidMetricProtocol.html#/s:5Glean18UuidMetricProtocolP12testGetValueySSSgAEF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"UuidMetricProtocol"},"Protocols/UrlMetricProtocol.html#/s:5Glean17UrlMetricProtocolP3setyySSF":{"name":"set(_:)","abstract":"

    Undocumented

    ","parent_name":"UrlMetricProtocol"},"Protocols/UrlMetricProtocol.html#/s:5Glean17UrlMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"UrlMetricProtocol"},"Protocols/UrlMetricProtocol.html#/s:5Glean17UrlMetricProtocolP12testGetValueySSSgAEF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"UrlMetricProtocol"},"Protocols/TimingDistributionMetricProtocol.html#/s:5Glean32TimingDistributionMetricProtocolP17accumulateSamplesyySays5Int64VGF":{"name":"accumulateSamples(_:)","abstract":"

    Undocumented

    ","parent_name":"TimingDistributionMetricProtocol"},"Protocols/TimingDistributionMetricProtocol.html#/s:5Glean32TimingDistributionMetricProtocolP22accumulateSingleSampleyys5Int64VF":{"name":"accumulateSingleSample(_:)","abstract":"

    Undocumented

    ","parent_name":"TimingDistributionMetricProtocol"},"Protocols/TimingDistributionMetricProtocol.html#/s:5Glean32TimingDistributionMetricProtocolP6cancelyyAA7TimerIdVF":{"name":"cancel(_:)","abstract":"

    Undocumented

    ","parent_name":"TimingDistributionMetricProtocol"},"Protocols/TimingDistributionMetricProtocol.html#/s:5Glean32TimingDistributionMetricProtocolP5startAA7TimerIdVyF":{"name":"start()","abstract":"

    Undocumented

    ","parent_name":"TimingDistributionMetricProtocol"},"Protocols/TimingDistributionMetricProtocol.html#/s:5Glean32TimingDistributionMetricProtocolP17stopAndAccumulateyyAA7TimerIdVF":{"name":"stopAndAccumulate(_:)","abstract":"

    Undocumented

    ","parent_name":"TimingDistributionMetricProtocol"},"Protocols/TimingDistributionMetricProtocol.html#/s:5Glean32TimingDistributionMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"TimingDistributionMetricProtocol"},"Protocols/TimingDistributionMetricProtocol.html#/s:5Glean32TimingDistributionMetricProtocolP12testGetValueyAA0C4DataVSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"TimingDistributionMetricProtocol"},"Protocols/TimespanMetricProtocol.html#/s:5Glean22TimespanMetricProtocolP6cancelyyF":{"name":"cancel()","abstract":"

    Undocumented

    ","parent_name":"TimespanMetricProtocol"},"Protocols/TimespanMetricProtocol.html#/s:5Glean22TimespanMetricProtocolP11setRawNanosyys5Int64VF":{"name":"setRawNanos(_:)","abstract":"

    Undocumented

    ","parent_name":"TimespanMetricProtocol"},"Protocols/TimespanMetricProtocol.html#/s:5Glean22TimespanMetricProtocolP5startyyF":{"name":"start()","abstract":"

    Undocumented

    ","parent_name":"TimespanMetricProtocol"},"Protocols/TimespanMetricProtocol.html#/s:5Glean22TimespanMetricProtocolP4stopyyF":{"name":"stop()","abstract":"

    Undocumented

    ","parent_name":"TimespanMetricProtocol"},"Protocols/TimespanMetricProtocol.html#/s:5Glean22TimespanMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"TimespanMetricProtocol"},"Protocols/TimespanMetricProtocol.html#/s:5Glean22TimespanMetricProtocolP12testGetValueys5Int64VSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"TimespanMetricProtocol"},"Protocols/TextMetricProtocol.html#/s:5Glean18TextMetricProtocolP3setyySSF":{"name":"set(_:)","abstract":"

    Undocumented

    ","parent_name":"TextMetricProtocol"},"Protocols/TextMetricProtocol.html#/s:5Glean18TextMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"TextMetricProtocol"},"Protocols/TextMetricProtocol.html#/s:5Glean18TextMetricProtocolP12testGetValueySSSgAEF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"TextMetricProtocol"},"Protocols/StringMetricProtocol.html#/s:5Glean20StringMetricProtocolP3setyySSF":{"name":"set(_:)","abstract":"

    Undocumented

    ","parent_name":"StringMetricProtocol"},"Protocols/StringMetricProtocol.html#/s:5Glean20StringMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"StringMetricProtocol"},"Protocols/StringMetricProtocol.html#/s:5Glean20StringMetricProtocolP12testGetValueySSSgAEF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"StringMetricProtocol"},"Protocols/StringListMetricProtocol.html#/s:5Glean24StringListMetricProtocolP3addyySSF":{"name":"add(_:)","abstract":"

    Undocumented

    ","parent_name":"StringListMetricProtocol"},"Protocols/StringListMetricProtocol.html#/s:5Glean24StringListMetricProtocolP3setyySaySSGF":{"name":"set(_:)","abstract":"

    Undocumented

    ","parent_name":"StringListMetricProtocol"},"Protocols/StringListMetricProtocol.html#/s:5Glean24StringListMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"StringListMetricProtocol"},"Protocols/StringListMetricProtocol.html#/s:5Glean24StringListMetricProtocolP12testGetValueySaySSGSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"StringListMetricProtocol"},"Protocols/RateMetricProtocol.html#/s:5Glean18RateMetricProtocolP16addToDenominatoryys5Int32VF":{"name":"addToDenominator(_:)","abstract":"

    Undocumented

    ","parent_name":"RateMetricProtocol"},"Protocols/RateMetricProtocol.html#/s:5Glean18RateMetricProtocolP14addToNumeratoryys5Int32VF":{"name":"addToNumerator(_:)","abstract":"

    Undocumented

    ","parent_name":"RateMetricProtocol"},"Protocols/RateMetricProtocol.html#/s:5Glean18RateMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"RateMetricProtocol"},"Protocols/RateMetricProtocol.html#/s:5Glean18RateMetricProtocolP12testGetValueyAA0B0VSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"RateMetricProtocol"},"Protocols/QuantityMetricProtocol.html#/s:5Glean22QuantityMetricProtocolP3setyys5Int64VF":{"name":"set(_:)","abstract":"

    Undocumented

    ","parent_name":"QuantityMetricProtocol"},"Protocols/QuantityMetricProtocol.html#/s:5Glean22QuantityMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"QuantityMetricProtocol"},"Protocols/QuantityMetricProtocol.html#/s:5Glean22QuantityMetricProtocolP12testGetValueys5Int64VSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"QuantityMetricProtocol"},"Protocols/PingTypeProtocol.html#/s:5Glean16PingTypeProtocolP6submityySSSgF":{"name":"submit(_:)","abstract":"

    Undocumented

    ","parent_name":"PingTypeProtocol"},"Protocols/ObjectMetricProtocol.html#/s:5Glean20ObjectMetricProtocolP17recordSchemaErroryyF":{"name":"recordSchemaError()","abstract":"

    Undocumented

    ","parent_name":"ObjectMetricProtocol"},"Protocols/ObjectMetricProtocol.html#/s:5Glean20ObjectMetricProtocolP9setStringyySSF":{"name":"setString(_:)","abstract":"

    Undocumented

    ","parent_name":"ObjectMetricProtocol"},"Protocols/ObjectMetricProtocol.html#/s:5Glean20ObjectMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"ObjectMetricProtocol"},"Protocols/ObjectMetricProtocol.html#/s:5Glean20ObjectMetricProtocolP12testGetValueySSSgAEF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"ObjectMetricProtocol"},"Protocols/NumeratorMetricProtocol.html#/s:5Glean23NumeratorMetricProtocolP05addToB0yys5Int32VF":{"name":"addToNumerator(_:)","abstract":"

    Undocumented

    ","parent_name":"NumeratorMetricProtocol"},"Protocols/NumeratorMetricProtocol.html#/s:5Glean23NumeratorMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"NumeratorMetricProtocol"},"Protocols/NumeratorMetricProtocol.html#/s:5Glean23NumeratorMetricProtocolP12testGetValueyAA4RateVSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"NumeratorMetricProtocol"},"Protocols/MemoryDistributionMetricProtocol.html#/s:5Glean32MemoryDistributionMetricProtocolP10accumulateyys5Int64VF":{"name":"accumulate(_:)","abstract":"

    Undocumented

    ","parent_name":"MemoryDistributionMetricProtocol"},"Protocols/MemoryDistributionMetricProtocol.html#/s:5Glean32MemoryDistributionMetricProtocolP17accumulateSamplesyySays5Int64VGF":{"name":"accumulateSamples(_:)","abstract":"

    Undocumented

    ","parent_name":"MemoryDistributionMetricProtocol"},"Protocols/MemoryDistributionMetricProtocol.html#/s:5Glean32MemoryDistributionMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"MemoryDistributionMetricProtocol"},"Protocols/MemoryDistributionMetricProtocol.html#/s:5Glean32MemoryDistributionMetricProtocolP12testGetValueyAA0C4DataVSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"MemoryDistributionMetricProtocol"},"Protocols/LabeledStringProtocol.html#/s:5Glean21LabeledStringProtocolP3getyAA0C6MetricCSSF":{"name":"get(_:)","abstract":"

    Undocumented

    ","parent_name":"LabeledStringProtocol"},"Protocols/LabeledStringProtocol.html#/s:5Glean21LabeledStringProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"LabeledStringProtocol"},"Protocols/LabeledCounterProtocol.html#/s:5Glean22LabeledCounterProtocolP3getyAA0C6MetricCSSF":{"name":"get(_:)","abstract":"

    Undocumented

    ","parent_name":"LabeledCounterProtocol"},"Protocols/LabeledCounterProtocol.html#/s:5Glean22LabeledCounterProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"LabeledCounterProtocol"},"Protocols/LabeledBooleanProtocol.html#/s:5Glean22LabeledBooleanProtocolP3getyAA0C6MetricCSSF":{"name":"get(_:)","abstract":"

    Undocumented

    ","parent_name":"LabeledBooleanProtocol"},"Protocols/LabeledBooleanProtocol.html#/s:5Glean22LabeledBooleanProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"LabeledBooleanProtocol"},"Protocols/EventMetricProtocol.html#/s:5Glean19EventMetricProtocolP6recordyySDyS2SGF":{"name":"record(_:)","abstract":"

    Undocumented

    ","parent_name":"EventMetricProtocol"},"Protocols/EventMetricProtocol.html#/s:5Glean19EventMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"EventMetricProtocol"},"Protocols/EventMetricProtocol.html#/s:5Glean19EventMetricProtocolP12testGetValueySayAA08RecordedB0VGSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"EventMetricProtocol"},"Protocols/DenominatorMetricProtocol.html#/s:5Glean25DenominatorMetricProtocolP3addyys5Int32VF":{"name":"add(_:)","abstract":"

    Undocumented

    ","parent_name":"DenominatorMetricProtocol"},"Protocols/DenominatorMetricProtocol.html#/s:5Glean25DenominatorMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"DenominatorMetricProtocol"},"Protocols/DenominatorMetricProtocol.html#/s:5Glean25DenominatorMetricProtocolP12testGetValueys5Int32VSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"DenominatorMetricProtocol"},"Protocols/DatetimeMetricProtocol.html#/s:5Glean22DatetimeMetricProtocolP3setyyAA0B0VSgF":{"name":"set(_:)","abstract":"

    Undocumented

    ","parent_name":"DatetimeMetricProtocol"},"Protocols/DatetimeMetricProtocol.html#/s:5Glean22DatetimeMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"DatetimeMetricProtocol"},"Protocols/DatetimeMetricProtocol.html#/s:5Glean22DatetimeMetricProtocolP12testGetValueyAA0B0VSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"DatetimeMetricProtocol"},"Protocols/DatetimeMetricProtocol.html#/s:5Glean22DatetimeMetricProtocolP20testGetValueAsStringySSSgAEF":{"name":"testGetValueAsString(_:)","abstract":"

    Undocumented

    ","parent_name":"DatetimeMetricProtocol"},"Protocols/CustomDistributionMetricProtocol.html#/s:5Glean32CustomDistributionMetricProtocolP17accumulateSamplesyySays5Int64VGF":{"name":"accumulateSamples(_:)","abstract":"

    Undocumented

    ","parent_name":"CustomDistributionMetricProtocol"},"Protocols/CustomDistributionMetricProtocol.html#/s:5Glean32CustomDistributionMetricProtocolP22accumulateSingleSampleyys5Int64VF":{"name":"accumulateSingleSample(_:)","abstract":"

    Undocumented

    ","parent_name":"CustomDistributionMetricProtocol"},"Protocols/CustomDistributionMetricProtocol.html#/s:5Glean32CustomDistributionMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"CustomDistributionMetricProtocol"},"Protocols/CustomDistributionMetricProtocol.html#/s:5Glean32CustomDistributionMetricProtocolP12testGetValueyAA0C4DataVSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"CustomDistributionMetricProtocol"},"Protocols/CounterMetricProtocol.html#/s:5Glean21CounterMetricProtocolP3addyys5Int32VF":{"name":"add(_:)","abstract":"

    Undocumented

    ","parent_name":"CounterMetricProtocol"},"Protocols/CounterMetricProtocol.html#/s:5Glean21CounterMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"CounterMetricProtocol"},"Protocols/CounterMetricProtocol.html#/s:5Glean21CounterMetricProtocolP12testGetValueys5Int32VSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"CounterMetricProtocol"},"Protocols/BooleanMetricProtocol.html#/s:5Glean21BooleanMetricProtocolP3setyySbF":{"name":"set(_:)","abstract":"

    Undocumented

    ","parent_name":"BooleanMetricProtocol"},"Protocols/BooleanMetricProtocol.html#/s:5Glean21BooleanMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"BooleanMetricProtocol"},"Protocols/BooleanMetricProtocol.html#/s:5Glean21BooleanMetricProtocolP12testGetValueySbSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"BooleanMetricProtocol"},"Protocols/BooleanMetricProtocol.html":{"name":"BooleanMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/CounterMetricProtocol.html":{"name":"CounterMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/CustomDistributionMetricProtocol.html":{"name":"CustomDistributionMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/DatetimeMetricProtocol.html":{"name":"DatetimeMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/DenominatorMetricProtocol.html":{"name":"DenominatorMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/EventMetricProtocol.html":{"name":"EventMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/LabeledBooleanProtocol.html":{"name":"LabeledBooleanProtocol","abstract":"

    Undocumented

    "},"Protocols/LabeledCounterProtocol.html":{"name":"LabeledCounterProtocol","abstract":"

    Undocumented

    "},"Protocols/LabeledStringProtocol.html":{"name":"LabeledStringProtocol","abstract":"

    Undocumented

    "},"Protocols/MemoryDistributionMetricProtocol.html":{"name":"MemoryDistributionMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/NumeratorMetricProtocol.html":{"name":"NumeratorMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/ObjectMetricProtocol.html":{"name":"ObjectMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/PingTypeProtocol.html":{"name":"PingTypeProtocol","abstract":"

    Undocumented

    "},"Protocols/QuantityMetricProtocol.html":{"name":"QuantityMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/RateMetricProtocol.html":{"name":"RateMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/StringListMetricProtocol.html":{"name":"StringListMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/StringMetricProtocol.html":{"name":"StringMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/TextMetricProtocol.html":{"name":"TextMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/TimespanMetricProtocol.html":{"name":"TimespanMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/TimingDistributionMetricProtocol.html":{"name":"TimingDistributionMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/UrlMetricProtocol.html":{"name":"UrlMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/UuidMetricProtocol.html":{"name":"UuidMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/GleanEventListener.html":{"name":"GleanEventListener","abstract":"

    Undocumented

    "},"Protocols/OnGleanEvents.html":{"name":"OnGleanEvents","abstract":"

    Undocumented

    "},"Protocols/EventExtras.html":{"name":"EventExtras","abstract":"

    Extra keys for events by name.

    "},"Protocols/ObjectSerialize.html":{"name":"ObjectSerialize","abstract":"

    An object that can be serialized into JSON.

    "},"Protocols/ReasonCodes.html":{"name":"ReasonCodes","abstract":"

    The reasons a ping may be sent."},"Functions.html#/s:5Glean34FfiConverterTypeBooleanMetric_liftyAA0eF0CSvKF":{"name":"FfiConverterTypeBooleanMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean35FfiConverterTypeBooleanMetric_lowerySvAA0eF0CF":{"name":"FfiConverterTypeBooleanMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean34FfiConverterTypeCounterMetric_liftyAA0eF0CSvKF":{"name":"FfiConverterTypeCounterMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean35FfiConverterTypeCounterMetric_lowerySvAA0eF0CF":{"name":"FfiConverterTypeCounterMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean45FfiConverterTypeCustomDistributionMetric_liftyAA0efG0CSvKF":{"name":"FfiConverterTypeCustomDistributionMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean46FfiConverterTypeCustomDistributionMetric_lowerySvAA0efG0CF":{"name":"FfiConverterTypeCustomDistributionMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean35FfiConverterTypeDatetimeMetric_liftyAA0eF0CSvKF":{"name":"FfiConverterTypeDatetimeMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean36FfiConverterTypeDatetimeMetric_lowerySvAA0eF0CF":{"name":"FfiConverterTypeDatetimeMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean38FfiConverterTypeDenominatorMetric_liftyAA0eF0CSvKF":{"name":"FfiConverterTypeDenominatorMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean39FfiConverterTypeDenominatorMetric_lowerySvAA0eF0CF":{"name":"FfiConverterTypeDenominatorMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean32FfiConverterTypeEventMetric_liftyAA0eF0CSvKF":{"name":"FfiConverterTypeEventMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean33FfiConverterTypeEventMetric_lowerySvAA0eF0CF":{"name":"FfiConverterTypeEventMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean35FfiConverterTypeLabeledBoolean_liftyAA0eF0CSvKF":{"name":"FfiConverterTypeLabeledBoolean_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean36FfiConverterTypeLabeledBoolean_lowerySvAA0eF0CF":{"name":"FfiConverterTypeLabeledBoolean_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean35FfiConverterTypeLabeledCounter_liftyAA0eF0CSvKF":{"name":"FfiConverterTypeLabeledCounter_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean36FfiConverterTypeLabeledCounter_lowerySvAA0eF0CF":{"name":"FfiConverterTypeLabeledCounter_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean34FfiConverterTypeLabeledString_liftyAA0eF0CSvKF":{"name":"FfiConverterTypeLabeledString_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean35FfiConverterTypeLabeledString_lowerySvAA0eF0CF":{"name":"FfiConverterTypeLabeledString_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean45FfiConverterTypeMemoryDistributionMetric_liftyAA0efG0CSvKF":{"name":"FfiConverterTypeMemoryDistributionMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean46FfiConverterTypeMemoryDistributionMetric_lowerySvAA0efG0CF":{"name":"FfiConverterTypeMemoryDistributionMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean36FfiConverterTypeNumeratorMetric_liftyAA0eF0CSvKF":{"name":"FfiConverterTypeNumeratorMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean37FfiConverterTypeNumeratorMetric_lowerySvAA0eF0CF":{"name":"FfiConverterTypeNumeratorMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean33FfiConverterTypeObjectMetric_liftyAA0eF0CSvKF":{"name":"FfiConverterTypeObjectMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean34FfiConverterTypeObjectMetric_lowerySvAA0eF0CF":{"name":"FfiConverterTypeObjectMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean020FfiConverterTypePingD5_liftyAA0eD0CSvKF":{"name":"FfiConverterTypePingType_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean020FfiConverterTypePingD6_lowerySvAA0eD0CF":{"name":"FfiConverterTypePingType_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean35FfiConverterTypeQuantityMetric_liftyAA0eF0CSvKF":{"name":"FfiConverterTypeQuantityMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean36FfiConverterTypeQuantityMetric_lowerySvAA0eF0CF":{"name":"FfiConverterTypeQuantityMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean31FfiConverterTypeRateMetric_liftyAA0eF0CSvKF":{"name":"FfiConverterTypeRateMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean32FfiConverterTypeRateMetric_lowerySvAA0eF0CF":{"name":"FfiConverterTypeRateMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean37FfiConverterTypeStringListMetric_liftyAA0efG0CSvKF":{"name":"FfiConverterTypeStringListMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean38FfiConverterTypeStringListMetric_lowerySvAA0efG0CF":{"name":"FfiConverterTypeStringListMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean33FfiConverterTypeStringMetric_liftyAA0eF0CSvKF":{"name":"FfiConverterTypeStringMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean34FfiConverterTypeStringMetric_lowerySvAA0eF0CF":{"name":"FfiConverterTypeStringMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean31FfiConverterTypeTextMetric_liftyAA0eF0CSvKF":{"name":"FfiConverterTypeTextMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean32FfiConverterTypeTextMetric_lowerySvAA0eF0CF":{"name":"FfiConverterTypeTextMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean35FfiConverterTypeTimespanMetric_liftyAA0eF0CSvKF":{"name":"FfiConverterTypeTimespanMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean36FfiConverterTypeTimespanMetric_lowerySvAA0eF0CF":{"name":"FfiConverterTypeTimespanMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean45FfiConverterTypeTimingDistributionMetric_liftyAA0efG0CSvKF":{"name":"FfiConverterTypeTimingDistributionMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean46FfiConverterTypeTimingDistributionMetric_lowerySvAA0efG0CF":{"name":"FfiConverterTypeTimingDistributionMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean30FfiConverterTypeUrlMetric_liftyAA0eF0CSvKF":{"name":"FfiConverterTypeUrlMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean31FfiConverterTypeUrlMetric_lowerySvAA0eF0CF":{"name":"FfiConverterTypeUrlMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean31FfiConverterTypeUuidMetric_liftyAA0eF0CSvKF":{"name":"FfiConverterTypeUuidMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean32FfiConverterTypeUuidMetric_lowerySvAA0eF0CF":{"name":"FfiConverterTypeUuidMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean38FfiConverterTypeClientInfoMetrics_liftyAA0efG0VSo10RustBufferVKF":{"name":"FfiConverterTypeClientInfoMetrics_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean39FfiConverterTypeClientInfoMetrics_lowerySo10RustBufferVAA0efG0VF":{"name":"FfiConverterTypeClientInfoMetrics_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean37FfiConverterTypeCommonMetricData_liftyAA0efG0VSo10RustBufferVKF":{"name":"FfiConverterTypeCommonMetricData_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean38FfiConverterTypeCommonMetricData_lowerySo10RustBufferVAA0efG0VF":{"name":"FfiConverterTypeCommonMetricData_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean29FfiConverterTypeDatetime_liftyAA0E0VSo10RustBufferVKF":{"name":"FfiConverterTypeDatetime_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean30FfiConverterTypeDatetime_lowerySo10RustBufferVAA0E0VF":{"name":"FfiConverterTypeDatetime_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean37FfiConverterTypeDistributionData_liftyAA0eF0VSo10RustBufferVKF":{"name":"FfiConverterTypeDistributionData_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean38FfiConverterTypeDistributionData_lowerySo10RustBufferVAA0eF0VF":{"name":"FfiConverterTypeDistributionData_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean42FfiConverterTypeInternalConfiguration_liftyAA0eF0VSo10RustBufferVKF":{"name":"FfiConverterTypeInternalConfiguration_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean43FfiConverterTypeInternalConfiguration_lowerySo10RustBufferVAA0eF0VF":{"name":"FfiConverterTypeInternalConfiguration_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean34FfiConverterTypePingRateLimit_liftyAA0efG0VSo10RustBufferVKF":{"name":"FfiConverterTypePingRateLimit_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean35FfiConverterTypePingRateLimit_lowerySo10RustBufferVAA0efG0VF":{"name":"FfiConverterTypePingRateLimit_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean32FfiConverterTypePingRequest_liftyAA0eF0VSo10RustBufferVKF":{"name":"FfiConverterTypePingRequest_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean33FfiConverterTypePingRequest_lowerySo10RustBufferVAA0eF0VF":{"name":"FfiConverterTypePingRequest_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean25FfiConverterTypeRate_liftyAA0E0VSo10RustBufferVKF":{"name":"FfiConverterTypeRate_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean26FfiConverterTypeRate_lowerySo10RustBufferVAA0E0VF":{"name":"FfiConverterTypeRate_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean34FfiConverterTypeRecordedEvent_liftyAA0eF0VSo10RustBufferVKF":{"name":"FfiConverterTypeRecordedEvent_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean35FfiConverterTypeRecordedEvent_lowerySo10RustBufferVAA0eF0VF":{"name":"FfiConverterTypeRecordedEvent_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean39FfiConverterTypeRecordedExperiment_liftyAA0eF0VSo10RustBufferVKF":{"name":"FfiConverterTypeRecordedExperiment_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean40FfiConverterTypeRecordedExperiment_lowerySo10RustBufferVAA0eF0VF":{"name":"FfiConverterTypeRecordedExperiment_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean28FfiConverterTypeTimerId_liftyAA0eF0VSo10RustBufferVKF":{"name":"FfiConverterTypeTimerId_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean29FfiConverterTypeTimerId_lowerySo10RustBufferVAA0eF0VF":{"name":"FfiConverterTypeTimerId_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean021FfiConverterTypeErrorD5_liftyAA0eD0OSo10RustBufferVKF":{"name":"FfiConverterTypeErrorType_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean021FfiConverterTypeErrorD6_lowerySo10RustBufferVAA0eD0OF":{"name":"FfiConverterTypeErrorType_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean025FfiConverterTypeHistogramD5_liftyAA0eD0OSo10RustBufferVKF":{"name":"FfiConverterTypeHistogramType_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean025FfiConverterTypeHistogramD6_lowerySo10RustBufferVAA0eD0OF":{"name":"FfiConverterTypeHistogramType_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean38FfiConverterTypeLabeledMetricData_liftyAA0efG0OSo10RustBufferVKF":{"name":"FfiConverterTypeLabeledMetricData_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean39FfiConverterTypeLabeledMetricData_lowerySo10RustBufferVAA0efG0OF":{"name":"FfiConverterTypeLabeledMetricData_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean32FfiConverterTypeLevelFilter_liftyAA0eF0OSo10RustBufferVKF":{"name":"FfiConverterTypeLevelFilter_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean33FfiConverterTypeLevelFilter_lowerySo10RustBufferVAA0eF0OF":{"name":"FfiConverterTypeLevelFilter_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean29FfiConverterTypeLifetime_liftyAA0E0OSo10RustBufferVKF":{"name":"FfiConverterTypeLifetime_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean30FfiConverterTypeLifetime_lowerySo10RustBufferVAA0E0OF":{"name":"FfiConverterTypeLifetime_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean31FfiConverterTypeMemoryUnit_liftyAA0eF0OSo10RustBufferVKF":{"name":"FfiConverterTypeMemoryUnit_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean32FfiConverterTypeMemoryUnit_lowerySo10RustBufferVAA0eF0OF":{"name":"FfiConverterTypeMemoryUnit_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean35FfiConverterTypePingUploadTask_liftyAA0efG0OSo10RustBufferVKF":{"name":"FfiConverterTypePingUploadTask_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean36FfiConverterTypePingUploadTask_lowerySo10RustBufferVAA0efG0OF":{"name":"FfiConverterTypePingUploadTask_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean29FfiConverterTypeTimeUnit_liftyAA0eF0OSo10RustBufferVKF":{"name":"FfiConverterTypeTimeUnit_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean30FfiConverterTypeTimeUnit_lowerySo10RustBufferVAA0eF0OF":{"name":"FfiConverterTypeTimeUnit_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean33FfiConverterTypeUploadResult_liftyAA0eF0OSo10RustBufferVKF":{"name":"FfiConverterTypeUploadResult_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean34FfiConverterTypeUploadResult_lowerySo10RustBufferVAA0eF0OF":{"name":"FfiConverterTypeUploadResult_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean37FfiConverterTypeUploadTaskAction_liftyAA0efG0OSo10RustBufferVKF":{"name":"FfiConverterTypeUploadTaskAction_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean38FfiConverterTypeUploadTaskAction_lowerySo10RustBufferVAA0efG0OF":{"name":"FfiConverterTypeUploadTaskAction_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean30FfiConverterTypeCowString_liftySSSo10RustBufferVKF":{"name":"FfiConverterTypeCowString_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean31FfiConverterTypeCowString_lowerySo10RustBufferVSSF":{"name":"FfiConverterTypeCowString_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean30FfiConverterTypeJsonValue_liftySSSo10RustBufferVKF":{"name":"FfiConverterTypeJsonValue_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean31FfiConverterTypeJsonValue_lowerySo10RustBufferVSSF":{"name":"FfiConverterTypeJsonValue_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean27gleanApplyServerKnobsConfigyySSF":{"name":"gleanApplyServerKnobsConfig(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean18gleanEnableLoggingyyF":{"name":"gleanEnableLogging()","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean22gleanEnableLoggingToFdyys6UInt64VF":{"name":"gleanEnableLoggingToFd(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean18gleanGetUploadTaskAA04PingdE0OyF":{"name":"gleanGetUploadTask()","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean23gleanHandleClientActiveyyF":{"name":"gleanHandleClientActive()","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean25gleanHandleClientInactiveyyF":{"name":"gleanHandleClientInactive()","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean15gleanInitializeyyAA21InternalConfigurationV_AA17ClientInfoMetricsVAA02OnA6Events_ptF":{"name":"gleanInitialize(_:_:_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean28gleanInitializeForSubprocessySbAA21InternalConfigurationVF":{"name":"gleanInitializeForSubprocess(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean28gleanPersistPingLifetimeDatayyF":{"name":"gleanPersistPingLifetimeData()","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean30gleanProcessPingUploadResponseyAA0E10TaskActionOSS_AA0E6ResultOtF":{"name":"gleanProcessPingUploadResponse(_:_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean26gleanRegisterEventListeneryySS_AA0adE0_ptF":{"name":"gleanRegisterEventListener(_:_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean20gleanSetDebugViewTagySbSSF":{"name":"gleanSetDebugViewTag(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean17gleanSetDirtyFlagyySbF":{"name":"gleanSetDirtyFlag(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean24gleanSetExperimentActiveyySS_SSSDyS2SGtF":{"name":"gleanSetExperimentActive(_:_:_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean26gleanSetExperimentInactiveyySSF":{"name":"gleanSetExperimentInactive(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean25gleanSetExperimentationIdyySSF":{"name":"gleanSetExperimentationId(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean16gleanSetLogPingsyySbF":{"name":"gleanSetLogPings(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean18gleanSetSourceTagsySbSaySSGF":{"name":"gleanSetSourceTags(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean16gleanSetTestModeyySbF":{"name":"gleanSetTestMode(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean21gleanSetUploadEnabledyySbF":{"name":"gleanSetUploadEnabled(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean13gleanShutdownyyF":{"name":"gleanShutdown()","abstract":"

    Shuts down Glean in an orderly fashion.

    "},"Functions.html#/s:5Glean21gleanSubmitPingByNameyySS_SSSgtF":{"name":"gleanSubmitPingByName(_:_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean25gleanSubmitPingByNameSyncySbSS_SSSgtF":{"name":"gleanSubmitPingByNameSync(_:_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean016gleanTestDestroyA0yySb_SSSgtF":{"name":"gleanTestDestroyGlean(_:_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean26gleanTestGetExperimentDatayAA08RecordedE0VSgSSF":{"name":"gleanTestGetExperimentData(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean29gleanTestGetExperimentationIdSSSgyF":{"name":"gleanTestGetExperimentationId()","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean28gleanUnregisterEventListeneryySSF":{"name":"gleanUnregisterEventListener(_:)","abstract":"

    Undocumented

    "},"Extensions/String.html#/s:SS5GleanE16errorDescriptionSSSgvp":{"name":"errorDescription","abstract":"

    The string itself is the error description.

    ","parent_name":"String"},"Extensions/TimingDistributionMetricType.html#/s:5Glean24TimingDistributionMetricC7measure13funcToMeasurexxyXE_tlF":{"name":"measure(funcToMeasure:)","abstract":"

    Convenience method to simplify measuring a function or block of code

    ","parent_name":"TimingDistributionMetricType"},"Extensions/TimingDistributionMetricType.html#/s:5Glean24TimingDistributionMetricC7measure13funcToMeasurexxyKXE_tKlF":{"name":"measure(funcToMeasure:)","abstract":"

    Convenience method to simplify measuring a function or block of code

    ","parent_name":"TimingDistributionMetricType"},"Extensions/TimespanMetricType.html#/s:5Glean14TimespanMetricC7measure13funcToMeasurexxyXE_tlF":{"name":"measure(funcToMeasure:)","abstract":"

    Convenience method to simplify measuring a function or block of code

    ","parent_name":"TimespanMetricType"},"Extensions/TimespanMetricType.html#/s:5Glean14TimespanMetricC7measure13funcToMeasurexxyKXE_tKlF":{"name":"measure(funcToMeasure:)","abstract":"

    Convenience method to simplify measuring a function or block of code

    ","parent_name":"TimespanMetricType"},"Extensions/Array.html#/s:Sa5GleanSeRzSERzlE20intoSerializedObjectSSyF":{"name":"intoSerializedObject()","abstract":"

    Undocumented

    ","parent_name":"Array"},"Extensions/Array.html":{"name":"Array"},"Extensions/TimespanMetricType.html":{"name":"TimespanMetricType"},"Extensions/TimingDistributionMetricType.html":{"name":"TimingDistributionMetricType"},"Extensions/String.html":{"name":"String","abstract":"

    Turn a string into an error, so that it can be thrown as an exception.

    "},"Enums/NoReasonCodes.html#/s:5Glean11ReasonCodesP5indexSiyF":{"name":"index()","parent_name":"NoReasonCodes"},"Enums/UploadTaskAction.html#/s:5Glean16UploadTaskActionO4nextyA2CmF":{"name":"next","abstract":"

    Undocumented

    ","parent_name":"UploadTaskAction"},"Enums/UploadTaskAction.html#/s:5Glean16UploadTaskActionO3endyA2CmF":{"name":"end","abstract":"

    Undocumented

    ","parent_name":"UploadTaskAction"},"Enums/UploadResult.html#/s:5Glean12UploadResultO18recoverableFailureyACs4Int8V_tcACmF":{"name":"recoverableFailure(unused:)","abstract":"

    Undocumented

    ","parent_name":"UploadResult"},"Enums/UploadResult.html#/s:5Glean12UploadResultO20unrecoverableFailureyACs4Int8V_tcACmF":{"name":"unrecoverableFailure(unused:)","abstract":"

    Undocumented

    ","parent_name":"UploadResult"},"Enums/UploadResult.html#/s:5Glean12UploadResultO10httpStatusyACs5Int32V_tcACmF":{"name":"httpStatus(code:)","abstract":"

    Undocumented

    ","parent_name":"UploadResult"},"Enums/UploadResult.html#/s:5Glean12UploadResultO4doneyACs4Int8V_tcACmF":{"name":"done(unused:)","abstract":"

    Undocumented

    ","parent_name":"UploadResult"},"Enums/TimeUnit.html#/s:5Glean8TimeUnitO10nanosecondyA2CmF":{"name":"nanosecond","abstract":"

    Undocumented

    ","parent_name":"TimeUnit"},"Enums/TimeUnit.html#/s:5Glean8TimeUnitO11microsecondyA2CmF":{"name":"microsecond","abstract":"

    Undocumented

    ","parent_name":"TimeUnit"},"Enums/TimeUnit.html#/s:5Glean8TimeUnitO11millisecondyA2CmF":{"name":"millisecond","abstract":"

    Undocumented

    ","parent_name":"TimeUnit"},"Enums/TimeUnit.html#/s:5Glean8TimeUnitO6secondyA2CmF":{"name":"second","abstract":"

    Undocumented

    ","parent_name":"TimeUnit"},"Enums/TimeUnit.html#/s:5Glean8TimeUnitO6minuteyA2CmF":{"name":"minute","abstract":"

    Undocumented

    ","parent_name":"TimeUnit"},"Enums/TimeUnit.html#/s:5Glean8TimeUnitO4houryA2CmF":{"name":"hour","abstract":"

    Undocumented

    ","parent_name":"TimeUnit"},"Enums/TimeUnit.html#/s:5Glean8TimeUnitO3dayyA2CmF":{"name":"day","abstract":"

    Undocumented

    ","parent_name":"TimeUnit"},"Enums/PingUploadTask.html#/s:5Glean14PingUploadTaskO6uploadyAcA0B7RequestV_tcACmF":{"name":"upload(request:)","abstract":"

    Undocumented

    ","parent_name":"PingUploadTask"},"Enums/PingUploadTask.html#/s:5Glean14PingUploadTaskO4waityACs6UInt64V_tcACmF":{"name":"wait(time:)","abstract":"

    Undocumented

    ","parent_name":"PingUploadTask"},"Enums/PingUploadTask.html#/s:5Glean14PingUploadTaskO4doneyACs4Int8V_tcACmF":{"name":"done(unused:)","abstract":"

    Undocumented

    ","parent_name":"PingUploadTask"},"Enums/MemoryUnit.html#/s:5Glean10MemoryUnitO4byteyA2CmF":{"name":"byte","abstract":"

    Undocumented

    ","parent_name":"MemoryUnit"},"Enums/MemoryUnit.html#/s:5Glean10MemoryUnitO8kilobyteyA2CmF":{"name":"kilobyte","abstract":"

    Undocumented

    ","parent_name":"MemoryUnit"},"Enums/MemoryUnit.html#/s:5Glean10MemoryUnitO8megabyteyA2CmF":{"name":"megabyte","abstract":"

    Undocumented

    ","parent_name":"MemoryUnit"},"Enums/MemoryUnit.html#/s:5Glean10MemoryUnitO8gigabyteyA2CmF":{"name":"gigabyte","abstract":"

    Undocumented

    ","parent_name":"MemoryUnit"},"Enums/Lifetime.html#/s:5Glean8LifetimeO4pingyA2CmF":{"name":"ping","abstract":"

    Undocumented

    ","parent_name":"Lifetime"},"Enums/Lifetime.html#/s:5Glean8LifetimeO11applicationyA2CmF":{"name":"application","abstract":"

    Undocumented

    ","parent_name":"Lifetime"},"Enums/Lifetime.html#/s:5Glean8LifetimeO4useryA2CmF":{"name":"user","abstract":"

    Undocumented

    ","parent_name":"Lifetime"},"Enums/LevelFilter.html#/s:5Glean11LevelFilterO3offyA2CmF":{"name":"off","abstract":"

    Undocumented

    ","parent_name":"LevelFilter"},"Enums/LevelFilter.html#/s:5Glean11LevelFilterO5erroryA2CmF":{"name":"error","abstract":"

    Undocumented

    ","parent_name":"LevelFilter"},"Enums/LevelFilter.html#/s:5Glean11LevelFilterO4warnyA2CmF":{"name":"warn","abstract":"

    Undocumented

    ","parent_name":"LevelFilter"},"Enums/LevelFilter.html#/s:5Glean11LevelFilterO4infoyA2CmF":{"name":"info","abstract":"

    Undocumented

    ","parent_name":"LevelFilter"},"Enums/LevelFilter.html#/s:5Glean11LevelFilterO5debugyA2CmF":{"name":"debug","abstract":"

    Undocumented

    ","parent_name":"LevelFilter"},"Enums/LevelFilter.html#/s:5Glean11LevelFilterO5traceyA2CmF":{"name":"trace","abstract":"

    Undocumented

    ","parent_name":"LevelFilter"},"Enums/LabeledMetricData.html#/s:5Glean17LabeledMetricDataO6commonyAcA06CommoncD0V_tcACmF":{"name":"common(cmd:)","abstract":"

    Undocumented

    ","parent_name":"LabeledMetricData"},"Enums/LabeledMetricData.html#/s:5Glean17LabeledMetricDataO18customDistributionyAcA06CommoncD0V_s5Int64VA2hA13HistogramTypeOtcACmF":{"name":"customDistribution(cmd:rangeMin:rangeMax:bucketCount:histogramType:)","abstract":"

    Undocumented

    ","parent_name":"LabeledMetricData"},"Enums/LabeledMetricData.html#/s:5Glean17LabeledMetricDataO18memoryDistributionyAcA06CommoncD0V_AA10MemoryUnitOtcACmF":{"name":"memoryDistribution(cmd:unit:)","abstract":"

    Undocumented

    ","parent_name":"LabeledMetricData"},"Enums/LabeledMetricData.html#/s:5Glean17LabeledMetricDataO18timingDistributionyAcA06CommoncD0V_AA8TimeUnitOtcACmF":{"name":"timingDistribution(cmd:unit:)","abstract":"

    Undocumented

    ","parent_name":"LabeledMetricData"},"Enums/HistogramType.html#/s:5Glean13HistogramTypeO6linearyA2CmF":{"name":"linear","abstract":"

    Undocumented

    ","parent_name":"HistogramType"},"Enums/HistogramType.html#/s:5Glean13HistogramTypeO11exponentialyA2CmF":{"name":"exponential","abstract":"

    Undocumented

    ","parent_name":"HistogramType"},"Enums/ErrorType.html#/s:5Glean9ErrorTypeO12invalidValueyA2CmF":{"name":"invalidValue","abstract":"

    Undocumented

    ","parent_name":"ErrorType"},"Enums/ErrorType.html#/s:5Glean9ErrorTypeO12invalidLabelyA2CmF":{"name":"invalidLabel","abstract":"

    Undocumented

    ","parent_name":"ErrorType"},"Enums/ErrorType.html#/s:5Glean9ErrorTypeO12invalidStateyA2CmF":{"name":"invalidState","abstract":"

    Undocumented

    ","parent_name":"ErrorType"},"Enums/ErrorType.html#/s:5Glean9ErrorTypeO15invalidOverflowyA2CmF":{"name":"invalidOverflow","abstract":"

    Undocumented

    ","parent_name":"ErrorType"},"Enums/CallbackError.html#/s:5Glean13CallbackErrorO010UnexpectedC0yACSS_tcACmF":{"name":"UnexpectedError(message:)","abstract":"

    Undocumented

    ","parent_name":"CallbackError"},"Enums/CallbackError.html#/s:10Foundation14LocalizedErrorP16errorDescriptionSSSgvp":{"name":"errorDescription","parent_name":"CallbackError"},"Enums/CallbackError.html":{"name":"CallbackError","abstract":"

    Undocumented

    "},"Enums/ErrorType.html":{"name":"ErrorType","abstract":"

    Undocumented

    "},"Enums/HistogramType.html":{"name":"HistogramType","abstract":"

    Undocumented

    "},"Enums/LabeledMetricData.html":{"name":"LabeledMetricData","abstract":"

    Undocumented

    "},"Enums/LevelFilter.html":{"name":"LevelFilter","abstract":"

    Undocumented

    "},"Enums/Lifetime.html":{"name":"Lifetime","abstract":"

    Undocumented

    "},"Enums/MemoryUnit.html":{"name":"MemoryUnit","abstract":"

    Undocumented

    "},"Enums/PingUploadTask.html":{"name":"PingUploadTask","abstract":"

    Undocumented

    "},"Enums/TimeUnit.html":{"name":"TimeUnit","abstract":"

    Undocumented

    "},"Enums/UploadResult.html":{"name":"UploadResult","abstract":"

    Undocumented

    "},"Enums/UploadTaskAction.html":{"name":"UploadTaskAction","abstract":"

    Undocumented

    "},"Enums.html#/s:5Glean0A7MetricsO":{"name":"GleanMetrics","abstract":"

    Namespace for user metrics

    "},"Enums/NoReasonCodes.html":{"name":"NoReasonCodes","abstract":"

    Default of no reason codes for pings.

    "},"Classes/HttpPingUploader.html#/s:5Glean16HttpPingUploaderC13configuration7sessionAcA13ConfigurationV_So12NSURLSessionCtcfc":{"name":"init(configuration:session:)","abstract":"

    Initialize the HTTP Ping uploader from a Glean configuration object","parent_name":"HttpPingUploader"},"Classes/UuidMetricType.html#/s:5Glean14UuidMetricTypeCyAcA06CommonC4DataVcfc":{"name":"init(_:)","abstract":"

    The public constructor used by automatically generated metrics.

    ","parent_name":"UuidMetricType"},"Classes/UuidMetricType.html#/s:5Glean14UuidMetricTypeC14generateAndSet10Foundation4UUIDVyF":{"name":"generateAndSet()","abstract":"

    Generate a new UUID and set it in the metric store.

    ","parent_name":"UuidMetricType"},"Classes/UuidMetricType.html#/s:5Glean14UuidMetricTypeC3setyy10Foundation4UUIDVF":{"name":"set(_:)","abstract":"

    Explicitly set an existing UUID value.

    ","parent_name":"UuidMetricType"},"Classes/UuidMetricType.html#/s:5Glean14UuidMetricTypeC12testGetValuey10Foundation4UUIDVSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Returns the stored value for testing purposes only. This function will attempt to await the","parent_name":"UuidMetricType"},"Classes/UrlMetricType.html#/s:5Glean13UrlMetricTypeCyAcA06CommonC4DataVcfc":{"name":"init(_:)","abstract":"

    The public constructor used by automatically generated metrics.

    ","parent_name":"UrlMetricType"},"Classes/UrlMetricType.html#/s:5Glean13UrlMetricTypeC3set3urly10Foundation3URLV_tF":{"name":"set(url:)","abstract":"

    Set a URL value.

    ","parent_name":"UrlMetricType"},"Classes/UrlMetricType.html#/s:5Glean13UrlMetricTypeC3setyySSF":{"name":"set(_:)","abstract":"

    Set a URL value.

    ","parent_name":"UrlMetricType"},"Classes/UrlMetricType.html#/s:5Glean13UrlMetricTypeC12testGetValueySSSgAEF":{"name":"testGetValue(_:)","abstract":"

    Returns the stored value for testing purposes only. This function will attempt to await the","parent_name":"UrlMetricType"},"Classes/UrlMetricType.html#/s:5Glean13UrlMetricTypeC24testGetNumRecordedErrorsys5Int32VAA05ErrorD0OF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Returns the number of errors recorded for the given metric.

    ","parent_name":"UrlMetricType"},"Classes/Ping.html#/s:5Glean4PingC4name15includeClientId11sendIfEmpty17preciseTimestamps0D12InfoSections7enabled14schedulesPings11reasonCodesACyxGSS_S5bSaySSGAMtcfc":{"name":"init(name:includeClientId:sendIfEmpty:preciseTimestamps:includeInfoSections:enabled:schedulesPings:reasonCodes:)","abstract":"

    The public constructor used by automatically generated metrics.

    ","parent_name":"Ping"},"Classes/Ping.html#/s:5Glean4PingC20testBeforeNextSubmit2cbyyxSgKc_tF":{"name":"testBeforeNextSubmit(cb:)","abstract":"

    Test-only API

    ","parent_name":"Ping"},"Classes/Ping.html#/s:5Glean4PingC6submit6reasonyxSg_tF":{"name":"submit(reason:)","abstract":"

    Collect and submit the ping for eventual uploading.

    ","parent_name":"Ping"},"Classes/ObjectMetricType.html#/s:5Glean16ObjectMetricTypeCyACyxGAA06CommonC4DataVcfc":{"name":"init(_:)","abstract":"

    The public constructor used by automatically generated metrics.

    ","parent_name":"ObjectMetricType"},"Classes/ObjectMetricType.html#/s:5Glean16ObjectMetricTypeC3setyyxF":{"name":"set(_:)","abstract":"

    Sets to the associated structure.

    ","parent_name":"ObjectMetricType"},"Classes/ObjectMetricType.html#/s:5Glean16ObjectMetricTypeC12testGetValueyxSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Returns the stored value for testing purposes only. This function will attempt to await the","parent_name":"ObjectMetricType"},"Classes/ObjectMetricType.html#/s:5Glean16ObjectMetricTypeC24testGetNumRecordedErrorsys5Int32VAA05ErrorD0OF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Returns the number of errors recorded for the given metric.

    ","parent_name":"ObjectMetricType"},"Classes/LabeledMetricType.html#/s:5Glean17LabeledMetricTypeC8category4name11sendInPings8lifetime8disabled03subC06labelsACyxGSS_SSSaySSGAA8LifetimeOSbxALSgtKcfc":{"name":"init(category:name:sendInPings:lifetime:disabled:subMetric:labels:)","abstract":"

    The public constructor used by automatically generated metrics.

    ","parent_name":"LabeledMetricType"},"Classes/LabeledMetricType.html#/s:5Glean17LabeledMetricTypeCyxSScip":{"name":"subscript(_:)","abstract":"

    Get the specific metric for a given label.

    ","parent_name":"LabeledMetricType"},"Classes/LabeledMetricType.html#/s:5Glean17LabeledMetricTypeC24testGetNumRecordedErrorsys5Int32VAA05ErrorD0OF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Returns the number of errors recorded for the given metric.

    ","parent_name":"LabeledMetricType"},"Classes/EventMetricType.html#/s:5Glean15EventMetricTypeCyACyxGAA06CommonC4DataV_SaySSGSgtcfc":{"name":"init(_:_:)","abstract":"

    The public constructor used by automatically generated metrics.

    ","parent_name":"EventMetricType"},"Classes/EventMetricType.html#/s:5Glean15EventMetricTypeC6recordyyxSgF":{"name":"record(_:)","abstract":"

    Undocumented

    ","parent_name":"EventMetricType"},"Classes/EventMetricType.html#/s:5Glean15EventMetricTypeC12testGetValueySayAA08RecordedB0VGSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Returns the stored value for testing purposes only. This function will attempt to await the","parent_name":"EventMetricType"},"Classes/EventMetricType.html#/s:5Glean15EventMetricTypeC24testGetNumRecordedErrorsys5Int32VAA05ErrorD0OF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Returns the number of errors recorded for the given metric.

    ","parent_name":"EventMetricType"},"Classes/NoExtras.html#/s:5Glean11EventExtrasP13toExtraRecordSDyS2SGyF":{"name":"toExtraRecord()","parent_name":"NoExtras"},"Classes/DatetimeMetricType.html#/s:5Glean18DatetimeMetricTypeCyAcA06CommonC4DataV_AA8TimeUnitOtcfc":{"name":"init(_:_:)","abstract":"

    The public constructor used by automatically generated metrics.

    ","parent_name":"DatetimeMetricType"},"Classes/DatetimeMetricType.html#/s:5Glean18DatetimeMetricTypeC3setyy10Foundation4DateVF":{"name":"set(_:)","abstract":"

    Set a datetime value, truncating it to the metric’s resolution.

    ","parent_name":"DatetimeMetricType"},"Classes/DatetimeMetricType.html#/s:5Glean18DatetimeMetricTypeC20testGetValueAsStringySSSgAEF":{"name":"testGetValueAsString(_:)","abstract":"

    Returns the string representation of the stored value for testing purposes only. This function","parent_name":"DatetimeMetricType"},"Classes/DatetimeMetricType.html#/s:5Glean18DatetimeMetricTypeC12testGetValuey10Foundation4DateVSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Returns the stored value for testing purposes only. This function will attempt to await the","parent_name":"DatetimeMetricType"},"Classes/DatetimeMetricType.html#/s:5Glean18DatetimeMetricTypeC24testGetNumRecordedErrorsys5Int32VAA05ErrorD0OF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Returns the number of errors recorded for the given metric.

    ","parent_name":"DatetimeMetricType"},"Classes/Glean.html#/s:5GleanAAC6sharedABvpZ":{"name":"shared","abstract":"

    The main Glean object.

    ","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC10initialize13uploadEnabled13configuration9buildInfoySb_AA13ConfigurationVAA05BuildG0VtF":{"name":"initialize(uploadEnabled:configuration:buildInfo:)","abstract":"

    Initialize the Glean SDK.

    ","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC16setUploadEnabledyySbF":{"name":"setUploadEnabled(_:)","abstract":"

    Enable or disable Glean collection and upload.

    ","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC19setExperimentActive_6branch5extraySS_SSSDyS2SGSgtF":{"name":"setExperimentActive(_:branch:extra:)","abstract":"

    Used to indicate that an experiment is running.

    ","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC21setExperimentInactiveyySSF":{"name":"setExperimentInactive(_:)","abstract":"

    Used to indicate that an experiment is no longer running.

    ","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC22testIsExperimentActiveySbSSF":{"name":"testIsExperimentActive(_:)","abstract":"

    Tests whether an experiment is active, for testing purposes only.

    ","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC21testGetExperimentDatayAA08RecordedD0VSgSSF":{"name":"testGetExperimentData(_:)","abstract":"

    PUBLIC TEST ONLY FUNCTION.

    ","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC20setExperimentationIdyySSF":{"name":"setExperimentationId(_:)","abstract":"

    Dynamically set the experimentation identifier, as opposed to setting it through the configuration","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC24testGetExperimentationIdSSSgyF":{"name":"testGetExperimentationId()","abstract":"

    PUBLIC TEST ONLY FUNCTION.

    ","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC13registerPingsyyypF":{"name":"registerPings(_:)","abstract":"

    Register the pings generated from pings.yaml with the Glean SDK.

    ","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC15setDebugViewTagySbSSF":{"name":"setDebugViewTag(_:)","abstract":"

    Set a tag to be applied to headers when uploading pings for debug view.","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC11setLogPingsyySbF":{"name":"setLogPings(_:)","abstract":"

    Set the log_pings debug option,","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC13setSourceTagsySbSaySSGF":{"name":"setSourceTags(_:)","abstract":"

    Set the source tags to be applied as headers when uploading pings.

    ","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC21registerEventListener3tag8listenerySS_AA0acD0_ptF":{"name":"registerEventListener(tag:listener:)","abstract":"

    EXPERIMENTAL: Register a listener to receive notification of event recordings

    ","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC23unregisterEventListener3tagySS_tF":{"name":"unregisterEventListener(tag:)","abstract":"

    EXPERIMENTAL: Unregister a listener to receive notification of event recordings

    ","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC22applyServerKnobsConfigyySSF":{"name":"applyServerKnobsConfig(_:)","abstract":"

    Set configuration to override metrics’ default enabled/disabled state, typically from","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC8shutdownyyF":{"name":"shutdown()","abstract":"

    Shuts down Glean in an orderly fashion

    ","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC15handleCustomUrl3urly10Foundation3URLV_tF":{"name":"handleCustomUrl(url:)","abstract":"

    When applications are launched using the custom URL scheme, this helper function will process","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC17enableTestingModeyyF":{"name":"enableTestingMode()","abstract":"

    PUBLIC TEST ONLY FUNCTION.

    ","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC05resetA013configuration11clearStores13uploadEnabledyAA13ConfigurationV_S2btF":{"name":"resetGlean(configuration:clearStores:uploadEnabled:)","abstract":"

    PUBLIC TEST ONLY FUNCTION.

    ","parent_name":"Glean"},"Classes/UuidMetric/NoPointer.html#/s:5Glean10UuidMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/UuidMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"UuidMetric"},"Classes/UuidMetric.html#/s:5Glean10UuidMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"UuidMetric"},"Classes/UuidMetric.html#/s:5Glean10UuidMetricC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"UuidMetric"},"Classes/UuidMetric.html#/s:5Glean10UuidMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"UuidMetric"},"Classes/UuidMetric.html#/s:5Glean10UuidMetricCyAcA06CommonC4DataVcfc":{"name":"init(_:)","abstract":"

    Undocumented

    ","parent_name":"UuidMetric"},"Classes/UuidMetric.html#/s:5Glean10UuidMetricC14generateAndSetSSyF":{"name":"generateAndSet()","abstract":"

    Undocumented

    ","parent_name":"UuidMetric"},"Classes/UuidMetric.html#/s:5Glean10UuidMetricC3setyySSF":{"name":"set(_:)","abstract":"

    Undocumented

    ","parent_name":"UuidMetric"},"Classes/UuidMetric.html#/s:5Glean10UuidMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"UuidMetric"},"Classes/UuidMetric.html#/s:5Glean10UuidMetricC12testGetValueySSSgAEF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"UuidMetric"},"Classes/UrlMetric/NoPointer.html#/s:5Glean9UrlMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/UrlMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"UrlMetric"},"Classes/UrlMetric.html#/s:5Glean9UrlMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"UrlMetric"},"Classes/UrlMetric.html#/s:5Glean9UrlMetricC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"UrlMetric"},"Classes/UrlMetric.html#/s:5Glean9UrlMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"UrlMetric"},"Classes/UrlMetric.html#/s:5Glean9UrlMetricCyAcA06CommonC4DataVcfc":{"name":"init(_:)","abstract":"

    Undocumented

    ","parent_name":"UrlMetric"},"Classes/UrlMetric.html#/s:5Glean9UrlMetricC3setyySSF":{"name":"set(_:)","abstract":"

    Undocumented

    ","parent_name":"UrlMetric"},"Classes/UrlMetric.html#/s:5Glean9UrlMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"UrlMetric"},"Classes/UrlMetric.html#/s:5Glean9UrlMetricC12testGetValueySSSgAEF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"UrlMetric"},"Classes/TimingDistributionMetric/NoPointer.html#/s:5Glean24TimingDistributionMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/TimingDistributionMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"TimingDistributionMetric"},"Classes/TimingDistributionMetric.html#/s:5Glean24TimingDistributionMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"TimingDistributionMetric"},"Classes/TimingDistributionMetric.html#/s:5Glean24TimingDistributionMetricC9noPointerA2C02NoF0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"TimingDistributionMetric"},"Classes/TimingDistributionMetric.html#/s:5Glean24TimingDistributionMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"TimingDistributionMetric"},"Classes/TimingDistributionMetric.html#/s:5Glean24TimingDistributionMetricCyAcA06CommonD4DataV_AA8TimeUnitOtcfc":{"name":"init(_:_:)","abstract":"

    Undocumented

    ","parent_name":"TimingDistributionMetric"},"Classes/TimingDistributionMetric.html#/s:5Glean24TimingDistributionMetricC17accumulateSamplesyySays5Int64VGF":{"name":"accumulateSamples(_:)","abstract":"

    Undocumented

    ","parent_name":"TimingDistributionMetric"},"Classes/TimingDistributionMetric.html#/s:5Glean24TimingDistributionMetricC22accumulateSingleSampleyys5Int64VF":{"name":"accumulateSingleSample(_:)","abstract":"

    Undocumented

    ","parent_name":"TimingDistributionMetric"},"Classes/TimingDistributionMetric.html#/s:5Glean24TimingDistributionMetricC6cancelyyAA7TimerIdVF":{"name":"cancel(_:)","abstract":"

    Undocumented

    ","parent_name":"TimingDistributionMetric"},"Classes/TimingDistributionMetric.html#/s:5Glean24TimingDistributionMetricC5startAA7TimerIdVyF":{"name":"start()","abstract":"

    Undocumented

    ","parent_name":"TimingDistributionMetric"},"Classes/TimingDistributionMetric.html#/s:5Glean24TimingDistributionMetricC17stopAndAccumulateyyAA7TimerIdVF":{"name":"stopAndAccumulate(_:)","abstract":"

    Undocumented

    ","parent_name":"TimingDistributionMetric"},"Classes/TimingDistributionMetric.html#/s:5Glean24TimingDistributionMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"TimingDistributionMetric"},"Classes/TimingDistributionMetric.html#/s:5Glean24TimingDistributionMetricC12testGetValueyAA0C4DataVSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"TimingDistributionMetric"},"Classes/TimespanMetric/NoPointer.html#/s:5Glean14TimespanMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/TimespanMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"TimespanMetric"},"Classes/TimespanMetric.html#/s:5Glean14TimespanMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"TimespanMetric"},"Classes/TimespanMetric.html#/s:5Glean14TimespanMetricC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"TimespanMetric"},"Classes/TimespanMetric.html#/s:5Glean14TimespanMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"TimespanMetric"},"Classes/TimespanMetric.html#/s:5Glean14TimespanMetricCyAcA06CommonC4DataV_AA8TimeUnitOtcfc":{"name":"init(_:_:)","abstract":"

    Undocumented

    ","parent_name":"TimespanMetric"},"Classes/TimespanMetric.html#/s:5Glean14TimespanMetricC6cancelyyF":{"name":"cancel()","abstract":"

    Undocumented

    ","parent_name":"TimespanMetric"},"Classes/TimespanMetric.html#/s:5Glean14TimespanMetricC11setRawNanosyys5Int64VF":{"name":"setRawNanos(_:)","abstract":"

    Undocumented

    ","parent_name":"TimespanMetric"},"Classes/TimespanMetric.html#/s:5Glean14TimespanMetricC5startyyF":{"name":"start()","abstract":"

    Undocumented

    ","parent_name":"TimespanMetric"},"Classes/TimespanMetric.html#/s:5Glean14TimespanMetricC4stopyyF":{"name":"stop()","abstract":"

    Undocumented

    ","parent_name":"TimespanMetric"},"Classes/TimespanMetric.html#/s:5Glean14TimespanMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"TimespanMetric"},"Classes/TimespanMetric.html#/s:5Glean14TimespanMetricC12testGetValueys5Int64VSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"TimespanMetric"},"Classes/TextMetric/NoPointer.html#/s:5Glean10TextMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/TextMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"TextMetric"},"Classes/TextMetric.html#/s:5Glean10TextMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"TextMetric"},"Classes/TextMetric.html#/s:5Glean10TextMetricC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"TextMetric"},"Classes/TextMetric.html#/s:5Glean10TextMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"TextMetric"},"Classes/TextMetric.html#/s:5Glean10TextMetricCyAcA06CommonC4DataVcfc":{"name":"init(_:)","abstract":"

    Undocumented

    ","parent_name":"TextMetric"},"Classes/TextMetric.html#/s:5Glean10TextMetricC3setyySSF":{"name":"set(_:)","abstract":"

    Undocumented

    ","parent_name":"TextMetric"},"Classes/TextMetric.html#/s:5Glean10TextMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"TextMetric"},"Classes/TextMetric.html#/s:5Glean10TextMetricC12testGetValueySSSgAEF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"TextMetric"},"Classes/StringMetric/NoPointer.html#/s:5Glean12StringMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/StringMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"StringMetric"},"Classes/StringMetric.html#/s:5Glean12StringMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"StringMetric"},"Classes/StringMetric.html#/s:5Glean12StringMetricC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"StringMetric"},"Classes/StringMetric.html#/s:5Glean12StringMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"StringMetric"},"Classes/StringMetric.html#/s:5Glean12StringMetricCyAcA06CommonC4DataVcfc":{"name":"init(_:)","abstract":"

    Undocumented

    ","parent_name":"StringMetric"},"Classes/StringMetric.html#/s:5Glean12StringMetricC3setyySSF":{"name":"set(_:)","abstract":"

    Undocumented

    ","parent_name":"StringMetric"},"Classes/StringMetric.html#/s:5Glean12StringMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"StringMetric"},"Classes/StringMetric.html#/s:5Glean12StringMetricC12testGetValueySSSgAEF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"StringMetric"},"Classes/StringListMetric/NoPointer.html#/s:5Glean16StringListMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/StringListMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"StringListMetric"},"Classes/StringListMetric.html#/s:5Glean16StringListMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"StringListMetric"},"Classes/StringListMetric.html#/s:5Glean16StringListMetricC9noPointerA2C02NoF0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"StringListMetric"},"Classes/StringListMetric.html#/s:5Glean16StringListMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"StringListMetric"},"Classes/StringListMetric.html#/s:5Glean16StringListMetricCyAcA06CommonD4DataVcfc":{"name":"init(_:)","abstract":"

    Undocumented

    ","parent_name":"StringListMetric"},"Classes/StringListMetric.html#/s:5Glean16StringListMetricC3addyySSF":{"name":"add(_:)","abstract":"

    Undocumented

    ","parent_name":"StringListMetric"},"Classes/StringListMetric.html#/s:5Glean16StringListMetricC3setyySaySSGF":{"name":"set(_:)","abstract":"

    Undocumented

    ","parent_name":"StringListMetric"},"Classes/StringListMetric.html#/s:5Glean16StringListMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"StringListMetric"},"Classes/StringListMetric.html#/s:5Glean16StringListMetricC12testGetValueySaySSGSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"StringListMetric"},"Classes/RateMetric/NoPointer.html#/s:5Glean10RateMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/RateMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"RateMetric"},"Classes/RateMetric.html#/s:5Glean10RateMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"RateMetric"},"Classes/RateMetric.html#/s:5Glean10RateMetricC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"RateMetric"},"Classes/RateMetric.html#/s:5Glean10RateMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"RateMetric"},"Classes/RateMetric.html#/s:5Glean10RateMetricCyAcA06CommonC4DataVcfc":{"name":"init(_:)","abstract":"

    Undocumented

    ","parent_name":"RateMetric"},"Classes/RateMetric.html#/s:5Glean10RateMetricC16addToDenominatoryys5Int32VF":{"name":"addToDenominator(_:)","abstract":"

    Undocumented

    ","parent_name":"RateMetric"},"Classes/RateMetric.html#/s:5Glean10RateMetricC14addToNumeratoryys5Int32VF":{"name":"addToNumerator(_:)","abstract":"

    Undocumented

    ","parent_name":"RateMetric"},"Classes/RateMetric.html#/s:5Glean10RateMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"RateMetric"},"Classes/RateMetric.html#/s:5Glean10RateMetricC12testGetValueyAA0B0VSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"RateMetric"},"Classes/QuantityMetric/NoPointer.html#/s:5Glean14QuantityMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/QuantityMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"QuantityMetric"},"Classes/QuantityMetric.html#/s:5Glean14QuantityMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"QuantityMetric"},"Classes/QuantityMetric.html#/s:5Glean14QuantityMetricC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"QuantityMetric"},"Classes/QuantityMetric.html#/s:5Glean14QuantityMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"QuantityMetric"},"Classes/QuantityMetric.html#/s:5Glean14QuantityMetricCyAcA06CommonC4DataVcfc":{"name":"init(_:)","abstract":"

    Undocumented

    ","parent_name":"QuantityMetric"},"Classes/QuantityMetric.html#/s:5Glean14QuantityMetricC3setyys5Int64VF":{"name":"set(_:)","abstract":"

    Undocumented

    ","parent_name":"QuantityMetric"},"Classes/QuantityMetric.html#/s:5Glean14QuantityMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"QuantityMetric"},"Classes/QuantityMetric.html#/s:5Glean14QuantityMetricC12testGetValueys5Int64VSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"QuantityMetric"},"Classes/PingType/NoPointer.html#/s:5Glean8PingTypeC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/PingType/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"PingType"},"Classes/PingType.html#/s:5Glean8PingTypeC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"PingType"},"Classes/PingType.html#/s:5Glean8PingTypeC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"PingType"},"Classes/PingType.html#/s:5Glean8PingTypeC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"PingType"},"Classes/PingType.html#/s:5Glean8PingTypeCyACSS_S5bSaySSGADtcfc":{"name":"init(_:_:_:_:_:_:_:_:)","abstract":"

    Undocumented

    ","parent_name":"PingType"},"Classes/PingType.html#/s:5Glean8PingTypeC6submityySSSgF":{"name":"submit(_:)","abstract":"

    Undocumented

    ","parent_name":"PingType"},"Classes/ObjectMetric/NoPointer.html#/s:5Glean12ObjectMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/ObjectMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"ObjectMetric"},"Classes/ObjectMetric.html#/s:5Glean12ObjectMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"ObjectMetric"},"Classes/ObjectMetric.html#/s:5Glean12ObjectMetricC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"ObjectMetric"},"Classes/ObjectMetric.html#/s:5Glean12ObjectMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"ObjectMetric"},"Classes/ObjectMetric.html#/s:5Glean12ObjectMetricCyAcA06CommonC4DataVcfc":{"name":"init(_:)","abstract":"

    Undocumented

    ","parent_name":"ObjectMetric"},"Classes/ObjectMetric.html#/s:5Glean12ObjectMetricC17recordSchemaErroryyF":{"name":"recordSchemaError()","abstract":"

    Undocumented

    ","parent_name":"ObjectMetric"},"Classes/ObjectMetric.html#/s:5Glean12ObjectMetricC9setStringyySSF":{"name":"setString(_:)","abstract":"

    Undocumented

    ","parent_name":"ObjectMetric"},"Classes/ObjectMetric.html#/s:5Glean12ObjectMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"ObjectMetric"},"Classes/ObjectMetric.html#/s:5Glean12ObjectMetricC12testGetValueySSSgAEF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"ObjectMetric"},"Classes/NumeratorMetric/NoPointer.html#/s:5Glean15NumeratorMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/NumeratorMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"NumeratorMetric"},"Classes/NumeratorMetric.html#/s:5Glean15NumeratorMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"NumeratorMetric"},"Classes/NumeratorMetric.html#/s:5Glean15NumeratorMetricC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"NumeratorMetric"},"Classes/NumeratorMetric.html#/s:5Glean15NumeratorMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"NumeratorMetric"},"Classes/NumeratorMetric.html#/s:5Glean15NumeratorMetricCyAcA06CommonC4DataVcfc":{"name":"init(_:)","abstract":"

    Undocumented

    ","parent_name":"NumeratorMetric"},"Classes/NumeratorMetric.html#/s:5Glean15NumeratorMetricC05addToB0yys5Int32VF":{"name":"addToNumerator(_:)","abstract":"

    Undocumented

    ","parent_name":"NumeratorMetric"},"Classes/NumeratorMetric.html#/s:5Glean15NumeratorMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"NumeratorMetric"},"Classes/NumeratorMetric.html#/s:5Glean15NumeratorMetricC12testGetValueyAA4RateVSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"NumeratorMetric"},"Classes/MemoryDistributionMetric/NoPointer.html#/s:5Glean24MemoryDistributionMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/MemoryDistributionMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"MemoryDistributionMetric"},"Classes/MemoryDistributionMetric.html#/s:5Glean24MemoryDistributionMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"MemoryDistributionMetric"},"Classes/MemoryDistributionMetric.html#/s:5Glean24MemoryDistributionMetricC9noPointerA2C02NoF0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"MemoryDistributionMetric"},"Classes/MemoryDistributionMetric.html#/s:5Glean24MemoryDistributionMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"MemoryDistributionMetric"},"Classes/MemoryDistributionMetric.html#/s:5Glean24MemoryDistributionMetricCyAcA06CommonD4DataV_AA0B4UnitOtcfc":{"name":"init(_:_:)","abstract":"

    Undocumented

    ","parent_name":"MemoryDistributionMetric"},"Classes/MemoryDistributionMetric.html#/s:5Glean24MemoryDistributionMetricC10accumulateyys5Int64VF":{"name":"accumulate(_:)","abstract":"

    Undocumented

    ","parent_name":"MemoryDistributionMetric"},"Classes/MemoryDistributionMetric.html#/s:5Glean24MemoryDistributionMetricC17accumulateSamplesyySays5Int64VGF":{"name":"accumulateSamples(_:)","abstract":"

    Undocumented

    ","parent_name":"MemoryDistributionMetric"},"Classes/MemoryDistributionMetric.html#/s:5Glean24MemoryDistributionMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"MemoryDistributionMetric"},"Classes/MemoryDistributionMetric.html#/s:5Glean24MemoryDistributionMetricC12testGetValueyAA0C4DataVSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"MemoryDistributionMetric"},"Classes/LabeledString/NoPointer.html#/s:5Glean13LabeledStringC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/LabeledString/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"LabeledString"},"Classes/LabeledString.html#/s:5Glean13LabeledStringC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"LabeledString"},"Classes/LabeledString.html#/s:5Glean13LabeledStringC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"LabeledString"},"Classes/LabeledString.html#/s:5Glean13LabeledStringC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"LabeledString"},"Classes/LabeledString.html#/s:5Glean13LabeledStringCyAcA0B10MetricDataO_SaySSGSgtcfc":{"name":"init(_:_:)","abstract":"

    Undocumented

    ","parent_name":"LabeledString"},"Classes/LabeledString.html#/s:5Glean13LabeledStringC3getyAA0C6MetricCSSF":{"name":"get(_:)","abstract":"

    Undocumented

    ","parent_name":"LabeledString"},"Classes/LabeledString.html#/s:5Glean13LabeledStringC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"LabeledString"},"Classes/LabeledCounter/NoPointer.html#/s:5Glean14LabeledCounterC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/LabeledCounter/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"LabeledCounter"},"Classes/LabeledCounter.html#/s:5Glean14LabeledCounterC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"LabeledCounter"},"Classes/LabeledCounter.html#/s:5Glean14LabeledCounterC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"LabeledCounter"},"Classes/LabeledCounter.html#/s:5Glean14LabeledCounterC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"LabeledCounter"},"Classes/LabeledCounter.html#/s:5Glean14LabeledCounterCyAcA0B10MetricDataO_SaySSGSgtcfc":{"name":"init(_:_:)","abstract":"

    Undocumented

    ","parent_name":"LabeledCounter"},"Classes/LabeledCounter.html#/s:5Glean14LabeledCounterC3getyAA0C6MetricCSSF":{"name":"get(_:)","abstract":"

    Undocumented

    ","parent_name":"LabeledCounter"},"Classes/LabeledCounter.html#/s:5Glean14LabeledCounterC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"LabeledCounter"},"Classes/LabeledBoolean/NoPointer.html#/s:5Glean14LabeledBooleanC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/LabeledBoolean/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"LabeledBoolean"},"Classes/LabeledBoolean.html#/s:5Glean14LabeledBooleanC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"LabeledBoolean"},"Classes/LabeledBoolean.html#/s:5Glean14LabeledBooleanC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"LabeledBoolean"},"Classes/LabeledBoolean.html#/s:5Glean14LabeledBooleanC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"LabeledBoolean"},"Classes/LabeledBoolean.html#/s:5Glean14LabeledBooleanCyAcA0B10MetricDataO_SaySSGSgtcfc":{"name":"init(_:_:)","abstract":"

    Undocumented

    ","parent_name":"LabeledBoolean"},"Classes/LabeledBoolean.html#/s:5Glean14LabeledBooleanC3getyAA0C6MetricCSSF":{"name":"get(_:)","abstract":"

    Undocumented

    ","parent_name":"LabeledBoolean"},"Classes/LabeledBoolean.html#/s:5Glean14LabeledBooleanC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"LabeledBoolean"},"Classes/EventMetric/NoPointer.html#/s:5Glean11EventMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/EventMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"EventMetric"},"Classes/EventMetric.html#/s:5Glean11EventMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"EventMetric"},"Classes/EventMetric.html#/s:5Glean11EventMetricC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"EventMetric"},"Classes/EventMetric.html#/s:5Glean11EventMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"EventMetric"},"Classes/EventMetric.html#/s:5Glean11EventMetricCyAcA06CommonC4DataV_SaySSGtcfc":{"name":"init(_:_:)","abstract":"

    Undocumented

    ","parent_name":"EventMetric"},"Classes/EventMetric.html#/s:5Glean11EventMetricC6recordyySDyS2SGF":{"name":"record(_:)","abstract":"

    Undocumented

    ","parent_name":"EventMetric"},"Classes/EventMetric.html#/s:5Glean11EventMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"EventMetric"},"Classes/EventMetric.html#/s:5Glean11EventMetricC12testGetValueySayAA08RecordedB0VGSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"EventMetric"},"Classes/DenominatorMetric/NoPointer.html#/s:5Glean17DenominatorMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/DenominatorMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"DenominatorMetric"},"Classes/DenominatorMetric.html#/s:5Glean17DenominatorMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"DenominatorMetric"},"Classes/DenominatorMetric.html#/s:5Glean17DenominatorMetricC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"DenominatorMetric"},"Classes/DenominatorMetric.html#/s:5Glean17DenominatorMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"DenominatorMetric"},"Classes/DenominatorMetric.html#/s:5Glean17DenominatorMetricCyAcA06CommonC4DataV_SayAEGtcfc":{"name":"init(_:_:)","abstract":"

    Undocumented

    ","parent_name":"DenominatorMetric"},"Classes/DenominatorMetric.html#/s:5Glean17DenominatorMetricC3addyys5Int32VF":{"name":"add(_:)","abstract":"

    Undocumented

    ","parent_name":"DenominatorMetric"},"Classes/DenominatorMetric.html#/s:5Glean17DenominatorMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"DenominatorMetric"},"Classes/DenominatorMetric.html#/s:5Glean17DenominatorMetricC12testGetValueys5Int32VSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"DenominatorMetric"},"Classes/DatetimeMetric/NoPointer.html#/s:5Glean14DatetimeMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/DatetimeMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"DatetimeMetric"},"Classes/DatetimeMetric.html#/s:5Glean14DatetimeMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"DatetimeMetric"},"Classes/DatetimeMetric.html#/s:5Glean14DatetimeMetricC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"DatetimeMetric"},"Classes/DatetimeMetric.html#/s:5Glean14DatetimeMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"DatetimeMetric"},"Classes/DatetimeMetric.html#/s:5Glean14DatetimeMetricCyAcA06CommonC4DataV_AA8TimeUnitOtcfc":{"name":"init(_:_:)","abstract":"

    Undocumented

    ","parent_name":"DatetimeMetric"},"Classes/DatetimeMetric.html#/s:5Glean14DatetimeMetricC3setyyAA0B0VSgF":{"name":"set(_:)","abstract":"

    Undocumented

    ","parent_name":"DatetimeMetric"},"Classes/DatetimeMetric.html#/s:5Glean14DatetimeMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"DatetimeMetric"},"Classes/DatetimeMetric.html#/s:5Glean14DatetimeMetricC12testGetValueyAA0B0VSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"DatetimeMetric"},"Classes/DatetimeMetric.html#/s:5Glean14DatetimeMetricC20testGetValueAsStringySSSgAEF":{"name":"testGetValueAsString(_:)","abstract":"

    Undocumented

    ","parent_name":"DatetimeMetric"},"Classes/CustomDistributionMetric/NoPointer.html#/s:5Glean24CustomDistributionMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/CustomDistributionMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"CustomDistributionMetric"},"Classes/CustomDistributionMetric.html#/s:5Glean24CustomDistributionMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"CustomDistributionMetric"},"Classes/CustomDistributionMetric.html#/s:5Glean24CustomDistributionMetricC9noPointerA2C02NoF0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"CustomDistributionMetric"},"Classes/CustomDistributionMetric.html#/s:5Glean24CustomDistributionMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"CustomDistributionMetric"},"Classes/CustomDistributionMetric.html#/s:5Glean24CustomDistributionMetricCyAcA06CommonD4DataV_s5Int64VA2gA13HistogramTypeOtcfc":{"name":"init(_:_:_:_:_:)","abstract":"

    Undocumented

    ","parent_name":"CustomDistributionMetric"},"Classes/CustomDistributionMetric.html#/s:5Glean24CustomDistributionMetricC17accumulateSamplesyySays5Int64VGF":{"name":"accumulateSamples(_:)","abstract":"

    Undocumented

    ","parent_name":"CustomDistributionMetric"},"Classes/CustomDistributionMetric.html#/s:5Glean24CustomDistributionMetricC22accumulateSingleSampleyys5Int64VF":{"name":"accumulateSingleSample(_:)","abstract":"

    Undocumented

    ","parent_name":"CustomDistributionMetric"},"Classes/CustomDistributionMetric.html#/s:5Glean24CustomDistributionMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"CustomDistributionMetric"},"Classes/CustomDistributionMetric.html#/s:5Glean24CustomDistributionMetricC12testGetValueyAA0C4DataVSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"CustomDistributionMetric"},"Classes/CounterMetric/NoPointer.html#/s:5Glean13CounterMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/CounterMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"CounterMetric"},"Classes/CounterMetric.html#/s:5Glean13CounterMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"CounterMetric"},"Classes/CounterMetric.html#/s:5Glean13CounterMetricC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"CounterMetric"},"Classes/CounterMetric.html#/s:5Glean13CounterMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"CounterMetric"},"Classes/CounterMetric.html#/s:5Glean13CounterMetricCyAcA06CommonC4DataVcfc":{"name":"init(_:)","abstract":"

    Undocumented

    ","parent_name":"CounterMetric"},"Classes/CounterMetric.html#/s:5Glean13CounterMetricC3addyys5Int32VF":{"name":"add(_:)","abstract":"

    Undocumented

    ","parent_name":"CounterMetric"},"Classes/CounterMetric.html#/s:5Glean13CounterMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"CounterMetric"},"Classes/CounterMetric.html#/s:5Glean13CounterMetricC12testGetValueys5Int32VSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"CounterMetric"},"Classes/BooleanMetric/NoPointer.html#/s:5Glean13BooleanMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/BooleanMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"BooleanMetric"},"Classes/BooleanMetric.html#/s:5Glean13BooleanMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"BooleanMetric"},"Classes/BooleanMetric.html#/s:5Glean13BooleanMetricC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"BooleanMetric"},"Classes/BooleanMetric.html#/s:5Glean13BooleanMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"BooleanMetric"},"Classes/BooleanMetric.html#/s:5Glean13BooleanMetricCyAcA06CommonC4DataVcfc":{"name":"init(_:)","abstract":"

    Undocumented

    ","parent_name":"BooleanMetric"},"Classes/BooleanMetric.html#/s:5Glean13BooleanMetricC3setyySbF":{"name":"set(_:)","abstract":"

    Undocumented

    ","parent_name":"BooleanMetric"},"Classes/BooleanMetric.html#/s:5Glean13BooleanMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"BooleanMetric"},"Classes/BooleanMetric.html#/s:5Glean13BooleanMetricC12testGetValueySbSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"BooleanMetric"},"Classes/BooleanMetric.html":{"name":"BooleanMetric","abstract":"

    Undocumented

    "},"Classes/CounterMetric.html":{"name":"CounterMetric","abstract":"

    Undocumented

    "},"Classes/CustomDistributionMetric.html":{"name":"CustomDistributionMetric","abstract":"

    Undocumented

    "},"Classes/DatetimeMetric.html":{"name":"DatetimeMetric","abstract":"

    Undocumented

    "},"Classes/DenominatorMetric.html":{"name":"DenominatorMetric","abstract":"

    Undocumented

    "},"Classes/EventMetric.html":{"name":"EventMetric","abstract":"

    Undocumented

    "},"Classes/LabeledBoolean.html":{"name":"LabeledBoolean","abstract":"

    Undocumented

    "},"Classes/LabeledCounter.html":{"name":"LabeledCounter","abstract":"

    Undocumented

    "},"Classes/LabeledString.html":{"name":"LabeledString","abstract":"

    Undocumented

    "},"Classes/MemoryDistributionMetric.html":{"name":"MemoryDistributionMetric","abstract":"

    Undocumented

    "},"Classes/NumeratorMetric.html":{"name":"NumeratorMetric","abstract":"

    Undocumented

    "},"Classes/ObjectMetric.html":{"name":"ObjectMetric","abstract":"

    Undocumented

    "},"Classes/PingType.html":{"name":"PingType","abstract":"

    Undocumented

    "},"Classes/QuantityMetric.html":{"name":"QuantityMetric","abstract":"

    Undocumented

    "},"Classes/RateMetric.html":{"name":"RateMetric","abstract":"

    Undocumented

    "},"Classes/StringListMetric.html":{"name":"StringListMetric","abstract":"

    Undocumented

    "},"Classes/StringMetric.html":{"name":"StringMetric","abstract":"

    Undocumented

    "},"Classes/TextMetric.html":{"name":"TextMetric","abstract":"

    Undocumented

    "},"Classes/TimespanMetric.html":{"name":"TimespanMetric","abstract":"

    Undocumented

    "},"Classes/TimingDistributionMetric.html":{"name":"TimingDistributionMetric","abstract":"

    Undocumented

    "},"Classes/UrlMetric.html":{"name":"UrlMetric","abstract":"

    Undocumented

    "},"Classes/UuidMetric.html":{"name":"UuidMetric","abstract":"

    Undocumented

    "},"Classes/Glean.html":{"name":"Glean","abstract":"

    The main Glean API.

    "},"Classes/DatetimeMetricType.html":{"name":"DatetimeMetricType","abstract":"

    This implements the developer facing API for recording datetime metrics.

    "},"Classes/NoExtras.html":{"name":"NoExtras","abstract":"

    Default of no extra keys for events (for the new API).

    "},"Classes/EventMetricType.html":{"name":"EventMetricType","abstract":"

    This implements the developer facing API for recording events.

    "},"Classes/LabeledMetricType.html":{"name":"LabeledMetricType","abstract":"

    This implements the developer facing API for labeled metrics.

    "},"Classes/ObjectMetricType.html":{"name":"ObjectMetricType","abstract":"

    This implements the developer facing API for the object metric type.

    "},"Classes/Ping.html":{"name":"Ping","abstract":"

    This implements the developer facing API for custom pings.

    "},"Classes/UrlMetricType.html":{"name":"UrlMetricType","abstract":"

    This implements the developer facing API for recording URL metrics.

    "},"Classes/UuidMetricType.html":{"name":"UuidMetricType","abstract":"

    This implements the developer facing API for recording UUID metrics.

    "},"Classes/HttpPingUploader.html":{"name":"HttpPingUploader","abstract":"

    This class represents a ping uploader via HTTP.

    "},"Classes.html":{"name":"Classes","abstract":"

    The following classes are available globally.

    "},"Enums.html":{"name":"Enumerations","abstract":"

    The following enumerations are available globally.

    "},"Extensions.html":{"name":"Extensions","abstract":"

    The following extensions are available globally.

    "},"Functions.html":{"name":"Functions","abstract":"

    The following functions are available globally.

    "},"Protocols.html":{"name":"Protocols","abstract":"

    The following protocols are available globally.

    "},"Structs.html":{"name":"Structures","abstract":"

    The following structures are available globally.

    "},"Typealiases.html":{"name":"Type Aliases","abstract":"

    The following type aliases are available globally.

    "}} \ No newline at end of file diff --git a/swift/docsets/Glean.docset/Contents/Resources/docSet.dsidx b/swift/docsets/Glean.docset/Contents/Resources/docSet.dsidx index 9864c586d2..c815db64e8 100644 Binary files a/swift/docsets/Glean.docset/Contents/Resources/docSet.dsidx and b/swift/docsets/Glean.docset/Contents/Resources/docSet.dsidx differ diff --git a/swift/docsets/Glean.tgz b/swift/docsets/Glean.tgz index b9a41c310a..3a307d75f3 100644 Binary files a/swift/docsets/Glean.tgz and b/swift/docsets/Glean.tgz differ diff --git a/swift/index.html b/swift/index.html index 3bf555f5ac..062d1c78a1 100644 --- a/swift/index.html +++ b/swift/index.html @@ -969,7 +969,7 @@

    Overview

  • ./glean-core/python contains Python bindings.
  • -

    Note: The Glean SDK requires at least Rust 1.66.0. Older versions are untested.

    +

    Note: The Glean SDK requires at least Rust 1.76.0. Older versions are untested.

    Contact

    To contact us you can:

    @@ -1007,7 +1007,7 @@

    License

    diff --git a/swift/search.json b/swift/search.json index 64b9192684..3486900ad1 100644 --- a/swift/search.json +++ b/swift/search.json @@ -1 +1 @@ -{"Typealiases.html#/s:5Glean9CowStringa":{"name":"CowString","abstract":"

    Typealias from the type name used in the UDL file to the builtin type. This"},"Typealiases.html#/s:5Glean9JsonValuea":{"name":"JsonValue","abstract":"

    Typealias from the type name used in the UDL file to the builtin type. This"},"Typealiases.html#/s:5Glean0A7TimerIda":{"name":"GleanTimerId","abstract":"

    Public exported type identifying individual timers for TimingDistributionMetricType

    "},"Typealiases.html#/s:5Glean17BooleanMetricTypea":{"name":"BooleanMetricType","abstract":"

    This implements the developer facing API for recording boolean metrics.

    "},"Typealiases.html#/s:5Glean17CounterMetricTypea":{"name":"CounterMetricType","abstract":"

    This implements the developer facing API for recording counter metrics.

    "},"Typealiases.html#/s:5Glean28MemoryDistributionMetricTypea":{"name":"MemoryDistributionMetricType","abstract":"

    This implements the developer facing API for recording memory distribution metrics.

    "},"Typealiases.html#/s:5Glean18QuantityMetricTypea":{"name":"QuantityMetricType","abstract":"

    This implements the developer facing API for recording quantity metrics.

    "},"Typealiases.html#/s:5Glean14RateMetricTypea":{"name":"RateMetricType","abstract":"

    This implements the developer facing API for recording rate metrics.

    "},"Typealiases.html#/s:5Glean21DenominatorMetricTypea":{"name":"DenominatorMetricType","abstract":"

    This implements the developer facing API for recording a denominator of a rate metric,"},"Typealiases.html#/s:5Glean19NumeratorMetricTypea":{"name":"NumeratorMetricType","abstract":"

    This implements the developer facing API for recording the numerator of a rate metric"},"Typealiases.html#/s:5Glean20StringListMetricTypea":{"name":"StringListMetricType","abstract":"

    This implements the developer facing API for recording string list metrics.

    "},"Typealiases.html#/s:5Glean16StringMetricTypea":{"name":"StringMetricType","abstract":"

    This implements the developer facing API for recording string metrics.

    "},"Typealiases.html#/s:5Glean14TextMetricTypea":{"name":"TextMetricType","abstract":"

    This implements the developer facing API for recording text metrics.

    "},"Typealiases.html#/s:5Glean18TimespanMetricTypea":{"name":"TimespanMetricType","abstract":"

    This implements the developer facing API for recording timespan metrics.

    "},"Typealiases.html#/s:5Glean28TimingDistributionMetricTypea":{"name":"TimingDistributionMetricType","abstract":"

    This implements the developer facing API for recording timing distribution metrics.

    "},"Structs/BuildInfo.html#/s:5Glean9BuildInfoV9buildDateAC10Foundation0E10ComponentsV_tcfc":{"name":"init(buildDate:)","abstract":"

    Undocumented

    ","parent_name":"BuildInfo"},"Structs/FfiConverterTypeJsonValue.html#/s:5Glean25FfiConverterTypeJsonValueV4read4fromSS10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeJsonValue"},"Structs/FfiConverterTypeJsonValue.html#/s:5Glean25FfiConverterTypeJsonValueV5write_4intoySS_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeJsonValue"},"Structs/FfiConverterTypeJsonValue.html#/s:5Glean25FfiConverterTypeJsonValueV4liftySSSo10RustBufferVKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeJsonValue"},"Structs/FfiConverterTypeJsonValue.html#/s:5Glean25FfiConverterTypeJsonValueV5lowerySo10RustBufferVSSFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeJsonValue"},"Structs/FfiConverterTypeCowString.html#/s:5Glean25FfiConverterTypeCowStringV4read4fromSS10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeCowString"},"Structs/FfiConverterTypeCowString.html#/s:5Glean25FfiConverterTypeCowStringV5write_4intoySS_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeCowString"},"Structs/FfiConverterTypeCowString.html#/s:5Glean25FfiConverterTypeCowStringV4liftySSSo10RustBufferVKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeCowString"},"Structs/FfiConverterTypeCowString.html#/s:5Glean25FfiConverterTypeCowStringV5lowerySo10RustBufferVSSFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeCowString"},"Structs/FfiConverterTypeUploadTaskAction.html#/s:5Glean32FfiConverterTypeUploadTaskActionV4read4fromAA0efG0O10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeUploadTaskAction"},"Structs/FfiConverterTypeUploadTaskAction.html#/s:5Glean32FfiConverterTypeUploadTaskActionV5write_4intoyAA0efG0O_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeUploadTaskAction"},"Structs/FfiConverterTypeUploadResult.html#/s:5Glean28FfiConverterTypeUploadResultV4read4fromAA0eF0O10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeUploadResult"},"Structs/FfiConverterTypeUploadResult.html#/s:5Glean28FfiConverterTypeUploadResultV5write_4intoyAA0eF0O_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeUploadResult"},"Structs/FfiConverterTypeTimeUnit.html#/s:5Glean24FfiConverterTypeTimeUnitV4read4fromAA0eF0O10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeTimeUnit"},"Structs/FfiConverterTypeTimeUnit.html#/s:5Glean24FfiConverterTypeTimeUnitV5write_4intoyAA0eF0O_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeTimeUnit"},"Structs/FfiConverterTypePingUploadTask.html#/s:5Glean30FfiConverterTypePingUploadTaskV4read4fromAA0efG0O10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypePingUploadTask"},"Structs/FfiConverterTypePingUploadTask.html#/s:5Glean30FfiConverterTypePingUploadTaskV5write_4intoyAA0efG0O_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypePingUploadTask"},"Structs/FfiConverterTypeMemoryUnit.html#/s:5Glean26FfiConverterTypeMemoryUnitV4read4fromAA0eF0O10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeMemoryUnit"},"Structs/FfiConverterTypeMemoryUnit.html#/s:5Glean26FfiConverterTypeMemoryUnitV5write_4intoyAA0eF0O_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeMemoryUnit"},"Structs/FfiConverterTypeLifetime.html#/s:5Glean24FfiConverterTypeLifetimeV4read4fromAA0E0O10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLifetime"},"Structs/FfiConverterTypeLifetime.html#/s:5Glean24FfiConverterTypeLifetimeV5write_4intoyAA0E0O_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLifetime"},"Structs/FfiConverterTypeLevelFilter.html#/s:5Glean27FfiConverterTypeLevelFilterV4read4fromAA0eF0O10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLevelFilter"},"Structs/FfiConverterTypeLevelFilter.html#/s:5Glean27FfiConverterTypeLevelFilterV5write_4intoyAA0eF0O_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLevelFilter"},"Structs/FfiConverterTypeLabeledMetricData.html#/s:5Glean33FfiConverterTypeLabeledMetricDataV4read4fromAA0efG0O10Foundation0G0V4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLabeledMetricData"},"Structs/FfiConverterTypeLabeledMetricData.html#/s:5Glean33FfiConverterTypeLabeledMetricDataV5write_4intoyAA0efG0O_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLabeledMetricData"},"Structs/FfiConverterTypeHistogramType.html#/s:5Glean025FfiConverterTypeHistogramD0V4read4fromAA0eD0O10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeHistogramType"},"Structs/FfiConverterTypeHistogramType.html#/s:5Glean025FfiConverterTypeHistogramD0V5write_4intoyAA0eD0O_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeHistogramType"},"Structs/FfiConverterTypeErrorType.html#/s:5Glean021FfiConverterTypeErrorD0V4read4fromAA0eD0O10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeErrorType"},"Structs/FfiConverterTypeErrorType.html#/s:5Glean021FfiConverterTypeErrorD0V5write_4intoyAA0eD0O_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeErrorType"},"Structs/FfiConverterTypeCallbackError.html#/s:5Glean29FfiConverterTypeCallbackErrorV4read4fromAA0eF0O10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeCallbackError"},"Structs/FfiConverterTypeCallbackError.html#/s:5Glean29FfiConverterTypeCallbackErrorV5write_4intoyAA0eF0O_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeCallbackError"},"Structs/FfiConverterTypeTimerId.html#/s:5Glean23FfiConverterTypeTimerIdV4read4fromAA0eF0V10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeTimerId"},"Structs/FfiConverterTypeTimerId.html#/s:5Glean23FfiConverterTypeTimerIdV5write_4intoyAA0eF0V_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeTimerId"},"Structs/TimerId.html#/s:5Glean7TimerIdV2ids6UInt64Vvp":{"name":"id","abstract":"

    Undocumented

    ","parent_name":"TimerId"},"Structs/TimerId.html#/s:5Glean7TimerIdV2idACs6UInt64V_tcfc":{"name":"init(id:)","abstract":"

    Undocumented

    ","parent_name":"TimerId"},"Structs/TimerId.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"TimerId"},"Structs/TimerId.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"TimerId"},"Structs/FfiConverterTypeRecordedExperiment.html#/s:5Glean34FfiConverterTypeRecordedExperimentV4read4fromAA0eF0V10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeRecordedExperiment"},"Structs/FfiConverterTypeRecordedExperiment.html#/s:5Glean34FfiConverterTypeRecordedExperimentV5write_4intoyAA0eF0V_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeRecordedExperiment"},"Structs/RecordedExperiment.html#/s:5Glean18RecordedExperimentV6branchSSvp":{"name":"branch","abstract":"

    Undocumented

    ","parent_name":"RecordedExperiment"},"Structs/RecordedExperiment.html#/s:5Glean18RecordedExperimentV5extraSDyS2SGSgvp":{"name":"extra","abstract":"

    Undocumented

    ","parent_name":"RecordedExperiment"},"Structs/RecordedExperiment.html#/s:5Glean18RecordedExperimentV6branch5extraACSS_SDyS2SGSgtcfc":{"name":"init(branch:extra:)","abstract":"

    Undocumented

    ","parent_name":"RecordedExperiment"},"Structs/RecordedExperiment.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"RecordedExperiment"},"Structs/RecordedExperiment.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"RecordedExperiment"},"Structs/FfiConverterTypeRecordedEvent.html#/s:5Glean29FfiConverterTypeRecordedEventV4read4fromAA0eF0V10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeRecordedEvent"},"Structs/FfiConverterTypeRecordedEvent.html#/s:5Glean29FfiConverterTypeRecordedEventV5write_4intoyAA0eF0V_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeRecordedEvent"},"Structs/RecordedEvent.html#/s:5Glean13RecordedEventV9timestamps6UInt64Vvp":{"name":"timestamp","abstract":"

    Undocumented

    ","parent_name":"RecordedEvent"},"Structs/RecordedEvent.html#/s:5Glean13RecordedEventV8categorySSvp":{"name":"category","abstract":"

    Undocumented

    ","parent_name":"RecordedEvent"},"Structs/RecordedEvent.html#/s:5Glean13RecordedEventV4nameSSvp":{"name":"name","abstract":"

    Undocumented

    ","parent_name":"RecordedEvent"},"Structs/RecordedEvent.html#/s:5Glean13RecordedEventV5extraSDyS2SGSgvp":{"name":"extra","abstract":"

    Undocumented

    ","parent_name":"RecordedEvent"},"Structs/RecordedEvent.html#/s:5Glean13RecordedEventV9timestamp8category4name5extraACs6UInt64V_S2SSDyS2SGSgtcfc":{"name":"init(timestamp:category:name:extra:)","abstract":"

    Undocumented

    ","parent_name":"RecordedEvent"},"Structs/RecordedEvent.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"RecordedEvent"},"Structs/RecordedEvent.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"RecordedEvent"},"Structs/FfiConverterTypeRate.html#/s:5Glean20FfiConverterTypeRateV4read4fromAA0E0V10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeRate"},"Structs/FfiConverterTypeRate.html#/s:5Glean20FfiConverterTypeRateV5write_4intoyAA0E0V_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeRate"},"Structs/Rate.html#/s:5Glean4RateV9numerators5Int32Vvp":{"name":"numerator","abstract":"

    Undocumented

    ","parent_name":"Rate"},"Structs/Rate.html#/s:5Glean4RateV11denominators5Int32Vvp":{"name":"denominator","abstract":"

    Undocumented

    ","parent_name":"Rate"},"Structs/Rate.html#/s:5Glean4RateV9numerator11denominatorACs5Int32V_AGtcfc":{"name":"init(numerator:denominator:)","abstract":"

    Undocumented

    ","parent_name":"Rate"},"Structs/Rate.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"Rate"},"Structs/Rate.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"Rate"},"Structs/FfiConverterTypePingRequest.html#/s:5Glean27FfiConverterTypePingRequestV4read4fromAA0eF0V10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypePingRequest"},"Structs/FfiConverterTypePingRequest.html#/s:5Glean27FfiConverterTypePingRequestV5write_4intoyAA0eF0V_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypePingRequest"},"Structs/PingRequest.html#/s:5Glean11PingRequestV10documentIdSSvp":{"name":"documentId","abstract":"

    Undocumented

    ","parent_name":"PingRequest"},"Structs/PingRequest.html#/s:5Glean11PingRequestV4pathSSvp":{"name":"path","abstract":"

    Undocumented

    ","parent_name":"PingRequest"},"Structs/PingRequest.html#/s:5Glean11PingRequestV4bodySays5UInt8VGvp":{"name":"body","abstract":"

    Undocumented

    ","parent_name":"PingRequest"},"Structs/PingRequest.html#/s:5Glean11PingRequestV7headersSDyS2SGvp":{"name":"headers","abstract":"

    Undocumented

    ","parent_name":"PingRequest"},"Structs/PingRequest.html#/s:5Glean11PingRequestV19bodyHasInfoSectionsSbvp":{"name":"bodyHasInfoSections","abstract":"

    Undocumented

    ","parent_name":"PingRequest"},"Structs/PingRequest.html#/s:5Glean11PingRequestV8pingNameSSvp":{"name":"pingName","abstract":"

    Undocumented

    ","parent_name":"PingRequest"},"Structs/PingRequest.html#/s:5Glean11PingRequestV10documentId4path4body7headers0G15HasInfoSections8pingNameACSS_SSSays5UInt8VGSDyS2SGSbSStcfc":{"name":"init(documentId:path:body:headers:bodyHasInfoSections:pingName:)","abstract":"

    Undocumented

    ","parent_name":"PingRequest"},"Structs/PingRequest.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"PingRequest"},"Structs/PingRequest.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"PingRequest"},"Structs/FfiConverterTypePingRateLimit.html#/s:5Glean29FfiConverterTypePingRateLimitV4read4fromAA0efG0V10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypePingRateLimit"},"Structs/FfiConverterTypePingRateLimit.html#/s:5Glean29FfiConverterTypePingRateLimitV5write_4intoyAA0efG0V_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypePingRateLimit"},"Structs/PingRateLimit.html#/s:5Glean13PingRateLimitV18secondsPerIntervals6UInt64Vvp":{"name":"secondsPerInterval","abstract":"

    Undocumented

    ","parent_name":"PingRateLimit"},"Structs/PingRateLimit.html#/s:5Glean13PingRateLimitV16pingsPerIntervals6UInt32Vvp":{"name":"pingsPerInterval","abstract":"

    Undocumented

    ","parent_name":"PingRateLimit"},"Structs/PingRateLimit.html#/s:5Glean13PingRateLimitV18secondsPerInterval05pingsfG0ACs6UInt64V_s6UInt32Vtcfc":{"name":"init(secondsPerInterval:pingsPerInterval:)","abstract":"

    Undocumented

    ","parent_name":"PingRateLimit"},"Structs/PingRateLimit.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"PingRateLimit"},"Structs/PingRateLimit.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"PingRateLimit"},"Structs/FfiConverterTypeInternalConfiguration.html#/s:5Glean37FfiConverterTypeInternalConfigurationV4read4fromAA0eF0V10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeInternalConfiguration"},"Structs/FfiConverterTypeInternalConfiguration.html#/s:5Glean37FfiConverterTypeInternalConfigurationV5write_4intoyAA0eF0V_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeInternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV8dataPathSSvp":{"name":"dataPath","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV13applicationIdSSvp":{"name":"applicationId","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV19languageBindingNameSSvp":{"name":"languageBindingName","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV13uploadEnabledSbvp":{"name":"uploadEnabled","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV9maxEventss6UInt32VSgvp":{"name":"maxEvents","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV19delayPingLifetimeIoSbvp":{"name":"delayPingLifetimeIo","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV8appBuildSSvp":{"name":"appBuild","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV10useCoreMpsSbvp":{"name":"useCoreMps","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV25trimDataToRegisteredPingsSbvp":{"name":"trimDataToRegisteredPings","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV8logLevelAA0E6FilterOSgvp":{"name":"logLevel","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV9rateLimitAA08PingRateE0VSgvp":{"name":"rateLimit","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV21enableEventTimestampsSbvp":{"name":"enableEventTimestamps","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV17experimentationIdSSSgvp":{"name":"experimentationId","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV06enableB5PingsSbvp":{"name":"enableInternalPings","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV12pingScheduleSDySSSaySSGGvp":{"name":"pingSchedule","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV21pingLifetimeThresholds6UInt64Vvp":{"name":"pingLifetimeThreshold","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV19pingLifetimeMaxTimes6UInt64Vvp":{"name":"pingLifetimeMaxTime","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV8dataPath13applicationId19languageBindingName13uploadEnabled9maxEvents19delayPingLifetimeIo8appBuild10useCoreMps25trimDataToRegisteredPings8logLevel9rateLimit21enableEventTimestamps015experimentationG006enableB5Pings12pingSchedule04pingQ9Threshold04pingQ7MaxTimeACSS_S2SSbs6UInt32VSgSbSSS2bAA11LevelFilterOSgAA0P9RateLimitVSgSbSSSgSbSDySSSaySSGGs6UInt64VA6_tcfc":{"name":"init(dataPath:applicationId:languageBindingName:uploadEnabled:maxEvents:delayPingLifetimeIo:appBuild:useCoreMps:trimDataToRegisteredPings:logLevel:rateLimit:enableEventTimestamps:experimentationId:enableInternalPings:pingSchedule:pingLifetimeThreshold:pingLifetimeMaxTime:)","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"InternalConfiguration"},"Structs/FfiConverterTypeDistributionData.html#/s:5Glean32FfiConverterTypeDistributionDataV4read4fromAA0eF0V10Foundation0F0V4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeDistributionData"},"Structs/FfiConverterTypeDistributionData.html#/s:5Glean32FfiConverterTypeDistributionDataV5write_4intoyAA0eF0V_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeDistributionData"},"Structs/DistributionData.html#/s:5Glean16DistributionDataV6valuesSDys5Int64VAFGvp":{"name":"values","abstract":"

    Undocumented

    ","parent_name":"DistributionData"},"Structs/DistributionData.html#/s:5Glean16DistributionDataV3sums5Int64Vvp":{"name":"sum","abstract":"

    Undocumented

    ","parent_name":"DistributionData"},"Structs/DistributionData.html#/s:5Glean16DistributionDataV5counts5Int64Vvp":{"name":"count","abstract":"

    Undocumented

    ","parent_name":"DistributionData"},"Structs/DistributionData.html#/s:5Glean16DistributionDataV6values3sum5countACSDys5Int64VAHG_A2Htcfc":{"name":"init(values:sum:count:)","abstract":"

    Undocumented

    ","parent_name":"DistributionData"},"Structs/DistributionData.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"DistributionData"},"Structs/DistributionData.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"DistributionData"},"Structs/FfiConverterTypeDatetime.html#/s:5Glean24FfiConverterTypeDatetimeV4read4fromAA0E0V10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeDatetime"},"Structs/FfiConverterTypeDatetime.html#/s:5Glean24FfiConverterTypeDatetimeV5write_4intoyAA0E0V_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeDatetime"},"Structs/Datetime.html#/s:5Glean8DatetimeV4years5Int32Vvp":{"name":"year","abstract":"

    Undocumented

    ","parent_name":"Datetime"},"Structs/Datetime.html#/s:5Glean8DatetimeV5months6UInt32Vvp":{"name":"month","abstract":"

    Undocumented

    ","parent_name":"Datetime"},"Structs/Datetime.html#/s:5Glean8DatetimeV3days6UInt32Vvp":{"name":"day","abstract":"

    Undocumented

    ","parent_name":"Datetime"},"Structs/Datetime.html#/s:5Glean8DatetimeV4hours6UInt32Vvp":{"name":"hour","abstract":"

    Undocumented

    ","parent_name":"Datetime"},"Structs/Datetime.html#/s:5Glean8DatetimeV6minutes6UInt32Vvp":{"name":"minute","abstract":"

    Undocumented

    ","parent_name":"Datetime"},"Structs/Datetime.html#/s:5Glean8DatetimeV6seconds6UInt32Vvp":{"name":"second","abstract":"

    Undocumented

    ","parent_name":"Datetime"},"Structs/Datetime.html#/s:5Glean8DatetimeV10nanoseconds6UInt32Vvp":{"name":"nanosecond","abstract":"

    Undocumented

    ","parent_name":"Datetime"},"Structs/Datetime.html#/s:5Glean8DatetimeV13offsetSecondss5Int32Vvp":{"name":"offsetSeconds","abstract":"

    Undocumented

    ","parent_name":"Datetime"},"Structs/Datetime.html#/s:5Glean8DatetimeV4year5month3day4hour6minute6second10nanosecond13offsetSecondsACs5Int32V_s6UInt32VA5oMtcfc":{"name":"init(year:month:day:hour:minute:second:nanosecond:offsetSeconds:)","abstract":"

    Undocumented

    ","parent_name":"Datetime"},"Structs/Datetime.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"Datetime"},"Structs/Datetime.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"Datetime"},"Structs/FfiConverterTypeCommonMetricData.html#/s:5Glean32FfiConverterTypeCommonMetricDataV4read4fromAA0efG0V10Foundation0G0V4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeCommonMetricData"},"Structs/FfiConverterTypeCommonMetricData.html#/s:5Glean32FfiConverterTypeCommonMetricDataV5write_4intoyAA0efG0V_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeCommonMetricData"},"Structs/CommonMetricData.html#/s:5Glean16CommonMetricDataV8categorySSvp":{"name":"category","abstract":"

    Undocumented

    ","parent_name":"CommonMetricData"},"Structs/CommonMetricData.html#/s:5Glean16CommonMetricDataV4nameSSvp":{"name":"name","abstract":"

    Undocumented

    ","parent_name":"CommonMetricData"},"Structs/CommonMetricData.html#/s:5Glean16CommonMetricDataV11sendInPingsSaySSGvp":{"name":"sendInPings","abstract":"

    Undocumented

    ","parent_name":"CommonMetricData"},"Structs/CommonMetricData.html#/s:5Glean16CommonMetricDataV8lifetimeAA8LifetimeOvp":{"name":"lifetime","abstract":"

    Undocumented

    ","parent_name":"CommonMetricData"},"Structs/CommonMetricData.html#/s:5Glean16CommonMetricDataV8disabledSbvp":{"name":"disabled","abstract":"

    Undocumented

    ","parent_name":"CommonMetricData"},"Structs/CommonMetricData.html#/s:5Glean16CommonMetricDataV12dynamicLabelSSSgvp":{"name":"dynamicLabel","abstract":"

    Undocumented

    ","parent_name":"CommonMetricData"},"Structs/CommonMetricData.html#/s:5Glean16CommonMetricDataV8category4name11sendInPings8lifetime8disabled12dynamicLabelACSS_SSSaySSGAA8LifetimeOSbSSSgtcfc":{"name":"init(category:name:sendInPings:lifetime:disabled:dynamicLabel:)","abstract":"

    Undocumented

    ","parent_name":"CommonMetricData"},"Structs/CommonMetricData.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"CommonMetricData"},"Structs/CommonMetricData.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"CommonMetricData"},"Structs/FfiConverterTypeClientInfoMetrics.html#/s:5Glean33FfiConverterTypeClientInfoMetricsV4read4fromAA0efG0V10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeClientInfoMetrics"},"Structs/FfiConverterTypeClientInfoMetrics.html#/s:5Glean33FfiConverterTypeClientInfoMetricsV5write_4intoyAA0efG0V_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeClientInfoMetrics"},"Structs/ClientInfoMetrics.html#/s:5Glean17ClientInfoMetricsV8appBuildSSvp":{"name":"appBuild","abstract":"

    Undocumented

    ","parent_name":"ClientInfoMetrics"},"Structs/ClientInfoMetrics.html#/s:5Glean17ClientInfoMetricsV17appDisplayVersionSSvp":{"name":"appDisplayVersion","abstract":"

    Undocumented

    ","parent_name":"ClientInfoMetrics"},"Structs/ClientInfoMetrics.html#/s:5Glean17ClientInfoMetricsV12appBuildDateAA8DatetimeVvp":{"name":"appBuildDate","abstract":"

    Undocumented

    ","parent_name":"ClientInfoMetrics"},"Structs/ClientInfoMetrics.html#/s:5Glean17ClientInfoMetricsV12architectureSSvp":{"name":"architecture","abstract":"

    Undocumented

    ","parent_name":"ClientInfoMetrics"},"Structs/ClientInfoMetrics.html#/s:5Glean17ClientInfoMetricsV9osVersionSSvp":{"name":"osVersion","abstract":"

    Undocumented

    ","parent_name":"ClientInfoMetrics"},"Structs/ClientInfoMetrics.html#/s:5Glean17ClientInfoMetricsV7channelSSSgvp":{"name":"channel","abstract":"

    Undocumented

    ","parent_name":"ClientInfoMetrics"},"Structs/ClientInfoMetrics.html#/s:5Glean17ClientInfoMetricsV6localeSSSgvp":{"name":"locale","abstract":"

    Undocumented

    ","parent_name":"ClientInfoMetrics"},"Structs/ClientInfoMetrics.html#/s:5Glean17ClientInfoMetricsV18deviceManufacturerSSSgvp":{"name":"deviceManufacturer","abstract":"

    Undocumented

    ","parent_name":"ClientInfoMetrics"},"Structs/ClientInfoMetrics.html#/s:5Glean17ClientInfoMetricsV11deviceModelSSSgvp":{"name":"deviceModel","abstract":"

    Undocumented

    ","parent_name":"ClientInfoMetrics"},"Structs/ClientInfoMetrics.html#/s:5Glean17ClientInfoMetricsV17androidSdkVersionSSSgvp":{"name":"androidSdkVersion","abstract":"

    Undocumented

    ","parent_name":"ClientInfoMetrics"},"Structs/ClientInfoMetrics.html#/s:5Glean17ClientInfoMetricsV18windowsBuildNumbers5Int64VSgvp":{"name":"windowsBuildNumber","abstract":"

    Undocumented

    ","parent_name":"ClientInfoMetrics"},"Structs/ClientInfoMetrics.html#/s:5Glean17ClientInfoMetricsV8appBuild0E14DisplayVersion0eF4Date12architecture02osH07channel6locale18deviceManufacturer0N5Model010androidSdkH007windowsF6NumberACSS_SSAA8DatetimeVS3SSgA4Qs5Int64VSgtcfc":{"name":"init(appBuild:appDisplayVersion:appBuildDate:architecture:osVersion:channel:locale:deviceManufacturer:deviceModel:androidSdkVersion:windowsBuildNumber:)","abstract":"

    Undocumented

    ","parent_name":"ClientInfoMetrics"},"Structs/ClientInfoMetrics.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"ClientInfoMetrics"},"Structs/ClientInfoMetrics.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"ClientInfoMetrics"},"Structs/FfiConverterTypeUuidMetric.html#/s:5Glean26FfiConverterTypeUuidMetricV4liftyAA0eF0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeUuidMetric"},"Structs/FfiConverterTypeUuidMetric.html#/s:5Glean26FfiConverterTypeUuidMetricV5lowerySvAA0eF0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeUuidMetric"},"Structs/FfiConverterTypeUuidMetric.html#/s:5Glean26FfiConverterTypeUuidMetricV4read4fromAA0eF0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeUuidMetric"},"Structs/FfiConverterTypeUuidMetric.html#/s:5Glean26FfiConverterTypeUuidMetricV5write_4intoyAA0eF0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeUuidMetric"},"Structs/FfiConverterTypeUrlMetric.html#/s:5Glean25FfiConverterTypeUrlMetricV4liftyAA0eF0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeUrlMetric"},"Structs/FfiConverterTypeUrlMetric.html#/s:5Glean25FfiConverterTypeUrlMetricV5lowerySvAA0eF0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeUrlMetric"},"Structs/FfiConverterTypeUrlMetric.html#/s:5Glean25FfiConverterTypeUrlMetricV4read4fromAA0eF0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeUrlMetric"},"Structs/FfiConverterTypeUrlMetric.html#/s:5Glean25FfiConverterTypeUrlMetricV5write_4intoyAA0eF0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeUrlMetric"},"Structs/FfiConverterTypeTimingDistributionMetric.html#/s:5Glean40FfiConverterTypeTimingDistributionMetricV4liftyAA0efG0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeTimingDistributionMetric"},"Structs/FfiConverterTypeTimingDistributionMetric.html#/s:5Glean40FfiConverterTypeTimingDistributionMetricV5lowerySvAA0efG0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeTimingDistributionMetric"},"Structs/FfiConverterTypeTimingDistributionMetric.html#/s:5Glean40FfiConverterTypeTimingDistributionMetricV4read4fromAA0efG0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeTimingDistributionMetric"},"Structs/FfiConverterTypeTimingDistributionMetric.html#/s:5Glean40FfiConverterTypeTimingDistributionMetricV5write_4intoyAA0efG0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeTimingDistributionMetric"},"Structs/FfiConverterTypeTimespanMetric.html#/s:5Glean30FfiConverterTypeTimespanMetricV4liftyAA0eF0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeTimespanMetric"},"Structs/FfiConverterTypeTimespanMetric.html#/s:5Glean30FfiConverterTypeTimespanMetricV5lowerySvAA0eF0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeTimespanMetric"},"Structs/FfiConverterTypeTimespanMetric.html#/s:5Glean30FfiConverterTypeTimespanMetricV4read4fromAA0eF0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeTimespanMetric"},"Structs/FfiConverterTypeTimespanMetric.html#/s:5Glean30FfiConverterTypeTimespanMetricV5write_4intoyAA0eF0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeTimespanMetric"},"Structs/FfiConverterTypeTextMetric.html#/s:5Glean26FfiConverterTypeTextMetricV4liftyAA0eF0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeTextMetric"},"Structs/FfiConverterTypeTextMetric.html#/s:5Glean26FfiConverterTypeTextMetricV5lowerySvAA0eF0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeTextMetric"},"Structs/FfiConverterTypeTextMetric.html#/s:5Glean26FfiConverterTypeTextMetricV4read4fromAA0eF0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeTextMetric"},"Structs/FfiConverterTypeTextMetric.html#/s:5Glean26FfiConverterTypeTextMetricV5write_4intoyAA0eF0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeTextMetric"},"Structs/FfiConverterTypeStringMetric.html#/s:5Glean28FfiConverterTypeStringMetricV4liftyAA0eF0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeStringMetric"},"Structs/FfiConverterTypeStringMetric.html#/s:5Glean28FfiConverterTypeStringMetricV5lowerySvAA0eF0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeStringMetric"},"Structs/FfiConverterTypeStringMetric.html#/s:5Glean28FfiConverterTypeStringMetricV4read4fromAA0eF0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeStringMetric"},"Structs/FfiConverterTypeStringMetric.html#/s:5Glean28FfiConverterTypeStringMetricV5write_4intoyAA0eF0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeStringMetric"},"Structs/FfiConverterTypeStringListMetric.html#/s:5Glean32FfiConverterTypeStringListMetricV4liftyAA0efG0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeStringListMetric"},"Structs/FfiConverterTypeStringListMetric.html#/s:5Glean32FfiConverterTypeStringListMetricV5lowerySvAA0efG0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeStringListMetric"},"Structs/FfiConverterTypeStringListMetric.html#/s:5Glean32FfiConverterTypeStringListMetricV4read4fromAA0efG0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeStringListMetric"},"Structs/FfiConverterTypeStringListMetric.html#/s:5Glean32FfiConverterTypeStringListMetricV5write_4intoyAA0efG0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeStringListMetric"},"Structs/FfiConverterTypeRateMetric.html#/s:5Glean26FfiConverterTypeRateMetricV4liftyAA0eF0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeRateMetric"},"Structs/FfiConverterTypeRateMetric.html#/s:5Glean26FfiConverterTypeRateMetricV5lowerySvAA0eF0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeRateMetric"},"Structs/FfiConverterTypeRateMetric.html#/s:5Glean26FfiConverterTypeRateMetricV4read4fromAA0eF0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeRateMetric"},"Structs/FfiConverterTypeRateMetric.html#/s:5Glean26FfiConverterTypeRateMetricV5write_4intoyAA0eF0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeRateMetric"},"Structs/FfiConverterTypeQuantityMetric.html#/s:5Glean30FfiConverterTypeQuantityMetricV4liftyAA0eF0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeQuantityMetric"},"Structs/FfiConverterTypeQuantityMetric.html#/s:5Glean30FfiConverterTypeQuantityMetricV5lowerySvAA0eF0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeQuantityMetric"},"Structs/FfiConverterTypeQuantityMetric.html#/s:5Glean30FfiConverterTypeQuantityMetricV4read4fromAA0eF0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeQuantityMetric"},"Structs/FfiConverterTypeQuantityMetric.html#/s:5Glean30FfiConverterTypeQuantityMetricV5write_4intoyAA0eF0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeQuantityMetric"},"Structs/FfiConverterTypePingType.html#/s:5Glean020FfiConverterTypePingD0V4liftyAA0eD0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypePingType"},"Structs/FfiConverterTypePingType.html#/s:5Glean020FfiConverterTypePingD0V5lowerySvAA0eD0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypePingType"},"Structs/FfiConverterTypePingType.html#/s:5Glean020FfiConverterTypePingD0V4read4fromAA0eD0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypePingType"},"Structs/FfiConverterTypePingType.html#/s:5Glean020FfiConverterTypePingD0V5write_4intoyAA0eD0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypePingType"},"Structs/FfiConverterTypeObjectMetric.html#/s:5Glean28FfiConverterTypeObjectMetricV4liftyAA0eF0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeObjectMetric"},"Structs/FfiConverterTypeObjectMetric.html#/s:5Glean28FfiConverterTypeObjectMetricV5lowerySvAA0eF0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeObjectMetric"},"Structs/FfiConverterTypeObjectMetric.html#/s:5Glean28FfiConverterTypeObjectMetricV4read4fromAA0eF0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeObjectMetric"},"Structs/FfiConverterTypeObjectMetric.html#/s:5Glean28FfiConverterTypeObjectMetricV5write_4intoyAA0eF0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeObjectMetric"},"Structs/FfiConverterTypeNumeratorMetric.html#/s:5Glean31FfiConverterTypeNumeratorMetricV4liftyAA0eF0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeNumeratorMetric"},"Structs/FfiConverterTypeNumeratorMetric.html#/s:5Glean31FfiConverterTypeNumeratorMetricV5lowerySvAA0eF0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeNumeratorMetric"},"Structs/FfiConverterTypeNumeratorMetric.html#/s:5Glean31FfiConverterTypeNumeratorMetricV4read4fromAA0eF0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeNumeratorMetric"},"Structs/FfiConverterTypeNumeratorMetric.html#/s:5Glean31FfiConverterTypeNumeratorMetricV5write_4intoyAA0eF0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeNumeratorMetric"},"Structs/FfiConverterTypeMemoryDistributionMetric.html#/s:5Glean40FfiConverterTypeMemoryDistributionMetricV4liftyAA0efG0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeMemoryDistributionMetric"},"Structs/FfiConverterTypeMemoryDistributionMetric.html#/s:5Glean40FfiConverterTypeMemoryDistributionMetricV5lowerySvAA0efG0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeMemoryDistributionMetric"},"Structs/FfiConverterTypeMemoryDistributionMetric.html#/s:5Glean40FfiConverterTypeMemoryDistributionMetricV4read4fromAA0efG0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeMemoryDistributionMetric"},"Structs/FfiConverterTypeMemoryDistributionMetric.html#/s:5Glean40FfiConverterTypeMemoryDistributionMetricV5write_4intoyAA0efG0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeMemoryDistributionMetric"},"Structs/FfiConverterTypeLabeledString.html#/s:5Glean29FfiConverterTypeLabeledStringV4liftyAA0eF0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLabeledString"},"Structs/FfiConverterTypeLabeledString.html#/s:5Glean29FfiConverterTypeLabeledStringV5lowerySvAA0eF0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLabeledString"},"Structs/FfiConverterTypeLabeledString.html#/s:5Glean29FfiConverterTypeLabeledStringV4read4fromAA0eF0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLabeledString"},"Structs/FfiConverterTypeLabeledString.html#/s:5Glean29FfiConverterTypeLabeledStringV5write_4intoyAA0eF0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLabeledString"},"Structs/FfiConverterTypeLabeledCounter.html#/s:5Glean30FfiConverterTypeLabeledCounterV4liftyAA0eF0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLabeledCounter"},"Structs/FfiConverterTypeLabeledCounter.html#/s:5Glean30FfiConverterTypeLabeledCounterV5lowerySvAA0eF0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLabeledCounter"},"Structs/FfiConverterTypeLabeledCounter.html#/s:5Glean30FfiConverterTypeLabeledCounterV4read4fromAA0eF0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLabeledCounter"},"Structs/FfiConverterTypeLabeledCounter.html#/s:5Glean30FfiConverterTypeLabeledCounterV5write_4intoyAA0eF0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLabeledCounter"},"Structs/FfiConverterTypeLabeledBoolean.html#/s:5Glean30FfiConverterTypeLabeledBooleanV4liftyAA0eF0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLabeledBoolean"},"Structs/FfiConverterTypeLabeledBoolean.html#/s:5Glean30FfiConverterTypeLabeledBooleanV5lowerySvAA0eF0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLabeledBoolean"},"Structs/FfiConverterTypeLabeledBoolean.html#/s:5Glean30FfiConverterTypeLabeledBooleanV4read4fromAA0eF0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLabeledBoolean"},"Structs/FfiConverterTypeLabeledBoolean.html#/s:5Glean30FfiConverterTypeLabeledBooleanV5write_4intoyAA0eF0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLabeledBoolean"},"Structs/FfiConverterTypeEventMetric.html#/s:5Glean27FfiConverterTypeEventMetricV4liftyAA0eF0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeEventMetric"},"Structs/FfiConverterTypeEventMetric.html#/s:5Glean27FfiConverterTypeEventMetricV5lowerySvAA0eF0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeEventMetric"},"Structs/FfiConverterTypeEventMetric.html#/s:5Glean27FfiConverterTypeEventMetricV4read4fromAA0eF0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeEventMetric"},"Structs/FfiConverterTypeEventMetric.html#/s:5Glean27FfiConverterTypeEventMetricV5write_4intoyAA0eF0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeEventMetric"},"Structs/FfiConverterTypeDenominatorMetric.html#/s:5Glean33FfiConverterTypeDenominatorMetricV4liftyAA0eF0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeDenominatorMetric"},"Structs/FfiConverterTypeDenominatorMetric.html#/s:5Glean33FfiConverterTypeDenominatorMetricV5lowerySvAA0eF0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeDenominatorMetric"},"Structs/FfiConverterTypeDenominatorMetric.html#/s:5Glean33FfiConverterTypeDenominatorMetricV4read4fromAA0eF0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeDenominatorMetric"},"Structs/FfiConverterTypeDenominatorMetric.html#/s:5Glean33FfiConverterTypeDenominatorMetricV5write_4intoyAA0eF0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeDenominatorMetric"},"Structs/FfiConverterTypeDatetimeMetric.html#/s:5Glean30FfiConverterTypeDatetimeMetricV4liftyAA0eF0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeDatetimeMetric"},"Structs/FfiConverterTypeDatetimeMetric.html#/s:5Glean30FfiConverterTypeDatetimeMetricV5lowerySvAA0eF0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeDatetimeMetric"},"Structs/FfiConverterTypeDatetimeMetric.html#/s:5Glean30FfiConverterTypeDatetimeMetricV4read4fromAA0eF0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeDatetimeMetric"},"Structs/FfiConverterTypeDatetimeMetric.html#/s:5Glean30FfiConverterTypeDatetimeMetricV5write_4intoyAA0eF0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeDatetimeMetric"},"Structs/FfiConverterTypeCustomDistributionMetric.html#/s:5Glean40FfiConverterTypeCustomDistributionMetricV4liftyAA0efG0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeCustomDistributionMetric"},"Structs/FfiConverterTypeCustomDistributionMetric.html#/s:5Glean40FfiConverterTypeCustomDistributionMetricV5lowerySvAA0efG0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeCustomDistributionMetric"},"Structs/FfiConverterTypeCustomDistributionMetric.html#/s:5Glean40FfiConverterTypeCustomDistributionMetricV4read4fromAA0efG0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeCustomDistributionMetric"},"Structs/FfiConverterTypeCustomDistributionMetric.html#/s:5Glean40FfiConverterTypeCustomDistributionMetricV5write_4intoyAA0efG0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeCustomDistributionMetric"},"Structs/FfiConverterTypeCounterMetric.html#/s:5Glean29FfiConverterTypeCounterMetricV4liftyAA0eF0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeCounterMetric"},"Structs/FfiConverterTypeCounterMetric.html#/s:5Glean29FfiConverterTypeCounterMetricV5lowerySvAA0eF0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeCounterMetric"},"Structs/FfiConverterTypeCounterMetric.html#/s:5Glean29FfiConverterTypeCounterMetricV4read4fromAA0eF0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeCounterMetric"},"Structs/FfiConverterTypeCounterMetric.html#/s:5Glean29FfiConverterTypeCounterMetricV5write_4intoyAA0eF0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeCounterMetric"},"Structs/FfiConverterTypeBooleanMetric.html#/s:5Glean29FfiConverterTypeBooleanMetricV4liftyAA0eF0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeBooleanMetric"},"Structs/FfiConverterTypeBooleanMetric.html#/s:5Glean29FfiConverterTypeBooleanMetricV5lowerySvAA0eF0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeBooleanMetric"},"Structs/FfiConverterTypeBooleanMetric.html#/s:5Glean29FfiConverterTypeBooleanMetricV4read4fromAA0eF0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeBooleanMetric"},"Structs/FfiConverterTypeBooleanMetric.html#/s:5Glean29FfiConverterTypeBooleanMetricV5write_4intoyAA0eF0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeBooleanMetric"},"Structs/Configuration.html#/s:5Glean13ConfigurationV9maxEvents7channel14serverEndpoint8dataPath8logLevel21enableEventTimestamps17experimentationId0L13InternalPings21pingLifetimeThreshold0sT7MaxTimeACs5Int32VSg_SSSgA2qA0K6FilterOSgSbAQSbS2itcfc":{"name":"init(maxEvents:channel:serverEndpoint:dataPath:logLevel:enableEventTimestamps:experimentationId:enableInternalPings:pingLifetimeThreshold:pingLifetimeMaxTime:)","abstract":"

    Create a new Glean Configuration object

    ","parent_name":"Configuration"},"Structs/Configuration.html":{"name":"Configuration","abstract":"

    The Configuration struct describes how to configure Glean as well as providing convenience"},"Structs/FfiConverterTypeBooleanMetric.html":{"name":"FfiConverterTypeBooleanMetric","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeCounterMetric.html":{"name":"FfiConverterTypeCounterMetric","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeCustomDistributionMetric.html":{"name":"FfiConverterTypeCustomDistributionMetric","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeDatetimeMetric.html":{"name":"FfiConverterTypeDatetimeMetric","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeDenominatorMetric.html":{"name":"FfiConverterTypeDenominatorMetric","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeEventMetric.html":{"name":"FfiConverterTypeEventMetric","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeLabeledBoolean.html":{"name":"FfiConverterTypeLabeledBoolean","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeLabeledCounter.html":{"name":"FfiConverterTypeLabeledCounter","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeLabeledString.html":{"name":"FfiConverterTypeLabeledString","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeMemoryDistributionMetric.html":{"name":"FfiConverterTypeMemoryDistributionMetric","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeNumeratorMetric.html":{"name":"FfiConverterTypeNumeratorMetric","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeObjectMetric.html":{"name":"FfiConverterTypeObjectMetric","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypePingType.html":{"name":"FfiConverterTypePingType","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeQuantityMetric.html":{"name":"FfiConverterTypeQuantityMetric","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeRateMetric.html":{"name":"FfiConverterTypeRateMetric","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeStringListMetric.html":{"name":"FfiConverterTypeStringListMetric","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeStringMetric.html":{"name":"FfiConverterTypeStringMetric","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeTextMetric.html":{"name":"FfiConverterTypeTextMetric","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeTimespanMetric.html":{"name":"FfiConverterTypeTimespanMetric","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeTimingDistributionMetric.html":{"name":"FfiConverterTypeTimingDistributionMetric","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeUrlMetric.html":{"name":"FfiConverterTypeUrlMetric","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeUuidMetric.html":{"name":"FfiConverterTypeUuidMetric","abstract":"

    Undocumented

    "},"Structs/ClientInfoMetrics.html":{"name":"ClientInfoMetrics","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeClientInfoMetrics.html":{"name":"FfiConverterTypeClientInfoMetrics","abstract":"

    Undocumented

    "},"Structs/CommonMetricData.html":{"name":"CommonMetricData","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeCommonMetricData.html":{"name":"FfiConverterTypeCommonMetricData","abstract":"

    Undocumented

    "},"Structs/Datetime.html":{"name":"Datetime","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeDatetime.html":{"name":"FfiConverterTypeDatetime","abstract":"

    Undocumented

    "},"Structs/DistributionData.html":{"name":"DistributionData","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeDistributionData.html":{"name":"FfiConverterTypeDistributionData","abstract":"

    Undocumented

    "},"Structs/InternalConfiguration.html":{"name":"InternalConfiguration","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeInternalConfiguration.html":{"name":"FfiConverterTypeInternalConfiguration","abstract":"

    Undocumented

    "},"Structs/PingRateLimit.html":{"name":"PingRateLimit","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypePingRateLimit.html":{"name":"FfiConverterTypePingRateLimit","abstract":"

    Undocumented

    "},"Structs/PingRequest.html":{"name":"PingRequest","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypePingRequest.html":{"name":"FfiConverterTypePingRequest","abstract":"

    Undocumented

    "},"Structs/Rate.html":{"name":"Rate","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeRate.html":{"name":"FfiConverterTypeRate","abstract":"

    Undocumented

    "},"Structs/RecordedEvent.html":{"name":"RecordedEvent","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeRecordedEvent.html":{"name":"FfiConverterTypeRecordedEvent","abstract":"

    Undocumented

    "},"Structs/RecordedExperiment.html":{"name":"RecordedExperiment","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeRecordedExperiment.html":{"name":"FfiConverterTypeRecordedExperiment","abstract":"

    Undocumented

    "},"Structs/TimerId.html":{"name":"TimerId","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeTimerId.html":{"name":"FfiConverterTypeTimerId","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeCallbackError.html":{"name":"FfiConverterTypeCallbackError","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeErrorType.html":{"name":"FfiConverterTypeErrorType","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeHistogramType.html":{"name":"FfiConverterTypeHistogramType","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeLabeledMetricData.html":{"name":"FfiConverterTypeLabeledMetricData","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeLevelFilter.html":{"name":"FfiConverterTypeLevelFilter","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeLifetime.html":{"name":"FfiConverterTypeLifetime","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeMemoryUnit.html":{"name":"FfiConverterTypeMemoryUnit","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypePingUploadTask.html":{"name":"FfiConverterTypePingUploadTask","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeTimeUnit.html":{"name":"FfiConverterTypeTimeUnit","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeUploadResult.html":{"name":"FfiConverterTypeUploadResult","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeUploadTaskAction.html":{"name":"FfiConverterTypeUploadTaskAction","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeCowString.html":{"name":"FfiConverterTypeCowString","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeJsonValue.html":{"name":"FfiConverterTypeJsonValue","abstract":"

    Undocumented

    "},"Structs/BuildInfo.html":{"name":"BuildInfo","abstract":"

    Undocumented

    "},"Protocols/ReasonCodes.html#/s:5Glean11ReasonCodesP5indexSiyF":{"name":"index()","abstract":"

    The index of the reason code, used to index the string array passed at","parent_name":"ReasonCodes"},"Protocols/ObjectSerialize.html#/s:5Glean15ObjectSerializeP014intoSerializedB0SSyF":{"name":"intoSerializedObject()","abstract":"

    Undocumented

    ","parent_name":"ObjectSerialize"},"Protocols/EventExtras.html#/s:5Glean11EventExtrasP13toExtraRecordSDyS2SGyF":{"name":"toExtraRecord()","abstract":"

    Convert the event extras into 2 lists:

    ","parent_name":"EventExtras"},"Protocols/OnGleanEvents.html#/s:5Glean02OnA6EventsP18initializeFinishedyyF":{"name":"initializeFinished()","abstract":"

    Undocumented

    ","parent_name":"OnGleanEvents"},"Protocols/OnGleanEvents.html#/s:5Glean02OnA6EventsP13triggerUploadyyKF":{"name":"triggerUpload()","abstract":"

    Undocumented

    ","parent_name":"OnGleanEvents"},"Protocols/OnGleanEvents.html#/s:5Glean02OnA6EventsP25startMetricsPingSchedulerSbyF":{"name":"startMetricsPingScheduler()","abstract":"

    Undocumented

    ","parent_name":"OnGleanEvents"},"Protocols/OnGleanEvents.html#/s:5Glean02OnA6EventsP13cancelUploadsyyKF":{"name":"cancelUploads()","abstract":"

    Undocumented

    ","parent_name":"OnGleanEvents"},"Protocols/OnGleanEvents.html#/s:5Glean02OnA6EventsP8shutdownyyKF":{"name":"shutdown()","abstract":"

    Undocumented

    ","parent_name":"OnGleanEvents"},"Protocols/GleanEventListener.html#/s:5Glean0A13EventListenerP02onB8RecordedyySSF":{"name":"onEventRecorded(_:)","abstract":"

    Undocumented

    ","parent_name":"GleanEventListener"},"Protocols/UuidMetricProtocol.html#/s:5Glean18UuidMetricProtocolP14generateAndSetSSyF":{"name":"generateAndSet()","abstract":"

    Undocumented

    ","parent_name":"UuidMetricProtocol"},"Protocols/UuidMetricProtocol.html#/s:5Glean18UuidMetricProtocolP3setyySSF":{"name":"set(_:)","abstract":"

    Undocumented

    ","parent_name":"UuidMetricProtocol"},"Protocols/UuidMetricProtocol.html#/s:5Glean18UuidMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"UuidMetricProtocol"},"Protocols/UuidMetricProtocol.html#/s:5Glean18UuidMetricProtocolP12testGetValueySSSgAEF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"UuidMetricProtocol"},"Protocols/UrlMetricProtocol.html#/s:5Glean17UrlMetricProtocolP3setyySSF":{"name":"set(_:)","abstract":"

    Undocumented

    ","parent_name":"UrlMetricProtocol"},"Protocols/UrlMetricProtocol.html#/s:5Glean17UrlMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"UrlMetricProtocol"},"Protocols/UrlMetricProtocol.html#/s:5Glean17UrlMetricProtocolP12testGetValueySSSgAEF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"UrlMetricProtocol"},"Protocols/TimingDistributionMetricProtocol.html#/s:5Glean32TimingDistributionMetricProtocolP17accumulateSamplesyySays5Int64VGF":{"name":"accumulateSamples(_:)","abstract":"

    Undocumented

    ","parent_name":"TimingDistributionMetricProtocol"},"Protocols/TimingDistributionMetricProtocol.html#/s:5Glean32TimingDistributionMetricProtocolP22accumulateSingleSampleyys5Int64VF":{"name":"accumulateSingleSample(_:)","abstract":"

    Undocumented

    ","parent_name":"TimingDistributionMetricProtocol"},"Protocols/TimingDistributionMetricProtocol.html#/s:5Glean32TimingDistributionMetricProtocolP6cancelyyAA7TimerIdVF":{"name":"cancel(_:)","abstract":"

    Undocumented

    ","parent_name":"TimingDistributionMetricProtocol"},"Protocols/TimingDistributionMetricProtocol.html#/s:5Glean32TimingDistributionMetricProtocolP5startAA7TimerIdVyF":{"name":"start()","abstract":"

    Undocumented

    ","parent_name":"TimingDistributionMetricProtocol"},"Protocols/TimingDistributionMetricProtocol.html#/s:5Glean32TimingDistributionMetricProtocolP17stopAndAccumulateyyAA7TimerIdVF":{"name":"stopAndAccumulate(_:)","abstract":"

    Undocumented

    ","parent_name":"TimingDistributionMetricProtocol"},"Protocols/TimingDistributionMetricProtocol.html#/s:5Glean32TimingDistributionMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"TimingDistributionMetricProtocol"},"Protocols/TimingDistributionMetricProtocol.html#/s:5Glean32TimingDistributionMetricProtocolP12testGetValueyAA0C4DataVSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"TimingDistributionMetricProtocol"},"Protocols/TimespanMetricProtocol.html#/s:5Glean22TimespanMetricProtocolP6cancelyyF":{"name":"cancel()","abstract":"

    Undocumented

    ","parent_name":"TimespanMetricProtocol"},"Protocols/TimespanMetricProtocol.html#/s:5Glean22TimespanMetricProtocolP11setRawNanosyys5Int64VF":{"name":"setRawNanos(_:)","abstract":"

    Undocumented

    ","parent_name":"TimespanMetricProtocol"},"Protocols/TimespanMetricProtocol.html#/s:5Glean22TimespanMetricProtocolP5startyyF":{"name":"start()","abstract":"

    Undocumented

    ","parent_name":"TimespanMetricProtocol"},"Protocols/TimespanMetricProtocol.html#/s:5Glean22TimespanMetricProtocolP4stopyyF":{"name":"stop()","abstract":"

    Undocumented

    ","parent_name":"TimespanMetricProtocol"},"Protocols/TimespanMetricProtocol.html#/s:5Glean22TimespanMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"TimespanMetricProtocol"},"Protocols/TimespanMetricProtocol.html#/s:5Glean22TimespanMetricProtocolP12testGetValueys5Int64VSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"TimespanMetricProtocol"},"Protocols/TextMetricProtocol.html#/s:5Glean18TextMetricProtocolP3setyySSF":{"name":"set(_:)","abstract":"

    Undocumented

    ","parent_name":"TextMetricProtocol"},"Protocols/TextMetricProtocol.html#/s:5Glean18TextMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"TextMetricProtocol"},"Protocols/TextMetricProtocol.html#/s:5Glean18TextMetricProtocolP12testGetValueySSSgAEF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"TextMetricProtocol"},"Protocols/StringMetricProtocol.html#/s:5Glean20StringMetricProtocolP3setyySSF":{"name":"set(_:)","abstract":"

    Undocumented

    ","parent_name":"StringMetricProtocol"},"Protocols/StringMetricProtocol.html#/s:5Glean20StringMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"StringMetricProtocol"},"Protocols/StringMetricProtocol.html#/s:5Glean20StringMetricProtocolP12testGetValueySSSgAEF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"StringMetricProtocol"},"Protocols/StringListMetricProtocol.html#/s:5Glean24StringListMetricProtocolP3addyySSF":{"name":"add(_:)","abstract":"

    Undocumented

    ","parent_name":"StringListMetricProtocol"},"Protocols/StringListMetricProtocol.html#/s:5Glean24StringListMetricProtocolP3setyySaySSGF":{"name":"set(_:)","abstract":"

    Undocumented

    ","parent_name":"StringListMetricProtocol"},"Protocols/StringListMetricProtocol.html#/s:5Glean24StringListMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"StringListMetricProtocol"},"Protocols/StringListMetricProtocol.html#/s:5Glean24StringListMetricProtocolP12testGetValueySaySSGSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"StringListMetricProtocol"},"Protocols/RateMetricProtocol.html#/s:5Glean18RateMetricProtocolP16addToDenominatoryys5Int32VF":{"name":"addToDenominator(_:)","abstract":"

    Undocumented

    ","parent_name":"RateMetricProtocol"},"Protocols/RateMetricProtocol.html#/s:5Glean18RateMetricProtocolP14addToNumeratoryys5Int32VF":{"name":"addToNumerator(_:)","abstract":"

    Undocumented

    ","parent_name":"RateMetricProtocol"},"Protocols/RateMetricProtocol.html#/s:5Glean18RateMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"RateMetricProtocol"},"Protocols/RateMetricProtocol.html#/s:5Glean18RateMetricProtocolP12testGetValueyAA0B0VSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"RateMetricProtocol"},"Protocols/QuantityMetricProtocol.html#/s:5Glean22QuantityMetricProtocolP3setyys5Int64VF":{"name":"set(_:)","abstract":"

    Undocumented

    ","parent_name":"QuantityMetricProtocol"},"Protocols/QuantityMetricProtocol.html#/s:5Glean22QuantityMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"QuantityMetricProtocol"},"Protocols/QuantityMetricProtocol.html#/s:5Glean22QuantityMetricProtocolP12testGetValueys5Int64VSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"QuantityMetricProtocol"},"Protocols/PingTypeProtocol.html#/s:5Glean16PingTypeProtocolP6submityySSSgF":{"name":"submit(_:)","abstract":"

    Undocumented

    ","parent_name":"PingTypeProtocol"},"Protocols/ObjectMetricProtocol.html#/s:5Glean20ObjectMetricProtocolP17recordSchemaErroryyF":{"name":"recordSchemaError()","abstract":"

    Undocumented

    ","parent_name":"ObjectMetricProtocol"},"Protocols/ObjectMetricProtocol.html#/s:5Glean20ObjectMetricProtocolP9setStringyySSF":{"name":"setString(_:)","abstract":"

    Undocumented

    ","parent_name":"ObjectMetricProtocol"},"Protocols/ObjectMetricProtocol.html#/s:5Glean20ObjectMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"ObjectMetricProtocol"},"Protocols/ObjectMetricProtocol.html#/s:5Glean20ObjectMetricProtocolP12testGetValueySSSgAEF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"ObjectMetricProtocol"},"Protocols/NumeratorMetricProtocol.html#/s:5Glean23NumeratorMetricProtocolP05addToB0yys5Int32VF":{"name":"addToNumerator(_:)","abstract":"

    Undocumented

    ","parent_name":"NumeratorMetricProtocol"},"Protocols/NumeratorMetricProtocol.html#/s:5Glean23NumeratorMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"NumeratorMetricProtocol"},"Protocols/NumeratorMetricProtocol.html#/s:5Glean23NumeratorMetricProtocolP12testGetValueyAA4RateVSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"NumeratorMetricProtocol"},"Protocols/MemoryDistributionMetricProtocol.html#/s:5Glean32MemoryDistributionMetricProtocolP10accumulateyys5Int64VF":{"name":"accumulate(_:)","abstract":"

    Undocumented

    ","parent_name":"MemoryDistributionMetricProtocol"},"Protocols/MemoryDistributionMetricProtocol.html#/s:5Glean32MemoryDistributionMetricProtocolP17accumulateSamplesyySays5Int64VGF":{"name":"accumulateSamples(_:)","abstract":"

    Undocumented

    ","parent_name":"MemoryDistributionMetricProtocol"},"Protocols/MemoryDistributionMetricProtocol.html#/s:5Glean32MemoryDistributionMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"MemoryDistributionMetricProtocol"},"Protocols/MemoryDistributionMetricProtocol.html#/s:5Glean32MemoryDistributionMetricProtocolP12testGetValueyAA0C4DataVSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"MemoryDistributionMetricProtocol"},"Protocols/LabeledStringProtocol.html#/s:5Glean21LabeledStringProtocolP3getyAA0C6MetricCSSF":{"name":"get(_:)","abstract":"

    Undocumented

    ","parent_name":"LabeledStringProtocol"},"Protocols/LabeledStringProtocol.html#/s:5Glean21LabeledStringProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"LabeledStringProtocol"},"Protocols/LabeledCounterProtocol.html#/s:5Glean22LabeledCounterProtocolP3getyAA0C6MetricCSSF":{"name":"get(_:)","abstract":"

    Undocumented

    ","parent_name":"LabeledCounterProtocol"},"Protocols/LabeledCounterProtocol.html#/s:5Glean22LabeledCounterProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"LabeledCounterProtocol"},"Protocols/LabeledBooleanProtocol.html#/s:5Glean22LabeledBooleanProtocolP3getyAA0C6MetricCSSF":{"name":"get(_:)","abstract":"

    Undocumented

    ","parent_name":"LabeledBooleanProtocol"},"Protocols/LabeledBooleanProtocol.html#/s:5Glean22LabeledBooleanProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"LabeledBooleanProtocol"},"Protocols/EventMetricProtocol.html#/s:5Glean19EventMetricProtocolP6recordyySDyS2SGF":{"name":"record(_:)","abstract":"

    Undocumented

    ","parent_name":"EventMetricProtocol"},"Protocols/EventMetricProtocol.html#/s:5Glean19EventMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"EventMetricProtocol"},"Protocols/EventMetricProtocol.html#/s:5Glean19EventMetricProtocolP12testGetValueySayAA08RecordedB0VGSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"EventMetricProtocol"},"Protocols/DenominatorMetricProtocol.html#/s:5Glean25DenominatorMetricProtocolP3addyys5Int32VF":{"name":"add(_:)","abstract":"

    Undocumented

    ","parent_name":"DenominatorMetricProtocol"},"Protocols/DenominatorMetricProtocol.html#/s:5Glean25DenominatorMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"DenominatorMetricProtocol"},"Protocols/DenominatorMetricProtocol.html#/s:5Glean25DenominatorMetricProtocolP12testGetValueys5Int32VSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"DenominatorMetricProtocol"},"Protocols/DatetimeMetricProtocol.html#/s:5Glean22DatetimeMetricProtocolP3setyyAA0B0VSgF":{"name":"set(_:)","abstract":"

    Undocumented

    ","parent_name":"DatetimeMetricProtocol"},"Protocols/DatetimeMetricProtocol.html#/s:5Glean22DatetimeMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"DatetimeMetricProtocol"},"Protocols/DatetimeMetricProtocol.html#/s:5Glean22DatetimeMetricProtocolP12testGetValueyAA0B0VSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"DatetimeMetricProtocol"},"Protocols/DatetimeMetricProtocol.html#/s:5Glean22DatetimeMetricProtocolP20testGetValueAsStringySSSgAEF":{"name":"testGetValueAsString(_:)","abstract":"

    Undocumented

    ","parent_name":"DatetimeMetricProtocol"},"Protocols/CustomDistributionMetricProtocol.html#/s:5Glean32CustomDistributionMetricProtocolP17accumulateSamplesyySays5Int64VGF":{"name":"accumulateSamples(_:)","abstract":"

    Undocumented

    ","parent_name":"CustomDistributionMetricProtocol"},"Protocols/CustomDistributionMetricProtocol.html#/s:5Glean32CustomDistributionMetricProtocolP22accumulateSingleSampleyys5Int64VF":{"name":"accumulateSingleSample(_:)","abstract":"

    Undocumented

    ","parent_name":"CustomDistributionMetricProtocol"},"Protocols/CustomDistributionMetricProtocol.html#/s:5Glean32CustomDistributionMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"CustomDistributionMetricProtocol"},"Protocols/CustomDistributionMetricProtocol.html#/s:5Glean32CustomDistributionMetricProtocolP12testGetValueyAA0C4DataVSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"CustomDistributionMetricProtocol"},"Protocols/CounterMetricProtocol.html#/s:5Glean21CounterMetricProtocolP3addyys5Int32VF":{"name":"add(_:)","abstract":"

    Undocumented

    ","parent_name":"CounterMetricProtocol"},"Protocols/CounterMetricProtocol.html#/s:5Glean21CounterMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"CounterMetricProtocol"},"Protocols/CounterMetricProtocol.html#/s:5Glean21CounterMetricProtocolP12testGetValueys5Int32VSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"CounterMetricProtocol"},"Protocols/BooleanMetricProtocol.html#/s:5Glean21BooleanMetricProtocolP3setyySbF":{"name":"set(_:)","abstract":"

    Undocumented

    ","parent_name":"BooleanMetricProtocol"},"Protocols/BooleanMetricProtocol.html#/s:5Glean21BooleanMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"BooleanMetricProtocol"},"Protocols/BooleanMetricProtocol.html#/s:5Glean21BooleanMetricProtocolP12testGetValueySbSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"BooleanMetricProtocol"},"Protocols/BooleanMetricProtocol.html":{"name":"BooleanMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/CounterMetricProtocol.html":{"name":"CounterMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/CustomDistributionMetricProtocol.html":{"name":"CustomDistributionMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/DatetimeMetricProtocol.html":{"name":"DatetimeMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/DenominatorMetricProtocol.html":{"name":"DenominatorMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/EventMetricProtocol.html":{"name":"EventMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/LabeledBooleanProtocol.html":{"name":"LabeledBooleanProtocol","abstract":"

    Undocumented

    "},"Protocols/LabeledCounterProtocol.html":{"name":"LabeledCounterProtocol","abstract":"

    Undocumented

    "},"Protocols/LabeledStringProtocol.html":{"name":"LabeledStringProtocol","abstract":"

    Undocumented

    "},"Protocols/MemoryDistributionMetricProtocol.html":{"name":"MemoryDistributionMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/NumeratorMetricProtocol.html":{"name":"NumeratorMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/ObjectMetricProtocol.html":{"name":"ObjectMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/PingTypeProtocol.html":{"name":"PingTypeProtocol","abstract":"

    Undocumented

    "},"Protocols/QuantityMetricProtocol.html":{"name":"QuantityMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/RateMetricProtocol.html":{"name":"RateMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/StringListMetricProtocol.html":{"name":"StringListMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/StringMetricProtocol.html":{"name":"StringMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/TextMetricProtocol.html":{"name":"TextMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/TimespanMetricProtocol.html":{"name":"TimespanMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/TimingDistributionMetricProtocol.html":{"name":"TimingDistributionMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/UrlMetricProtocol.html":{"name":"UrlMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/UuidMetricProtocol.html":{"name":"UuidMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/GleanEventListener.html":{"name":"GleanEventListener","abstract":"

    Undocumented

    "},"Protocols/OnGleanEvents.html":{"name":"OnGleanEvents","abstract":"

    Undocumented

    "},"Protocols/EventExtras.html":{"name":"EventExtras","abstract":"

    Extra keys for events by name.

    "},"Protocols/ObjectSerialize.html":{"name":"ObjectSerialize","abstract":"

    An object that can be serialized into JSON.

    "},"Protocols/ReasonCodes.html":{"name":"ReasonCodes","abstract":"

    The reasons a ping may be sent."},"Functions.html#/s:5Glean34FfiConverterTypeBooleanMetric_liftyAA0eF0CSvKF":{"name":"FfiConverterTypeBooleanMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean35FfiConverterTypeBooleanMetric_lowerySvAA0eF0CF":{"name":"FfiConverterTypeBooleanMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean34FfiConverterTypeCounterMetric_liftyAA0eF0CSvKF":{"name":"FfiConverterTypeCounterMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean35FfiConverterTypeCounterMetric_lowerySvAA0eF0CF":{"name":"FfiConverterTypeCounterMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean45FfiConverterTypeCustomDistributionMetric_liftyAA0efG0CSvKF":{"name":"FfiConverterTypeCustomDistributionMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean46FfiConverterTypeCustomDistributionMetric_lowerySvAA0efG0CF":{"name":"FfiConverterTypeCustomDistributionMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean35FfiConverterTypeDatetimeMetric_liftyAA0eF0CSvKF":{"name":"FfiConverterTypeDatetimeMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean36FfiConverterTypeDatetimeMetric_lowerySvAA0eF0CF":{"name":"FfiConverterTypeDatetimeMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean38FfiConverterTypeDenominatorMetric_liftyAA0eF0CSvKF":{"name":"FfiConverterTypeDenominatorMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean39FfiConverterTypeDenominatorMetric_lowerySvAA0eF0CF":{"name":"FfiConverterTypeDenominatorMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean32FfiConverterTypeEventMetric_liftyAA0eF0CSvKF":{"name":"FfiConverterTypeEventMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean33FfiConverterTypeEventMetric_lowerySvAA0eF0CF":{"name":"FfiConverterTypeEventMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean35FfiConverterTypeLabeledBoolean_liftyAA0eF0CSvKF":{"name":"FfiConverterTypeLabeledBoolean_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean36FfiConverterTypeLabeledBoolean_lowerySvAA0eF0CF":{"name":"FfiConverterTypeLabeledBoolean_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean35FfiConverterTypeLabeledCounter_liftyAA0eF0CSvKF":{"name":"FfiConverterTypeLabeledCounter_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean36FfiConverterTypeLabeledCounter_lowerySvAA0eF0CF":{"name":"FfiConverterTypeLabeledCounter_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean34FfiConverterTypeLabeledString_liftyAA0eF0CSvKF":{"name":"FfiConverterTypeLabeledString_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean35FfiConverterTypeLabeledString_lowerySvAA0eF0CF":{"name":"FfiConverterTypeLabeledString_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean45FfiConverterTypeMemoryDistributionMetric_liftyAA0efG0CSvKF":{"name":"FfiConverterTypeMemoryDistributionMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean46FfiConverterTypeMemoryDistributionMetric_lowerySvAA0efG0CF":{"name":"FfiConverterTypeMemoryDistributionMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean36FfiConverterTypeNumeratorMetric_liftyAA0eF0CSvKF":{"name":"FfiConverterTypeNumeratorMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean37FfiConverterTypeNumeratorMetric_lowerySvAA0eF0CF":{"name":"FfiConverterTypeNumeratorMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean33FfiConverterTypeObjectMetric_liftyAA0eF0CSvKF":{"name":"FfiConverterTypeObjectMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean34FfiConverterTypeObjectMetric_lowerySvAA0eF0CF":{"name":"FfiConverterTypeObjectMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean020FfiConverterTypePingD5_liftyAA0eD0CSvKF":{"name":"FfiConverterTypePingType_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean020FfiConverterTypePingD6_lowerySvAA0eD0CF":{"name":"FfiConverterTypePingType_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean35FfiConverterTypeQuantityMetric_liftyAA0eF0CSvKF":{"name":"FfiConverterTypeQuantityMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean36FfiConverterTypeQuantityMetric_lowerySvAA0eF0CF":{"name":"FfiConverterTypeQuantityMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean31FfiConverterTypeRateMetric_liftyAA0eF0CSvKF":{"name":"FfiConverterTypeRateMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean32FfiConverterTypeRateMetric_lowerySvAA0eF0CF":{"name":"FfiConverterTypeRateMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean37FfiConverterTypeStringListMetric_liftyAA0efG0CSvKF":{"name":"FfiConverterTypeStringListMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean38FfiConverterTypeStringListMetric_lowerySvAA0efG0CF":{"name":"FfiConverterTypeStringListMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean33FfiConverterTypeStringMetric_liftyAA0eF0CSvKF":{"name":"FfiConverterTypeStringMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean34FfiConverterTypeStringMetric_lowerySvAA0eF0CF":{"name":"FfiConverterTypeStringMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean31FfiConverterTypeTextMetric_liftyAA0eF0CSvKF":{"name":"FfiConverterTypeTextMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean32FfiConverterTypeTextMetric_lowerySvAA0eF0CF":{"name":"FfiConverterTypeTextMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean35FfiConverterTypeTimespanMetric_liftyAA0eF0CSvKF":{"name":"FfiConverterTypeTimespanMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean36FfiConverterTypeTimespanMetric_lowerySvAA0eF0CF":{"name":"FfiConverterTypeTimespanMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean45FfiConverterTypeTimingDistributionMetric_liftyAA0efG0CSvKF":{"name":"FfiConverterTypeTimingDistributionMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean46FfiConverterTypeTimingDistributionMetric_lowerySvAA0efG0CF":{"name":"FfiConverterTypeTimingDistributionMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean30FfiConverterTypeUrlMetric_liftyAA0eF0CSvKF":{"name":"FfiConverterTypeUrlMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean31FfiConverterTypeUrlMetric_lowerySvAA0eF0CF":{"name":"FfiConverterTypeUrlMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean31FfiConverterTypeUuidMetric_liftyAA0eF0CSvKF":{"name":"FfiConverterTypeUuidMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean32FfiConverterTypeUuidMetric_lowerySvAA0eF0CF":{"name":"FfiConverterTypeUuidMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean38FfiConverterTypeClientInfoMetrics_liftyAA0efG0VSo10RustBufferVKF":{"name":"FfiConverterTypeClientInfoMetrics_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean39FfiConverterTypeClientInfoMetrics_lowerySo10RustBufferVAA0efG0VF":{"name":"FfiConverterTypeClientInfoMetrics_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean37FfiConverterTypeCommonMetricData_liftyAA0efG0VSo10RustBufferVKF":{"name":"FfiConverterTypeCommonMetricData_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean38FfiConverterTypeCommonMetricData_lowerySo10RustBufferVAA0efG0VF":{"name":"FfiConverterTypeCommonMetricData_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean29FfiConverterTypeDatetime_liftyAA0E0VSo10RustBufferVKF":{"name":"FfiConverterTypeDatetime_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean30FfiConverterTypeDatetime_lowerySo10RustBufferVAA0E0VF":{"name":"FfiConverterTypeDatetime_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean37FfiConverterTypeDistributionData_liftyAA0eF0VSo10RustBufferVKF":{"name":"FfiConverterTypeDistributionData_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean38FfiConverterTypeDistributionData_lowerySo10RustBufferVAA0eF0VF":{"name":"FfiConverterTypeDistributionData_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean42FfiConverterTypeInternalConfiguration_liftyAA0eF0VSo10RustBufferVKF":{"name":"FfiConverterTypeInternalConfiguration_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean43FfiConverterTypeInternalConfiguration_lowerySo10RustBufferVAA0eF0VF":{"name":"FfiConverterTypeInternalConfiguration_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean34FfiConverterTypePingRateLimit_liftyAA0efG0VSo10RustBufferVKF":{"name":"FfiConverterTypePingRateLimit_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean35FfiConverterTypePingRateLimit_lowerySo10RustBufferVAA0efG0VF":{"name":"FfiConverterTypePingRateLimit_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean32FfiConverterTypePingRequest_liftyAA0eF0VSo10RustBufferVKF":{"name":"FfiConverterTypePingRequest_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean33FfiConverterTypePingRequest_lowerySo10RustBufferVAA0eF0VF":{"name":"FfiConverterTypePingRequest_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean25FfiConverterTypeRate_liftyAA0E0VSo10RustBufferVKF":{"name":"FfiConverterTypeRate_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean26FfiConverterTypeRate_lowerySo10RustBufferVAA0E0VF":{"name":"FfiConverterTypeRate_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean34FfiConverterTypeRecordedEvent_liftyAA0eF0VSo10RustBufferVKF":{"name":"FfiConverterTypeRecordedEvent_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean35FfiConverterTypeRecordedEvent_lowerySo10RustBufferVAA0eF0VF":{"name":"FfiConverterTypeRecordedEvent_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean39FfiConverterTypeRecordedExperiment_liftyAA0eF0VSo10RustBufferVKF":{"name":"FfiConverterTypeRecordedExperiment_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean40FfiConverterTypeRecordedExperiment_lowerySo10RustBufferVAA0eF0VF":{"name":"FfiConverterTypeRecordedExperiment_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean28FfiConverterTypeTimerId_liftyAA0eF0VSo10RustBufferVKF":{"name":"FfiConverterTypeTimerId_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean29FfiConverterTypeTimerId_lowerySo10RustBufferVAA0eF0VF":{"name":"FfiConverterTypeTimerId_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean021FfiConverterTypeErrorD5_liftyAA0eD0OSo10RustBufferVKF":{"name":"FfiConverterTypeErrorType_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean021FfiConverterTypeErrorD6_lowerySo10RustBufferVAA0eD0OF":{"name":"FfiConverterTypeErrorType_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean025FfiConverterTypeHistogramD5_liftyAA0eD0OSo10RustBufferVKF":{"name":"FfiConverterTypeHistogramType_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean025FfiConverterTypeHistogramD6_lowerySo10RustBufferVAA0eD0OF":{"name":"FfiConverterTypeHistogramType_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean38FfiConverterTypeLabeledMetricData_liftyAA0efG0OSo10RustBufferVKF":{"name":"FfiConverterTypeLabeledMetricData_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean39FfiConverterTypeLabeledMetricData_lowerySo10RustBufferVAA0efG0OF":{"name":"FfiConverterTypeLabeledMetricData_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean32FfiConverterTypeLevelFilter_liftyAA0eF0OSo10RustBufferVKF":{"name":"FfiConverterTypeLevelFilter_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean33FfiConverterTypeLevelFilter_lowerySo10RustBufferVAA0eF0OF":{"name":"FfiConverterTypeLevelFilter_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean29FfiConverterTypeLifetime_liftyAA0E0OSo10RustBufferVKF":{"name":"FfiConverterTypeLifetime_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean30FfiConverterTypeLifetime_lowerySo10RustBufferVAA0E0OF":{"name":"FfiConverterTypeLifetime_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean31FfiConverterTypeMemoryUnit_liftyAA0eF0OSo10RustBufferVKF":{"name":"FfiConverterTypeMemoryUnit_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean32FfiConverterTypeMemoryUnit_lowerySo10RustBufferVAA0eF0OF":{"name":"FfiConverterTypeMemoryUnit_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean35FfiConverterTypePingUploadTask_liftyAA0efG0OSo10RustBufferVKF":{"name":"FfiConverterTypePingUploadTask_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean36FfiConverterTypePingUploadTask_lowerySo10RustBufferVAA0efG0OF":{"name":"FfiConverterTypePingUploadTask_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean29FfiConverterTypeTimeUnit_liftyAA0eF0OSo10RustBufferVKF":{"name":"FfiConverterTypeTimeUnit_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean30FfiConverterTypeTimeUnit_lowerySo10RustBufferVAA0eF0OF":{"name":"FfiConverterTypeTimeUnit_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean33FfiConverterTypeUploadResult_liftyAA0eF0OSo10RustBufferVKF":{"name":"FfiConverterTypeUploadResult_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean34FfiConverterTypeUploadResult_lowerySo10RustBufferVAA0eF0OF":{"name":"FfiConverterTypeUploadResult_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean37FfiConverterTypeUploadTaskAction_liftyAA0efG0OSo10RustBufferVKF":{"name":"FfiConverterTypeUploadTaskAction_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean38FfiConverterTypeUploadTaskAction_lowerySo10RustBufferVAA0efG0OF":{"name":"FfiConverterTypeUploadTaskAction_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean30FfiConverterTypeCowString_liftySSSo10RustBufferVKF":{"name":"FfiConverterTypeCowString_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean31FfiConverterTypeCowString_lowerySo10RustBufferVSSF":{"name":"FfiConverterTypeCowString_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean30FfiConverterTypeJsonValue_liftySSSo10RustBufferVKF":{"name":"FfiConverterTypeJsonValue_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean31FfiConverterTypeJsonValue_lowerySo10RustBufferVSSF":{"name":"FfiConverterTypeJsonValue_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean27gleanApplyServerKnobsConfigyySSF":{"name":"gleanApplyServerKnobsConfig(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean18gleanEnableLoggingyyF":{"name":"gleanEnableLogging()","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean22gleanEnableLoggingToFdyys6UInt64VF":{"name":"gleanEnableLoggingToFd(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean18gleanGetUploadTaskAA04PingdE0OyF":{"name":"gleanGetUploadTask()","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean23gleanHandleClientActiveyyF":{"name":"gleanHandleClientActive()","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean25gleanHandleClientInactiveyyF":{"name":"gleanHandleClientInactive()","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean15gleanInitializeyyAA21InternalConfigurationV_AA17ClientInfoMetricsVAA02OnA6Events_ptF":{"name":"gleanInitialize(_:_:_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean28gleanInitializeForSubprocessySbAA21InternalConfigurationVF":{"name":"gleanInitializeForSubprocess(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean28gleanPersistPingLifetimeDatayyF":{"name":"gleanPersistPingLifetimeData()","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean30gleanProcessPingUploadResponseyAA0E10TaskActionOSS_AA0E6ResultOtF":{"name":"gleanProcessPingUploadResponse(_:_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean26gleanRegisterEventListeneryySS_AA0adE0_ptF":{"name":"gleanRegisterEventListener(_:_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean20gleanSetDebugViewTagySbSSF":{"name":"gleanSetDebugViewTag(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean17gleanSetDirtyFlagyySbF":{"name":"gleanSetDirtyFlag(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean24gleanSetExperimentActiveyySS_SSSDyS2SGtF":{"name":"gleanSetExperimentActive(_:_:_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean26gleanSetExperimentInactiveyySSF":{"name":"gleanSetExperimentInactive(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean25gleanSetExperimentationIdyySSF":{"name":"gleanSetExperimentationId(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean16gleanSetLogPingsyySbF":{"name":"gleanSetLogPings(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean18gleanSetSourceTagsySbSaySSGF":{"name":"gleanSetSourceTags(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean16gleanSetTestModeyySbF":{"name":"gleanSetTestMode(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean21gleanSetUploadEnabledyySbF":{"name":"gleanSetUploadEnabled(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean13gleanShutdownyyF":{"name":"gleanShutdown()","abstract":"

    Shuts down Glean in an orderly fashion.

    "},"Functions.html#/s:5Glean21gleanSubmitPingByNameyySS_SSSgtF":{"name":"gleanSubmitPingByName(_:_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean25gleanSubmitPingByNameSyncySbSS_SSSgtF":{"name":"gleanSubmitPingByNameSync(_:_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean016gleanTestDestroyA0yySb_SSSgtF":{"name":"gleanTestDestroyGlean(_:_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean26gleanTestGetExperimentDatayAA08RecordedE0VSgSSF":{"name":"gleanTestGetExperimentData(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean29gleanTestGetExperimentationIdSSSgyF":{"name":"gleanTestGetExperimentationId()","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean28gleanUnregisterEventListeneryySSF":{"name":"gleanUnregisterEventListener(_:)","abstract":"

    Undocumented

    "},"Extensions/String.html#/s:SS5GleanE16errorDescriptionSSSgvp":{"name":"errorDescription","abstract":"

    The string itself is the error description.

    ","parent_name":"String"},"Extensions/TimingDistributionMetricType.html#/s:5Glean24TimingDistributionMetricC7measure13funcToMeasurexxyXE_tlF":{"name":"measure(funcToMeasure:)","abstract":"

    Convenience method to simplify measuring a function or block of code

    ","parent_name":"TimingDistributionMetricType"},"Extensions/TimingDistributionMetricType.html#/s:5Glean24TimingDistributionMetricC7measure13funcToMeasurexxyKXE_tKlF":{"name":"measure(funcToMeasure:)","abstract":"

    Convenience method to simplify measuring a function or block of code

    ","parent_name":"TimingDistributionMetricType"},"Extensions/TimespanMetricType.html#/s:5Glean14TimespanMetricC7measure13funcToMeasurexxyXE_tlF":{"name":"measure(funcToMeasure:)","abstract":"

    Convenience method to simplify measuring a function or block of code

    ","parent_name":"TimespanMetricType"},"Extensions/TimespanMetricType.html#/s:5Glean14TimespanMetricC7measure13funcToMeasurexxyKXE_tKlF":{"name":"measure(funcToMeasure:)","abstract":"

    Convenience method to simplify measuring a function or block of code

    ","parent_name":"TimespanMetricType"},"Extensions/Array.html#/s:Sa5GleanSeRzSERzlE20intoSerializedObjectSSyF":{"name":"intoSerializedObject()","abstract":"

    Undocumented

    ","parent_name":"Array"},"Extensions/Array.html":{"name":"Array"},"Extensions/TimespanMetricType.html":{"name":"TimespanMetricType"},"Extensions/TimingDistributionMetricType.html":{"name":"TimingDistributionMetricType"},"Extensions/String.html":{"name":"String","abstract":"

    Turn a string into an error, so that it can be thrown as an exception.

    "},"Enums/NoReasonCodes.html#/s:5Glean11ReasonCodesP5indexSiyF":{"name":"index()","parent_name":"NoReasonCodes"},"Enums/UploadTaskAction.html#/s:5Glean16UploadTaskActionO4nextyA2CmF":{"name":"next","abstract":"

    Undocumented

    ","parent_name":"UploadTaskAction"},"Enums/UploadTaskAction.html#/s:5Glean16UploadTaskActionO3endyA2CmF":{"name":"end","abstract":"

    Undocumented

    ","parent_name":"UploadTaskAction"},"Enums/UploadResult.html#/s:5Glean12UploadResultO18recoverableFailureyACs4Int8V_tcACmF":{"name":"recoverableFailure(unused:)","abstract":"

    Undocumented

    ","parent_name":"UploadResult"},"Enums/UploadResult.html#/s:5Glean12UploadResultO20unrecoverableFailureyACs4Int8V_tcACmF":{"name":"unrecoverableFailure(unused:)","abstract":"

    Undocumented

    ","parent_name":"UploadResult"},"Enums/UploadResult.html#/s:5Glean12UploadResultO10httpStatusyACs5Int32V_tcACmF":{"name":"httpStatus(code:)","abstract":"

    Undocumented

    ","parent_name":"UploadResult"},"Enums/UploadResult.html#/s:5Glean12UploadResultO4doneyACs4Int8V_tcACmF":{"name":"done(unused:)","abstract":"

    Undocumented

    ","parent_name":"UploadResult"},"Enums/TimeUnit.html#/s:5Glean8TimeUnitO10nanosecondyA2CmF":{"name":"nanosecond","abstract":"

    Undocumented

    ","parent_name":"TimeUnit"},"Enums/TimeUnit.html#/s:5Glean8TimeUnitO11microsecondyA2CmF":{"name":"microsecond","abstract":"

    Undocumented

    ","parent_name":"TimeUnit"},"Enums/TimeUnit.html#/s:5Glean8TimeUnitO11millisecondyA2CmF":{"name":"millisecond","abstract":"

    Undocumented

    ","parent_name":"TimeUnit"},"Enums/TimeUnit.html#/s:5Glean8TimeUnitO6secondyA2CmF":{"name":"second","abstract":"

    Undocumented

    ","parent_name":"TimeUnit"},"Enums/TimeUnit.html#/s:5Glean8TimeUnitO6minuteyA2CmF":{"name":"minute","abstract":"

    Undocumented

    ","parent_name":"TimeUnit"},"Enums/TimeUnit.html#/s:5Glean8TimeUnitO4houryA2CmF":{"name":"hour","abstract":"

    Undocumented

    ","parent_name":"TimeUnit"},"Enums/TimeUnit.html#/s:5Glean8TimeUnitO3dayyA2CmF":{"name":"day","abstract":"

    Undocumented

    ","parent_name":"TimeUnit"},"Enums/PingUploadTask.html#/s:5Glean14PingUploadTaskO6uploadyAcA0B7RequestV_tcACmF":{"name":"upload(request:)","abstract":"

    Undocumented

    ","parent_name":"PingUploadTask"},"Enums/PingUploadTask.html#/s:5Glean14PingUploadTaskO4waityACs6UInt64V_tcACmF":{"name":"wait(time:)","abstract":"

    Undocumented

    ","parent_name":"PingUploadTask"},"Enums/PingUploadTask.html#/s:5Glean14PingUploadTaskO4doneyACs4Int8V_tcACmF":{"name":"done(unused:)","abstract":"

    Undocumented

    ","parent_name":"PingUploadTask"},"Enums/MemoryUnit.html#/s:5Glean10MemoryUnitO4byteyA2CmF":{"name":"byte","abstract":"

    Undocumented

    ","parent_name":"MemoryUnit"},"Enums/MemoryUnit.html#/s:5Glean10MemoryUnitO8kilobyteyA2CmF":{"name":"kilobyte","abstract":"

    Undocumented

    ","parent_name":"MemoryUnit"},"Enums/MemoryUnit.html#/s:5Glean10MemoryUnitO8megabyteyA2CmF":{"name":"megabyte","abstract":"

    Undocumented

    ","parent_name":"MemoryUnit"},"Enums/MemoryUnit.html#/s:5Glean10MemoryUnitO8gigabyteyA2CmF":{"name":"gigabyte","abstract":"

    Undocumented

    ","parent_name":"MemoryUnit"},"Enums/Lifetime.html#/s:5Glean8LifetimeO4pingyA2CmF":{"name":"ping","abstract":"

    Undocumented

    ","parent_name":"Lifetime"},"Enums/Lifetime.html#/s:5Glean8LifetimeO11applicationyA2CmF":{"name":"application","abstract":"

    Undocumented

    ","parent_name":"Lifetime"},"Enums/Lifetime.html#/s:5Glean8LifetimeO4useryA2CmF":{"name":"user","abstract":"

    Undocumented

    ","parent_name":"Lifetime"},"Enums/LevelFilter.html#/s:5Glean11LevelFilterO3offyA2CmF":{"name":"off","abstract":"

    Undocumented

    ","parent_name":"LevelFilter"},"Enums/LevelFilter.html#/s:5Glean11LevelFilterO5erroryA2CmF":{"name":"error","abstract":"

    Undocumented

    ","parent_name":"LevelFilter"},"Enums/LevelFilter.html#/s:5Glean11LevelFilterO4warnyA2CmF":{"name":"warn","abstract":"

    Undocumented

    ","parent_name":"LevelFilter"},"Enums/LevelFilter.html#/s:5Glean11LevelFilterO4infoyA2CmF":{"name":"info","abstract":"

    Undocumented

    ","parent_name":"LevelFilter"},"Enums/LevelFilter.html#/s:5Glean11LevelFilterO5debugyA2CmF":{"name":"debug","abstract":"

    Undocumented

    ","parent_name":"LevelFilter"},"Enums/LevelFilter.html#/s:5Glean11LevelFilterO5traceyA2CmF":{"name":"trace","abstract":"

    Undocumented

    ","parent_name":"LevelFilter"},"Enums/LabeledMetricData.html#/s:5Glean17LabeledMetricDataO6commonyAcA06CommoncD0V_tcACmF":{"name":"common(cmd:)","abstract":"

    Undocumented

    ","parent_name":"LabeledMetricData"},"Enums/LabeledMetricData.html#/s:5Glean17LabeledMetricDataO18customDistributionyAcA06CommoncD0V_s5Int64VA2hA13HistogramTypeOtcACmF":{"name":"customDistribution(cmd:rangeMin:rangeMax:bucketCount:histogramType:)","abstract":"

    Undocumented

    ","parent_name":"LabeledMetricData"},"Enums/LabeledMetricData.html#/s:5Glean17LabeledMetricDataO18memoryDistributionyAcA06CommoncD0V_AA10MemoryUnitOtcACmF":{"name":"memoryDistribution(cmd:unit:)","abstract":"

    Undocumented

    ","parent_name":"LabeledMetricData"},"Enums/LabeledMetricData.html#/s:5Glean17LabeledMetricDataO18timingDistributionyAcA06CommoncD0V_AA8TimeUnitOtcACmF":{"name":"timingDistribution(cmd:unit:)","abstract":"

    Undocumented

    ","parent_name":"LabeledMetricData"},"Enums/HistogramType.html#/s:5Glean13HistogramTypeO6linearyA2CmF":{"name":"linear","abstract":"

    Undocumented

    ","parent_name":"HistogramType"},"Enums/HistogramType.html#/s:5Glean13HistogramTypeO11exponentialyA2CmF":{"name":"exponential","abstract":"

    Undocumented

    ","parent_name":"HistogramType"},"Enums/ErrorType.html#/s:5Glean9ErrorTypeO12invalidValueyA2CmF":{"name":"invalidValue","abstract":"

    Undocumented

    ","parent_name":"ErrorType"},"Enums/ErrorType.html#/s:5Glean9ErrorTypeO12invalidLabelyA2CmF":{"name":"invalidLabel","abstract":"

    Undocumented

    ","parent_name":"ErrorType"},"Enums/ErrorType.html#/s:5Glean9ErrorTypeO12invalidStateyA2CmF":{"name":"invalidState","abstract":"

    Undocumented

    ","parent_name":"ErrorType"},"Enums/ErrorType.html#/s:5Glean9ErrorTypeO15invalidOverflowyA2CmF":{"name":"invalidOverflow","abstract":"

    Undocumented

    ","parent_name":"ErrorType"},"Enums/CallbackError.html#/s:5Glean13CallbackErrorO010UnexpectedC0yACSS_tcACmF":{"name":"UnexpectedError(message:)","abstract":"

    Undocumented

    ","parent_name":"CallbackError"},"Enums/CallbackError.html":{"name":"CallbackError","abstract":"

    Undocumented

    "},"Enums/ErrorType.html":{"name":"ErrorType","abstract":"

    Undocumented

    "},"Enums/HistogramType.html":{"name":"HistogramType","abstract":"

    Undocumented

    "},"Enums/LabeledMetricData.html":{"name":"LabeledMetricData","abstract":"

    Undocumented

    "},"Enums/LevelFilter.html":{"name":"LevelFilter","abstract":"

    Undocumented

    "},"Enums/Lifetime.html":{"name":"Lifetime","abstract":"

    Undocumented

    "},"Enums/MemoryUnit.html":{"name":"MemoryUnit","abstract":"

    Undocumented

    "},"Enums/PingUploadTask.html":{"name":"PingUploadTask","abstract":"

    Undocumented

    "},"Enums/TimeUnit.html":{"name":"TimeUnit","abstract":"

    Undocumented

    "},"Enums/UploadResult.html":{"name":"UploadResult","abstract":"

    Undocumented

    "},"Enums/UploadTaskAction.html":{"name":"UploadTaskAction","abstract":"

    Undocumented

    "},"Enums.html#/s:5Glean0A7MetricsO":{"name":"GleanMetrics","abstract":"

    Namespace for user metrics

    "},"Enums/NoReasonCodes.html":{"name":"NoReasonCodes","abstract":"

    Default of no reason codes for pings.

    "},"Classes/HttpPingUploader.html#/s:5Glean16HttpPingUploaderC13configuration7sessionAcA13ConfigurationV_So12NSURLSessionCtcfc":{"name":"init(configuration:session:)","abstract":"

    Initialize the HTTP Ping uploader from a Glean configuration object","parent_name":"HttpPingUploader"},"Classes/UuidMetricType.html#/s:5Glean14UuidMetricTypeCyAcA06CommonC4DataVcfc":{"name":"init(_:)","abstract":"

    The public constructor used by automatically generated metrics.

    ","parent_name":"UuidMetricType"},"Classes/UuidMetricType.html#/s:5Glean14UuidMetricTypeC14generateAndSet10Foundation4UUIDVyF":{"name":"generateAndSet()","abstract":"

    Generate a new UUID and set it in the metric store.

    ","parent_name":"UuidMetricType"},"Classes/UuidMetricType.html#/s:5Glean14UuidMetricTypeC3setyy10Foundation4UUIDVF":{"name":"set(_:)","abstract":"

    Explicitly set an existing UUID value.

    ","parent_name":"UuidMetricType"},"Classes/UuidMetricType.html#/s:5Glean14UuidMetricTypeC12testGetValuey10Foundation4UUIDVSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Returns the stored value for testing purposes only. This function will attempt to await the","parent_name":"UuidMetricType"},"Classes/UrlMetricType.html#/s:5Glean13UrlMetricTypeCyAcA06CommonC4DataVcfc":{"name":"init(_:)","abstract":"

    The public constructor used by automatically generated metrics.

    ","parent_name":"UrlMetricType"},"Classes/UrlMetricType.html#/s:5Glean13UrlMetricTypeC3set3urly10Foundation3URLV_tF":{"name":"set(url:)","abstract":"

    Set a URL value.

    ","parent_name":"UrlMetricType"},"Classes/UrlMetricType.html#/s:5Glean13UrlMetricTypeC3setyySSF":{"name":"set(_:)","abstract":"

    Set a URL value.

    ","parent_name":"UrlMetricType"},"Classes/UrlMetricType.html#/s:5Glean13UrlMetricTypeC12testGetValueySSSgAEF":{"name":"testGetValue(_:)","abstract":"

    Returns the stored value for testing purposes only. This function will attempt to await the","parent_name":"UrlMetricType"},"Classes/UrlMetricType.html#/s:5Glean13UrlMetricTypeC24testGetNumRecordedErrorsys5Int32VAA05ErrorD0OF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Returns the number of errors recorded for the given metric.

    ","parent_name":"UrlMetricType"},"Classes/Ping.html#/s:5Glean4PingC4name15includeClientId11sendIfEmpty17preciseTimestamps0D12InfoSections7enabled14schedulesPings11reasonCodesACyxGSS_S5bSaySSGAMtcfc":{"name":"init(name:includeClientId:sendIfEmpty:preciseTimestamps:includeInfoSections:enabled:schedulesPings:reasonCodes:)","abstract":"

    The public constructor used by automatically generated metrics.

    ","parent_name":"Ping"},"Classes/Ping.html#/s:5Glean4PingC20testBeforeNextSubmit2cbyyxSgKc_tF":{"name":"testBeforeNextSubmit(cb:)","abstract":"

    Test-only API

    ","parent_name":"Ping"},"Classes/Ping.html#/s:5Glean4PingC6submit6reasonyxSg_tF":{"name":"submit(reason:)","abstract":"

    Collect and submit the ping for eventual uploading.

    ","parent_name":"Ping"},"Classes/ObjectMetricType.html#/s:5Glean16ObjectMetricTypeCyACyxGAA06CommonC4DataVcfc":{"name":"init(_:)","abstract":"

    The public constructor used by automatically generated metrics.

    ","parent_name":"ObjectMetricType"},"Classes/ObjectMetricType.html#/s:5Glean16ObjectMetricTypeC3setyyxF":{"name":"set(_:)","abstract":"

    Sets to the associated structure.

    ","parent_name":"ObjectMetricType"},"Classes/ObjectMetricType.html#/s:5Glean16ObjectMetricTypeC12testGetValueyxSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Returns the stored value for testing purposes only. This function will attempt to await the","parent_name":"ObjectMetricType"},"Classes/ObjectMetricType.html#/s:5Glean16ObjectMetricTypeC24testGetNumRecordedErrorsys5Int32VAA05ErrorD0OF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Returns the number of errors recorded for the given metric.

    ","parent_name":"ObjectMetricType"},"Classes/LabeledMetricType.html#/s:5Glean17LabeledMetricTypeC8category4name11sendInPings8lifetime8disabled03subC06labelsACyxGSS_SSSaySSGAA8LifetimeOSbxALSgtKcfc":{"name":"init(category:name:sendInPings:lifetime:disabled:subMetric:labels:)","abstract":"

    The public constructor used by automatically generated metrics.

    ","parent_name":"LabeledMetricType"},"Classes/LabeledMetricType.html#/s:5Glean17LabeledMetricTypeCyxSScip":{"name":"subscript(_:)","abstract":"

    Get the specific metric for a given label.

    ","parent_name":"LabeledMetricType"},"Classes/LabeledMetricType.html#/s:5Glean17LabeledMetricTypeC24testGetNumRecordedErrorsys5Int32VAA05ErrorD0OF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Returns the number of errors recorded for the given metric.

    ","parent_name":"LabeledMetricType"},"Classes/EventMetricType.html#/s:5Glean15EventMetricTypeCyACyxGAA06CommonC4DataV_SaySSGSgtcfc":{"name":"init(_:_:)","abstract":"

    The public constructor used by automatically generated metrics.

    ","parent_name":"EventMetricType"},"Classes/EventMetricType.html#/s:5Glean15EventMetricTypeC6recordyyxSgF":{"name":"record(_:)","abstract":"

    Undocumented

    ","parent_name":"EventMetricType"},"Classes/EventMetricType.html#/s:5Glean15EventMetricTypeC12testGetValueySayAA08RecordedB0VGSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Returns the stored value for testing purposes only. This function will attempt to await the","parent_name":"EventMetricType"},"Classes/EventMetricType.html#/s:5Glean15EventMetricTypeC24testGetNumRecordedErrorsys5Int32VAA05ErrorD0OF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Returns the number of errors recorded for the given metric.

    ","parent_name":"EventMetricType"},"Classes/NoExtras.html#/s:5Glean11EventExtrasP13toExtraRecordSDyS2SGyF":{"name":"toExtraRecord()","parent_name":"NoExtras"},"Classes/DatetimeMetricType.html#/s:5Glean18DatetimeMetricTypeCyAcA06CommonC4DataV_AA8TimeUnitOtcfc":{"name":"init(_:_:)","abstract":"

    The public constructor used by automatically generated metrics.

    ","parent_name":"DatetimeMetricType"},"Classes/DatetimeMetricType.html#/s:5Glean18DatetimeMetricTypeC3setyy10Foundation4DateVF":{"name":"set(_:)","abstract":"

    Set a datetime value, truncating it to the metric’s resolution.

    ","parent_name":"DatetimeMetricType"},"Classes/DatetimeMetricType.html#/s:5Glean18DatetimeMetricTypeC20testGetValueAsStringySSSgAEF":{"name":"testGetValueAsString(_:)","abstract":"

    Returns the string representation of the stored value for testing purposes only. This function","parent_name":"DatetimeMetricType"},"Classes/DatetimeMetricType.html#/s:5Glean18DatetimeMetricTypeC12testGetValuey10Foundation4DateVSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Returns the stored value for testing purposes only. This function will attempt to await the","parent_name":"DatetimeMetricType"},"Classes/DatetimeMetricType.html#/s:5Glean18DatetimeMetricTypeC24testGetNumRecordedErrorsys5Int32VAA05ErrorD0OF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Returns the number of errors recorded for the given metric.

    ","parent_name":"DatetimeMetricType"},"Classes/Glean.html#/s:5GleanAAC6sharedABvpZ":{"name":"shared","abstract":"

    The main Glean object.

    ","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC10initialize13uploadEnabled13configuration9buildInfoySb_AA13ConfigurationVAA05BuildG0VtF":{"name":"initialize(uploadEnabled:configuration:buildInfo:)","abstract":"

    Initialize the Glean SDK.

    ","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC16setUploadEnabledyySbF":{"name":"setUploadEnabled(_:)","abstract":"

    Enable or disable Glean collection and upload.

    ","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC19setExperimentActive_6branch5extraySS_SSSDyS2SGSgtF":{"name":"setExperimentActive(_:branch:extra:)","abstract":"

    Used to indicate that an experiment is running.

    ","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC21setExperimentInactiveyySSF":{"name":"setExperimentInactive(_:)","abstract":"

    Used to indicate that an experiment is no longer running.

    ","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC22testIsExperimentActiveySbSSF":{"name":"testIsExperimentActive(_:)","abstract":"

    Tests whether an experiment is active, for testing purposes only.

    ","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC21testGetExperimentDatayAA08RecordedD0VSgSSF":{"name":"testGetExperimentData(_:)","abstract":"

    PUBLIC TEST ONLY FUNCTION.

    ","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC20setExperimentationIdyySSF":{"name":"setExperimentationId(_:)","abstract":"

    Dynamically set the experimentation identifier, as opposed to setting it through the configuration","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC24testGetExperimentationIdSSSgyF":{"name":"testGetExperimentationId()","abstract":"

    PUBLIC TEST ONLY FUNCTION.

    ","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC13registerPingsyyypF":{"name":"registerPings(_:)","abstract":"

    Register the pings generated from pings.yaml with the Glean SDK.

    ","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC15setDebugViewTagySbSSF":{"name":"setDebugViewTag(_:)","abstract":"

    Set a tag to be applied to headers when uploading pings for debug view.","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC11setLogPingsyySbF":{"name":"setLogPings(_:)","abstract":"

    Set the log_pings debug option,","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC13setSourceTagsySbSaySSGF":{"name":"setSourceTags(_:)","abstract":"

    Set the source tags to be applied as headers when uploading pings.

    ","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC21registerEventListener3tag8listenerySS_AA0acD0_ptF":{"name":"registerEventListener(tag:listener:)","abstract":"

    EXPERIMENTAL: Register a listener to receive notification of event recordings

    ","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC23unregisterEventListener3tagySS_tF":{"name":"unregisterEventListener(tag:)","abstract":"

    EXPERIMENTAL: Unregister a listener to receive notification of event recordings

    ","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC22applyServerKnobsConfigyySSF":{"name":"applyServerKnobsConfig(_:)","abstract":"

    Set configuration to override metrics’ default enabled/disabled state, typically from","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC8shutdownyyF":{"name":"shutdown()","abstract":"

    Shuts down Glean in an orderly fashion

    ","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC15handleCustomUrl3urly10Foundation3URLV_tF":{"name":"handleCustomUrl(url:)","abstract":"

    When applications are launched using the custom URL scheme, this helper function will process","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC17enableTestingModeyyF":{"name":"enableTestingMode()","abstract":"

    PUBLIC TEST ONLY FUNCTION.

    ","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC05resetA013configuration11clearStores13uploadEnabledyAA13ConfigurationV_S2btF":{"name":"resetGlean(configuration:clearStores:uploadEnabled:)","abstract":"

    PUBLIC TEST ONLY FUNCTION.

    ","parent_name":"Glean"},"Classes/UuidMetric/NoPointer.html#/s:5Glean10UuidMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/UuidMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"UuidMetric"},"Classes/UuidMetric.html#/s:5Glean10UuidMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"UuidMetric"},"Classes/UuidMetric.html#/s:5Glean10UuidMetricC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"UuidMetric"},"Classes/UuidMetric.html#/s:5Glean10UuidMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"UuidMetric"},"Classes/UuidMetric.html#/s:5Glean10UuidMetricCyAcA06CommonC4DataVcfc":{"name":"init(_:)","abstract":"

    Undocumented

    ","parent_name":"UuidMetric"},"Classes/UuidMetric.html#/s:5Glean10UuidMetricC14generateAndSetSSyF":{"name":"generateAndSet()","abstract":"

    Undocumented

    ","parent_name":"UuidMetric"},"Classes/UuidMetric.html#/s:5Glean10UuidMetricC3setyySSF":{"name":"set(_:)","abstract":"

    Undocumented

    ","parent_name":"UuidMetric"},"Classes/UuidMetric.html#/s:5Glean10UuidMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"UuidMetric"},"Classes/UuidMetric.html#/s:5Glean10UuidMetricC12testGetValueySSSgAEF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"UuidMetric"},"Classes/UrlMetric/NoPointer.html#/s:5Glean9UrlMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/UrlMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"UrlMetric"},"Classes/UrlMetric.html#/s:5Glean9UrlMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"UrlMetric"},"Classes/UrlMetric.html#/s:5Glean9UrlMetricC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"UrlMetric"},"Classes/UrlMetric.html#/s:5Glean9UrlMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"UrlMetric"},"Classes/UrlMetric.html#/s:5Glean9UrlMetricCyAcA06CommonC4DataVcfc":{"name":"init(_:)","abstract":"

    Undocumented

    ","parent_name":"UrlMetric"},"Classes/UrlMetric.html#/s:5Glean9UrlMetricC3setyySSF":{"name":"set(_:)","abstract":"

    Undocumented

    ","parent_name":"UrlMetric"},"Classes/UrlMetric.html#/s:5Glean9UrlMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"UrlMetric"},"Classes/UrlMetric.html#/s:5Glean9UrlMetricC12testGetValueySSSgAEF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"UrlMetric"},"Classes/TimingDistributionMetric/NoPointer.html#/s:5Glean24TimingDistributionMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/TimingDistributionMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"TimingDistributionMetric"},"Classes/TimingDistributionMetric.html#/s:5Glean24TimingDistributionMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"TimingDistributionMetric"},"Classes/TimingDistributionMetric.html#/s:5Glean24TimingDistributionMetricC9noPointerA2C02NoF0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"TimingDistributionMetric"},"Classes/TimingDistributionMetric.html#/s:5Glean24TimingDistributionMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"TimingDistributionMetric"},"Classes/TimingDistributionMetric.html#/s:5Glean24TimingDistributionMetricCyAcA06CommonD4DataV_AA8TimeUnitOtcfc":{"name":"init(_:_:)","abstract":"

    Undocumented

    ","parent_name":"TimingDistributionMetric"},"Classes/TimingDistributionMetric.html#/s:5Glean24TimingDistributionMetricC17accumulateSamplesyySays5Int64VGF":{"name":"accumulateSamples(_:)","abstract":"

    Undocumented

    ","parent_name":"TimingDistributionMetric"},"Classes/TimingDistributionMetric.html#/s:5Glean24TimingDistributionMetricC22accumulateSingleSampleyys5Int64VF":{"name":"accumulateSingleSample(_:)","abstract":"

    Undocumented

    ","parent_name":"TimingDistributionMetric"},"Classes/TimingDistributionMetric.html#/s:5Glean24TimingDistributionMetricC6cancelyyAA7TimerIdVF":{"name":"cancel(_:)","abstract":"

    Undocumented

    ","parent_name":"TimingDistributionMetric"},"Classes/TimingDistributionMetric.html#/s:5Glean24TimingDistributionMetricC5startAA7TimerIdVyF":{"name":"start()","abstract":"

    Undocumented

    ","parent_name":"TimingDistributionMetric"},"Classes/TimingDistributionMetric.html#/s:5Glean24TimingDistributionMetricC17stopAndAccumulateyyAA7TimerIdVF":{"name":"stopAndAccumulate(_:)","abstract":"

    Undocumented

    ","parent_name":"TimingDistributionMetric"},"Classes/TimingDistributionMetric.html#/s:5Glean24TimingDistributionMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"TimingDistributionMetric"},"Classes/TimingDistributionMetric.html#/s:5Glean24TimingDistributionMetricC12testGetValueyAA0C4DataVSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"TimingDistributionMetric"},"Classes/TimespanMetric/NoPointer.html#/s:5Glean14TimespanMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/TimespanMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"TimespanMetric"},"Classes/TimespanMetric.html#/s:5Glean14TimespanMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"TimespanMetric"},"Classes/TimespanMetric.html#/s:5Glean14TimespanMetricC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"TimespanMetric"},"Classes/TimespanMetric.html#/s:5Glean14TimespanMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"TimespanMetric"},"Classes/TimespanMetric.html#/s:5Glean14TimespanMetricCyAcA06CommonC4DataV_AA8TimeUnitOtcfc":{"name":"init(_:_:)","abstract":"

    Undocumented

    ","parent_name":"TimespanMetric"},"Classes/TimespanMetric.html#/s:5Glean14TimespanMetricC6cancelyyF":{"name":"cancel()","abstract":"

    Undocumented

    ","parent_name":"TimespanMetric"},"Classes/TimespanMetric.html#/s:5Glean14TimespanMetricC11setRawNanosyys5Int64VF":{"name":"setRawNanos(_:)","abstract":"

    Undocumented

    ","parent_name":"TimespanMetric"},"Classes/TimespanMetric.html#/s:5Glean14TimespanMetricC5startyyF":{"name":"start()","abstract":"

    Undocumented

    ","parent_name":"TimespanMetric"},"Classes/TimespanMetric.html#/s:5Glean14TimespanMetricC4stopyyF":{"name":"stop()","abstract":"

    Undocumented

    ","parent_name":"TimespanMetric"},"Classes/TimespanMetric.html#/s:5Glean14TimespanMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"TimespanMetric"},"Classes/TimespanMetric.html#/s:5Glean14TimespanMetricC12testGetValueys5Int64VSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"TimespanMetric"},"Classes/TextMetric/NoPointer.html#/s:5Glean10TextMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/TextMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"TextMetric"},"Classes/TextMetric.html#/s:5Glean10TextMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"TextMetric"},"Classes/TextMetric.html#/s:5Glean10TextMetricC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"TextMetric"},"Classes/TextMetric.html#/s:5Glean10TextMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"TextMetric"},"Classes/TextMetric.html#/s:5Glean10TextMetricCyAcA06CommonC4DataVcfc":{"name":"init(_:)","abstract":"

    Undocumented

    ","parent_name":"TextMetric"},"Classes/TextMetric.html#/s:5Glean10TextMetricC3setyySSF":{"name":"set(_:)","abstract":"

    Undocumented

    ","parent_name":"TextMetric"},"Classes/TextMetric.html#/s:5Glean10TextMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"TextMetric"},"Classes/TextMetric.html#/s:5Glean10TextMetricC12testGetValueySSSgAEF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"TextMetric"},"Classes/StringMetric/NoPointer.html#/s:5Glean12StringMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/StringMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"StringMetric"},"Classes/StringMetric.html#/s:5Glean12StringMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"StringMetric"},"Classes/StringMetric.html#/s:5Glean12StringMetricC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"StringMetric"},"Classes/StringMetric.html#/s:5Glean12StringMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"StringMetric"},"Classes/StringMetric.html#/s:5Glean12StringMetricCyAcA06CommonC4DataVcfc":{"name":"init(_:)","abstract":"

    Undocumented

    ","parent_name":"StringMetric"},"Classes/StringMetric.html#/s:5Glean12StringMetricC3setyySSF":{"name":"set(_:)","abstract":"

    Undocumented

    ","parent_name":"StringMetric"},"Classes/StringMetric.html#/s:5Glean12StringMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"StringMetric"},"Classes/StringMetric.html#/s:5Glean12StringMetricC12testGetValueySSSgAEF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"StringMetric"},"Classes/StringListMetric/NoPointer.html#/s:5Glean16StringListMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/StringListMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"StringListMetric"},"Classes/StringListMetric.html#/s:5Glean16StringListMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"StringListMetric"},"Classes/StringListMetric.html#/s:5Glean16StringListMetricC9noPointerA2C02NoF0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"StringListMetric"},"Classes/StringListMetric.html#/s:5Glean16StringListMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"StringListMetric"},"Classes/StringListMetric.html#/s:5Glean16StringListMetricCyAcA06CommonD4DataVcfc":{"name":"init(_:)","abstract":"

    Undocumented

    ","parent_name":"StringListMetric"},"Classes/StringListMetric.html#/s:5Glean16StringListMetricC3addyySSF":{"name":"add(_:)","abstract":"

    Undocumented

    ","parent_name":"StringListMetric"},"Classes/StringListMetric.html#/s:5Glean16StringListMetricC3setyySaySSGF":{"name":"set(_:)","abstract":"

    Undocumented

    ","parent_name":"StringListMetric"},"Classes/StringListMetric.html#/s:5Glean16StringListMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"StringListMetric"},"Classes/StringListMetric.html#/s:5Glean16StringListMetricC12testGetValueySaySSGSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"StringListMetric"},"Classes/RateMetric/NoPointer.html#/s:5Glean10RateMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/RateMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"RateMetric"},"Classes/RateMetric.html#/s:5Glean10RateMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"RateMetric"},"Classes/RateMetric.html#/s:5Glean10RateMetricC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"RateMetric"},"Classes/RateMetric.html#/s:5Glean10RateMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"RateMetric"},"Classes/RateMetric.html#/s:5Glean10RateMetricCyAcA06CommonC4DataVcfc":{"name":"init(_:)","abstract":"

    Undocumented

    ","parent_name":"RateMetric"},"Classes/RateMetric.html#/s:5Glean10RateMetricC16addToDenominatoryys5Int32VF":{"name":"addToDenominator(_:)","abstract":"

    Undocumented

    ","parent_name":"RateMetric"},"Classes/RateMetric.html#/s:5Glean10RateMetricC14addToNumeratoryys5Int32VF":{"name":"addToNumerator(_:)","abstract":"

    Undocumented

    ","parent_name":"RateMetric"},"Classes/RateMetric.html#/s:5Glean10RateMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"RateMetric"},"Classes/RateMetric.html#/s:5Glean10RateMetricC12testGetValueyAA0B0VSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"RateMetric"},"Classes/QuantityMetric/NoPointer.html#/s:5Glean14QuantityMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/QuantityMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"QuantityMetric"},"Classes/QuantityMetric.html#/s:5Glean14QuantityMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"QuantityMetric"},"Classes/QuantityMetric.html#/s:5Glean14QuantityMetricC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"QuantityMetric"},"Classes/QuantityMetric.html#/s:5Glean14QuantityMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"QuantityMetric"},"Classes/QuantityMetric.html#/s:5Glean14QuantityMetricCyAcA06CommonC4DataVcfc":{"name":"init(_:)","abstract":"

    Undocumented

    ","parent_name":"QuantityMetric"},"Classes/QuantityMetric.html#/s:5Glean14QuantityMetricC3setyys5Int64VF":{"name":"set(_:)","abstract":"

    Undocumented

    ","parent_name":"QuantityMetric"},"Classes/QuantityMetric.html#/s:5Glean14QuantityMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"QuantityMetric"},"Classes/QuantityMetric.html#/s:5Glean14QuantityMetricC12testGetValueys5Int64VSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"QuantityMetric"},"Classes/PingType/NoPointer.html#/s:5Glean8PingTypeC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/PingType/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"PingType"},"Classes/PingType.html#/s:5Glean8PingTypeC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"PingType"},"Classes/PingType.html#/s:5Glean8PingTypeC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"PingType"},"Classes/PingType.html#/s:5Glean8PingTypeC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"PingType"},"Classes/PingType.html#/s:5Glean8PingTypeCyACSS_S5bSaySSGADtcfc":{"name":"init(_:_:_:_:_:_:_:_:)","abstract":"

    Undocumented

    ","parent_name":"PingType"},"Classes/PingType.html#/s:5Glean8PingTypeC6submityySSSgF":{"name":"submit(_:)","abstract":"

    Undocumented

    ","parent_name":"PingType"},"Classes/ObjectMetric/NoPointer.html#/s:5Glean12ObjectMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/ObjectMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"ObjectMetric"},"Classes/ObjectMetric.html#/s:5Glean12ObjectMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"ObjectMetric"},"Classes/ObjectMetric.html#/s:5Glean12ObjectMetricC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"ObjectMetric"},"Classes/ObjectMetric.html#/s:5Glean12ObjectMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"ObjectMetric"},"Classes/ObjectMetric.html#/s:5Glean12ObjectMetricCyAcA06CommonC4DataVcfc":{"name":"init(_:)","abstract":"

    Undocumented

    ","parent_name":"ObjectMetric"},"Classes/ObjectMetric.html#/s:5Glean12ObjectMetricC17recordSchemaErroryyF":{"name":"recordSchemaError()","abstract":"

    Undocumented

    ","parent_name":"ObjectMetric"},"Classes/ObjectMetric.html#/s:5Glean12ObjectMetricC9setStringyySSF":{"name":"setString(_:)","abstract":"

    Undocumented

    ","parent_name":"ObjectMetric"},"Classes/ObjectMetric.html#/s:5Glean12ObjectMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"ObjectMetric"},"Classes/ObjectMetric.html#/s:5Glean12ObjectMetricC12testGetValueySSSgAEF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"ObjectMetric"},"Classes/NumeratorMetric/NoPointer.html#/s:5Glean15NumeratorMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/NumeratorMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"NumeratorMetric"},"Classes/NumeratorMetric.html#/s:5Glean15NumeratorMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"NumeratorMetric"},"Classes/NumeratorMetric.html#/s:5Glean15NumeratorMetricC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"NumeratorMetric"},"Classes/NumeratorMetric.html#/s:5Glean15NumeratorMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"NumeratorMetric"},"Classes/NumeratorMetric.html#/s:5Glean15NumeratorMetricCyAcA06CommonC4DataVcfc":{"name":"init(_:)","abstract":"

    Undocumented

    ","parent_name":"NumeratorMetric"},"Classes/NumeratorMetric.html#/s:5Glean15NumeratorMetricC05addToB0yys5Int32VF":{"name":"addToNumerator(_:)","abstract":"

    Undocumented

    ","parent_name":"NumeratorMetric"},"Classes/NumeratorMetric.html#/s:5Glean15NumeratorMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"NumeratorMetric"},"Classes/NumeratorMetric.html#/s:5Glean15NumeratorMetricC12testGetValueyAA4RateVSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"NumeratorMetric"},"Classes/MemoryDistributionMetric/NoPointer.html#/s:5Glean24MemoryDistributionMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/MemoryDistributionMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"MemoryDistributionMetric"},"Classes/MemoryDistributionMetric.html#/s:5Glean24MemoryDistributionMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"MemoryDistributionMetric"},"Classes/MemoryDistributionMetric.html#/s:5Glean24MemoryDistributionMetricC9noPointerA2C02NoF0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"MemoryDistributionMetric"},"Classes/MemoryDistributionMetric.html#/s:5Glean24MemoryDistributionMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"MemoryDistributionMetric"},"Classes/MemoryDistributionMetric.html#/s:5Glean24MemoryDistributionMetricCyAcA06CommonD4DataV_AA0B4UnitOtcfc":{"name":"init(_:_:)","abstract":"

    Undocumented

    ","parent_name":"MemoryDistributionMetric"},"Classes/MemoryDistributionMetric.html#/s:5Glean24MemoryDistributionMetricC10accumulateyys5Int64VF":{"name":"accumulate(_:)","abstract":"

    Undocumented

    ","parent_name":"MemoryDistributionMetric"},"Classes/MemoryDistributionMetric.html#/s:5Glean24MemoryDistributionMetricC17accumulateSamplesyySays5Int64VGF":{"name":"accumulateSamples(_:)","abstract":"

    Undocumented

    ","parent_name":"MemoryDistributionMetric"},"Classes/MemoryDistributionMetric.html#/s:5Glean24MemoryDistributionMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"MemoryDistributionMetric"},"Classes/MemoryDistributionMetric.html#/s:5Glean24MemoryDistributionMetricC12testGetValueyAA0C4DataVSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"MemoryDistributionMetric"},"Classes/LabeledString/NoPointer.html#/s:5Glean13LabeledStringC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/LabeledString/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"LabeledString"},"Classes/LabeledString.html#/s:5Glean13LabeledStringC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"LabeledString"},"Classes/LabeledString.html#/s:5Glean13LabeledStringC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"LabeledString"},"Classes/LabeledString.html#/s:5Glean13LabeledStringC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"LabeledString"},"Classes/LabeledString.html#/s:5Glean13LabeledStringCyAcA0B10MetricDataO_SaySSGSgtcfc":{"name":"init(_:_:)","abstract":"

    Undocumented

    ","parent_name":"LabeledString"},"Classes/LabeledString.html#/s:5Glean13LabeledStringC3getyAA0C6MetricCSSF":{"name":"get(_:)","abstract":"

    Undocumented

    ","parent_name":"LabeledString"},"Classes/LabeledString.html#/s:5Glean13LabeledStringC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"LabeledString"},"Classes/LabeledCounter/NoPointer.html#/s:5Glean14LabeledCounterC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/LabeledCounter/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"LabeledCounter"},"Classes/LabeledCounter.html#/s:5Glean14LabeledCounterC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"LabeledCounter"},"Classes/LabeledCounter.html#/s:5Glean14LabeledCounterC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"LabeledCounter"},"Classes/LabeledCounter.html#/s:5Glean14LabeledCounterC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"LabeledCounter"},"Classes/LabeledCounter.html#/s:5Glean14LabeledCounterCyAcA0B10MetricDataO_SaySSGSgtcfc":{"name":"init(_:_:)","abstract":"

    Undocumented

    ","parent_name":"LabeledCounter"},"Classes/LabeledCounter.html#/s:5Glean14LabeledCounterC3getyAA0C6MetricCSSF":{"name":"get(_:)","abstract":"

    Undocumented

    ","parent_name":"LabeledCounter"},"Classes/LabeledCounter.html#/s:5Glean14LabeledCounterC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"LabeledCounter"},"Classes/LabeledBoolean/NoPointer.html#/s:5Glean14LabeledBooleanC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/LabeledBoolean/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"LabeledBoolean"},"Classes/LabeledBoolean.html#/s:5Glean14LabeledBooleanC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"LabeledBoolean"},"Classes/LabeledBoolean.html#/s:5Glean14LabeledBooleanC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"LabeledBoolean"},"Classes/LabeledBoolean.html#/s:5Glean14LabeledBooleanC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"LabeledBoolean"},"Classes/LabeledBoolean.html#/s:5Glean14LabeledBooleanCyAcA0B10MetricDataO_SaySSGSgtcfc":{"name":"init(_:_:)","abstract":"

    Undocumented

    ","parent_name":"LabeledBoolean"},"Classes/LabeledBoolean.html#/s:5Glean14LabeledBooleanC3getyAA0C6MetricCSSF":{"name":"get(_:)","abstract":"

    Undocumented

    ","parent_name":"LabeledBoolean"},"Classes/LabeledBoolean.html#/s:5Glean14LabeledBooleanC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"LabeledBoolean"},"Classes/EventMetric/NoPointer.html#/s:5Glean11EventMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/EventMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"EventMetric"},"Classes/EventMetric.html#/s:5Glean11EventMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"EventMetric"},"Classes/EventMetric.html#/s:5Glean11EventMetricC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"EventMetric"},"Classes/EventMetric.html#/s:5Glean11EventMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"EventMetric"},"Classes/EventMetric.html#/s:5Glean11EventMetricCyAcA06CommonC4DataV_SaySSGtcfc":{"name":"init(_:_:)","abstract":"

    Undocumented

    ","parent_name":"EventMetric"},"Classes/EventMetric.html#/s:5Glean11EventMetricC6recordyySDyS2SGF":{"name":"record(_:)","abstract":"

    Undocumented

    ","parent_name":"EventMetric"},"Classes/EventMetric.html#/s:5Glean11EventMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"EventMetric"},"Classes/EventMetric.html#/s:5Glean11EventMetricC12testGetValueySayAA08RecordedB0VGSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"EventMetric"},"Classes/DenominatorMetric/NoPointer.html#/s:5Glean17DenominatorMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/DenominatorMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"DenominatorMetric"},"Classes/DenominatorMetric.html#/s:5Glean17DenominatorMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"DenominatorMetric"},"Classes/DenominatorMetric.html#/s:5Glean17DenominatorMetricC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"DenominatorMetric"},"Classes/DenominatorMetric.html#/s:5Glean17DenominatorMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"DenominatorMetric"},"Classes/DenominatorMetric.html#/s:5Glean17DenominatorMetricCyAcA06CommonC4DataV_SayAEGtcfc":{"name":"init(_:_:)","abstract":"

    Undocumented

    ","parent_name":"DenominatorMetric"},"Classes/DenominatorMetric.html#/s:5Glean17DenominatorMetricC3addyys5Int32VF":{"name":"add(_:)","abstract":"

    Undocumented

    ","parent_name":"DenominatorMetric"},"Classes/DenominatorMetric.html#/s:5Glean17DenominatorMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"DenominatorMetric"},"Classes/DenominatorMetric.html#/s:5Glean17DenominatorMetricC12testGetValueys5Int32VSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"DenominatorMetric"},"Classes/DatetimeMetric/NoPointer.html#/s:5Glean14DatetimeMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/DatetimeMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"DatetimeMetric"},"Classes/DatetimeMetric.html#/s:5Glean14DatetimeMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"DatetimeMetric"},"Classes/DatetimeMetric.html#/s:5Glean14DatetimeMetricC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"DatetimeMetric"},"Classes/DatetimeMetric.html#/s:5Glean14DatetimeMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"DatetimeMetric"},"Classes/DatetimeMetric.html#/s:5Glean14DatetimeMetricCyAcA06CommonC4DataV_AA8TimeUnitOtcfc":{"name":"init(_:_:)","abstract":"

    Undocumented

    ","parent_name":"DatetimeMetric"},"Classes/DatetimeMetric.html#/s:5Glean14DatetimeMetricC3setyyAA0B0VSgF":{"name":"set(_:)","abstract":"

    Undocumented

    ","parent_name":"DatetimeMetric"},"Classes/DatetimeMetric.html#/s:5Glean14DatetimeMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"DatetimeMetric"},"Classes/DatetimeMetric.html#/s:5Glean14DatetimeMetricC12testGetValueyAA0B0VSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"DatetimeMetric"},"Classes/DatetimeMetric.html#/s:5Glean14DatetimeMetricC20testGetValueAsStringySSSgAEF":{"name":"testGetValueAsString(_:)","abstract":"

    Undocumented

    ","parent_name":"DatetimeMetric"},"Classes/CustomDistributionMetric/NoPointer.html#/s:5Glean24CustomDistributionMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/CustomDistributionMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"CustomDistributionMetric"},"Classes/CustomDistributionMetric.html#/s:5Glean24CustomDistributionMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"CustomDistributionMetric"},"Classes/CustomDistributionMetric.html#/s:5Glean24CustomDistributionMetricC9noPointerA2C02NoF0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"CustomDistributionMetric"},"Classes/CustomDistributionMetric.html#/s:5Glean24CustomDistributionMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"CustomDistributionMetric"},"Classes/CustomDistributionMetric.html#/s:5Glean24CustomDistributionMetricCyAcA06CommonD4DataV_s5Int64VA2gA13HistogramTypeOtcfc":{"name":"init(_:_:_:_:_:)","abstract":"

    Undocumented

    ","parent_name":"CustomDistributionMetric"},"Classes/CustomDistributionMetric.html#/s:5Glean24CustomDistributionMetricC17accumulateSamplesyySays5Int64VGF":{"name":"accumulateSamples(_:)","abstract":"

    Undocumented

    ","parent_name":"CustomDistributionMetric"},"Classes/CustomDistributionMetric.html#/s:5Glean24CustomDistributionMetricC22accumulateSingleSampleyys5Int64VF":{"name":"accumulateSingleSample(_:)","abstract":"

    Undocumented

    ","parent_name":"CustomDistributionMetric"},"Classes/CustomDistributionMetric.html#/s:5Glean24CustomDistributionMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"CustomDistributionMetric"},"Classes/CustomDistributionMetric.html#/s:5Glean24CustomDistributionMetricC12testGetValueyAA0C4DataVSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"CustomDistributionMetric"},"Classes/CounterMetric/NoPointer.html#/s:5Glean13CounterMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/CounterMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"CounterMetric"},"Classes/CounterMetric.html#/s:5Glean13CounterMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"CounterMetric"},"Classes/CounterMetric.html#/s:5Glean13CounterMetricC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"CounterMetric"},"Classes/CounterMetric.html#/s:5Glean13CounterMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"CounterMetric"},"Classes/CounterMetric.html#/s:5Glean13CounterMetricCyAcA06CommonC4DataVcfc":{"name":"init(_:)","abstract":"

    Undocumented

    ","parent_name":"CounterMetric"},"Classes/CounterMetric.html#/s:5Glean13CounterMetricC3addyys5Int32VF":{"name":"add(_:)","abstract":"

    Undocumented

    ","parent_name":"CounterMetric"},"Classes/CounterMetric.html#/s:5Glean13CounterMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"CounterMetric"},"Classes/CounterMetric.html#/s:5Glean13CounterMetricC12testGetValueys5Int32VSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"CounterMetric"},"Classes/BooleanMetric/NoPointer.html#/s:5Glean13BooleanMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/BooleanMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"BooleanMetric"},"Classes/BooleanMetric.html#/s:5Glean13BooleanMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"BooleanMetric"},"Classes/BooleanMetric.html#/s:5Glean13BooleanMetricC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"BooleanMetric"},"Classes/BooleanMetric.html#/s:5Glean13BooleanMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"BooleanMetric"},"Classes/BooleanMetric.html#/s:5Glean13BooleanMetricCyAcA06CommonC4DataVcfc":{"name":"init(_:)","abstract":"

    Undocumented

    ","parent_name":"BooleanMetric"},"Classes/BooleanMetric.html#/s:5Glean13BooleanMetricC3setyySbF":{"name":"set(_:)","abstract":"

    Undocumented

    ","parent_name":"BooleanMetric"},"Classes/BooleanMetric.html#/s:5Glean13BooleanMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"BooleanMetric"},"Classes/BooleanMetric.html#/s:5Glean13BooleanMetricC12testGetValueySbSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"BooleanMetric"},"Classes/BooleanMetric.html":{"name":"BooleanMetric","abstract":"

    Undocumented

    "},"Classes/CounterMetric.html":{"name":"CounterMetric","abstract":"

    Undocumented

    "},"Classes/CustomDistributionMetric.html":{"name":"CustomDistributionMetric","abstract":"

    Undocumented

    "},"Classes/DatetimeMetric.html":{"name":"DatetimeMetric","abstract":"

    Undocumented

    "},"Classes/DenominatorMetric.html":{"name":"DenominatorMetric","abstract":"

    Undocumented

    "},"Classes/EventMetric.html":{"name":"EventMetric","abstract":"

    Undocumented

    "},"Classes/LabeledBoolean.html":{"name":"LabeledBoolean","abstract":"

    Undocumented

    "},"Classes/LabeledCounter.html":{"name":"LabeledCounter","abstract":"

    Undocumented

    "},"Classes/LabeledString.html":{"name":"LabeledString","abstract":"

    Undocumented

    "},"Classes/MemoryDistributionMetric.html":{"name":"MemoryDistributionMetric","abstract":"

    Undocumented

    "},"Classes/NumeratorMetric.html":{"name":"NumeratorMetric","abstract":"

    Undocumented

    "},"Classes/ObjectMetric.html":{"name":"ObjectMetric","abstract":"

    Undocumented

    "},"Classes/PingType.html":{"name":"PingType","abstract":"

    Undocumented

    "},"Classes/QuantityMetric.html":{"name":"QuantityMetric","abstract":"

    Undocumented

    "},"Classes/RateMetric.html":{"name":"RateMetric","abstract":"

    Undocumented

    "},"Classes/StringListMetric.html":{"name":"StringListMetric","abstract":"

    Undocumented

    "},"Classes/StringMetric.html":{"name":"StringMetric","abstract":"

    Undocumented

    "},"Classes/TextMetric.html":{"name":"TextMetric","abstract":"

    Undocumented

    "},"Classes/TimespanMetric.html":{"name":"TimespanMetric","abstract":"

    Undocumented

    "},"Classes/TimingDistributionMetric.html":{"name":"TimingDistributionMetric","abstract":"

    Undocumented

    "},"Classes/UrlMetric.html":{"name":"UrlMetric","abstract":"

    Undocumented

    "},"Classes/UuidMetric.html":{"name":"UuidMetric","abstract":"

    Undocumented

    "},"Classes/Glean.html":{"name":"Glean","abstract":"

    The main Glean API.

    "},"Classes/DatetimeMetricType.html":{"name":"DatetimeMetricType","abstract":"

    This implements the developer facing API for recording datetime metrics.

    "},"Classes/NoExtras.html":{"name":"NoExtras","abstract":"

    Default of no extra keys for events (for the new API).

    "},"Classes/EventMetricType.html":{"name":"EventMetricType","abstract":"

    This implements the developer facing API for recording events.

    "},"Classes/LabeledMetricType.html":{"name":"LabeledMetricType","abstract":"

    This implements the developer facing API for labeled metrics.

    "},"Classes/ObjectMetricType.html":{"name":"ObjectMetricType","abstract":"

    This implements the developer facing API for the object metric type.

    "},"Classes/Ping.html":{"name":"Ping","abstract":"

    This implements the developer facing API for custom pings.

    "},"Classes/UrlMetricType.html":{"name":"UrlMetricType","abstract":"

    This implements the developer facing API for recording URL metrics.

    "},"Classes/UuidMetricType.html":{"name":"UuidMetricType","abstract":"

    This implements the developer facing API for recording UUID metrics.

    "},"Classes/HttpPingUploader.html":{"name":"HttpPingUploader","abstract":"

    This class represents a ping uploader via HTTP.

    "},"Classes.html":{"name":"Classes","abstract":"

    The following classes are available globally.

    "},"Enums.html":{"name":"Enumerations","abstract":"

    The following enumerations are available globally.

    "},"Extensions.html":{"name":"Extensions","abstract":"

    The following extensions are available globally.

    "},"Functions.html":{"name":"Functions","abstract":"

    The following functions are available globally.

    "},"Protocols.html":{"name":"Protocols","abstract":"

    The following protocols are available globally.

    "},"Structs.html":{"name":"Structures","abstract":"

    The following structures are available globally.

    "},"Typealiases.html":{"name":"Type Aliases","abstract":"

    The following type aliases are available globally.

    "}} \ No newline at end of file +{"Typealiases.html#/s:5Glean9CowStringa":{"name":"CowString","abstract":"

    Typealias from the type name used in the UDL file to the builtin type. This"},"Typealiases.html#/s:5Glean9JsonValuea":{"name":"JsonValue","abstract":"

    Typealias from the type name used in the UDL file to the builtin type. This"},"Typealiases.html#/s:5Glean0A7TimerIda":{"name":"GleanTimerId","abstract":"

    Public exported type identifying individual timers for TimingDistributionMetricType

    "},"Typealiases.html#/s:5Glean17BooleanMetricTypea":{"name":"BooleanMetricType","abstract":"

    This implements the developer facing API for recording boolean metrics.

    "},"Typealiases.html#/s:5Glean17CounterMetricTypea":{"name":"CounterMetricType","abstract":"

    This implements the developer facing API for recording counter metrics.

    "},"Typealiases.html#/s:5Glean28MemoryDistributionMetricTypea":{"name":"MemoryDistributionMetricType","abstract":"

    This implements the developer facing API for recording memory distribution metrics.

    "},"Typealiases.html#/s:5Glean18QuantityMetricTypea":{"name":"QuantityMetricType","abstract":"

    This implements the developer facing API for recording quantity metrics.

    "},"Typealiases.html#/s:5Glean14RateMetricTypea":{"name":"RateMetricType","abstract":"

    This implements the developer facing API for recording rate metrics.

    "},"Typealiases.html#/s:5Glean21DenominatorMetricTypea":{"name":"DenominatorMetricType","abstract":"

    This implements the developer facing API for recording a denominator of a rate metric,"},"Typealiases.html#/s:5Glean19NumeratorMetricTypea":{"name":"NumeratorMetricType","abstract":"

    This implements the developer facing API for recording the numerator of a rate metric"},"Typealiases.html#/s:5Glean20StringListMetricTypea":{"name":"StringListMetricType","abstract":"

    This implements the developer facing API for recording string list metrics.

    "},"Typealiases.html#/s:5Glean16StringMetricTypea":{"name":"StringMetricType","abstract":"

    This implements the developer facing API for recording string metrics.

    "},"Typealiases.html#/s:5Glean14TextMetricTypea":{"name":"TextMetricType","abstract":"

    This implements the developer facing API for recording text metrics.

    "},"Typealiases.html#/s:5Glean18TimespanMetricTypea":{"name":"TimespanMetricType","abstract":"

    This implements the developer facing API for recording timespan metrics.

    "},"Typealiases.html#/s:5Glean28TimingDistributionMetricTypea":{"name":"TimingDistributionMetricType","abstract":"

    This implements the developer facing API for recording timing distribution metrics.

    "},"Structs/BuildInfo.html#/s:5Glean9BuildInfoV9buildDateAC10Foundation0E10ComponentsV_tcfc":{"name":"init(buildDate:)","abstract":"

    Undocumented

    ","parent_name":"BuildInfo"},"Structs/FfiConverterTypeJsonValue.html#/s:5Glean25FfiConverterTypeJsonValueV4read4fromSS10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeJsonValue"},"Structs/FfiConverterTypeJsonValue.html#/s:5Glean25FfiConverterTypeJsonValueV5write_4intoySS_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeJsonValue"},"Structs/FfiConverterTypeJsonValue.html#/s:5Glean25FfiConverterTypeJsonValueV4liftySSSo10RustBufferVKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeJsonValue"},"Structs/FfiConverterTypeJsonValue.html#/s:5Glean25FfiConverterTypeJsonValueV5lowerySo10RustBufferVSSFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeJsonValue"},"Structs/FfiConverterTypeCowString.html#/s:5Glean25FfiConverterTypeCowStringV4read4fromSS10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeCowString"},"Structs/FfiConverterTypeCowString.html#/s:5Glean25FfiConverterTypeCowStringV5write_4intoySS_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeCowString"},"Structs/FfiConverterTypeCowString.html#/s:5Glean25FfiConverterTypeCowStringV4liftySSSo10RustBufferVKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeCowString"},"Structs/FfiConverterTypeCowString.html#/s:5Glean25FfiConverterTypeCowStringV5lowerySo10RustBufferVSSFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeCowString"},"Structs/FfiConverterTypeUploadTaskAction.html#/s:5Glean32FfiConverterTypeUploadTaskActionV4read4fromAA0efG0O10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeUploadTaskAction"},"Structs/FfiConverterTypeUploadTaskAction.html#/s:5Glean32FfiConverterTypeUploadTaskActionV5write_4intoyAA0efG0O_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeUploadTaskAction"},"Structs/FfiConverterTypeUploadResult.html#/s:5Glean28FfiConverterTypeUploadResultV4read4fromAA0eF0O10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeUploadResult"},"Structs/FfiConverterTypeUploadResult.html#/s:5Glean28FfiConverterTypeUploadResultV5write_4intoyAA0eF0O_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeUploadResult"},"Structs/FfiConverterTypeTimeUnit.html#/s:5Glean24FfiConverterTypeTimeUnitV4read4fromAA0eF0O10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeTimeUnit"},"Structs/FfiConverterTypeTimeUnit.html#/s:5Glean24FfiConverterTypeTimeUnitV5write_4intoyAA0eF0O_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeTimeUnit"},"Structs/FfiConverterTypePingUploadTask.html#/s:5Glean30FfiConverterTypePingUploadTaskV4read4fromAA0efG0O10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypePingUploadTask"},"Structs/FfiConverterTypePingUploadTask.html#/s:5Glean30FfiConverterTypePingUploadTaskV5write_4intoyAA0efG0O_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypePingUploadTask"},"Structs/FfiConverterTypeMemoryUnit.html#/s:5Glean26FfiConverterTypeMemoryUnitV4read4fromAA0eF0O10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeMemoryUnit"},"Structs/FfiConverterTypeMemoryUnit.html#/s:5Glean26FfiConverterTypeMemoryUnitV5write_4intoyAA0eF0O_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeMemoryUnit"},"Structs/FfiConverterTypeLifetime.html#/s:5Glean24FfiConverterTypeLifetimeV4read4fromAA0E0O10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLifetime"},"Structs/FfiConverterTypeLifetime.html#/s:5Glean24FfiConverterTypeLifetimeV5write_4intoyAA0E0O_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLifetime"},"Structs/FfiConverterTypeLevelFilter.html#/s:5Glean27FfiConverterTypeLevelFilterV4read4fromAA0eF0O10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLevelFilter"},"Structs/FfiConverterTypeLevelFilter.html#/s:5Glean27FfiConverterTypeLevelFilterV5write_4intoyAA0eF0O_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLevelFilter"},"Structs/FfiConverterTypeLabeledMetricData.html#/s:5Glean33FfiConverterTypeLabeledMetricDataV4read4fromAA0efG0O10Foundation0G0V4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLabeledMetricData"},"Structs/FfiConverterTypeLabeledMetricData.html#/s:5Glean33FfiConverterTypeLabeledMetricDataV5write_4intoyAA0efG0O_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLabeledMetricData"},"Structs/FfiConverterTypeHistogramType.html#/s:5Glean025FfiConverterTypeHistogramD0V4read4fromAA0eD0O10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeHistogramType"},"Structs/FfiConverterTypeHistogramType.html#/s:5Glean025FfiConverterTypeHistogramD0V5write_4intoyAA0eD0O_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeHistogramType"},"Structs/FfiConverterTypeErrorType.html#/s:5Glean021FfiConverterTypeErrorD0V4read4fromAA0eD0O10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeErrorType"},"Structs/FfiConverterTypeErrorType.html#/s:5Glean021FfiConverterTypeErrorD0V5write_4intoyAA0eD0O_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeErrorType"},"Structs/FfiConverterTypeCallbackError.html#/s:5Glean29FfiConverterTypeCallbackErrorV4read4fromAA0eF0O10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeCallbackError"},"Structs/FfiConverterTypeCallbackError.html#/s:5Glean29FfiConverterTypeCallbackErrorV5write_4intoyAA0eF0O_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeCallbackError"},"Structs/FfiConverterTypeTimerId.html#/s:5Glean23FfiConverterTypeTimerIdV4read4fromAA0eF0V10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeTimerId"},"Structs/FfiConverterTypeTimerId.html#/s:5Glean23FfiConverterTypeTimerIdV5write_4intoyAA0eF0V_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeTimerId"},"Structs/TimerId.html#/s:5Glean7TimerIdV2ids6UInt64Vvp":{"name":"id","abstract":"

    Undocumented

    ","parent_name":"TimerId"},"Structs/TimerId.html#/s:5Glean7TimerIdV2idACs6UInt64V_tcfc":{"name":"init(id:)","abstract":"

    Undocumented

    ","parent_name":"TimerId"},"Structs/TimerId.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"TimerId"},"Structs/TimerId.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"TimerId"},"Structs/FfiConverterTypeRecordedExperiment.html#/s:5Glean34FfiConverterTypeRecordedExperimentV4read4fromAA0eF0V10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeRecordedExperiment"},"Structs/FfiConverterTypeRecordedExperiment.html#/s:5Glean34FfiConverterTypeRecordedExperimentV5write_4intoyAA0eF0V_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeRecordedExperiment"},"Structs/RecordedExperiment.html#/s:5Glean18RecordedExperimentV6branchSSvp":{"name":"branch","abstract":"

    Undocumented

    ","parent_name":"RecordedExperiment"},"Structs/RecordedExperiment.html#/s:5Glean18RecordedExperimentV5extraSDyS2SGSgvp":{"name":"extra","abstract":"

    Undocumented

    ","parent_name":"RecordedExperiment"},"Structs/RecordedExperiment.html#/s:5Glean18RecordedExperimentV6branch5extraACSS_SDyS2SGSgtcfc":{"name":"init(branch:extra:)","abstract":"

    Undocumented

    ","parent_name":"RecordedExperiment"},"Structs/RecordedExperiment.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"RecordedExperiment"},"Structs/RecordedExperiment.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"RecordedExperiment"},"Structs/FfiConverterTypeRecordedEvent.html#/s:5Glean29FfiConverterTypeRecordedEventV4read4fromAA0eF0V10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeRecordedEvent"},"Structs/FfiConverterTypeRecordedEvent.html#/s:5Glean29FfiConverterTypeRecordedEventV5write_4intoyAA0eF0V_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeRecordedEvent"},"Structs/RecordedEvent.html#/s:5Glean13RecordedEventV9timestamps6UInt64Vvp":{"name":"timestamp","abstract":"

    Undocumented

    ","parent_name":"RecordedEvent"},"Structs/RecordedEvent.html#/s:5Glean13RecordedEventV8categorySSvp":{"name":"category","abstract":"

    Undocumented

    ","parent_name":"RecordedEvent"},"Structs/RecordedEvent.html#/s:5Glean13RecordedEventV4nameSSvp":{"name":"name","abstract":"

    Undocumented

    ","parent_name":"RecordedEvent"},"Structs/RecordedEvent.html#/s:5Glean13RecordedEventV5extraSDyS2SGSgvp":{"name":"extra","abstract":"

    Undocumented

    ","parent_name":"RecordedEvent"},"Structs/RecordedEvent.html#/s:5Glean13RecordedEventV9timestamp8category4name5extraACs6UInt64V_S2SSDyS2SGSgtcfc":{"name":"init(timestamp:category:name:extra:)","abstract":"

    Undocumented

    ","parent_name":"RecordedEvent"},"Structs/RecordedEvent.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"RecordedEvent"},"Structs/RecordedEvent.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"RecordedEvent"},"Structs/FfiConverterTypeRate.html#/s:5Glean20FfiConverterTypeRateV4read4fromAA0E0V10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeRate"},"Structs/FfiConverterTypeRate.html#/s:5Glean20FfiConverterTypeRateV5write_4intoyAA0E0V_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeRate"},"Structs/Rate.html#/s:5Glean4RateV9numerators5Int32Vvp":{"name":"numerator","abstract":"

    Undocumented

    ","parent_name":"Rate"},"Structs/Rate.html#/s:5Glean4RateV11denominators5Int32Vvp":{"name":"denominator","abstract":"

    Undocumented

    ","parent_name":"Rate"},"Structs/Rate.html#/s:5Glean4RateV9numerator11denominatorACs5Int32V_AGtcfc":{"name":"init(numerator:denominator:)","abstract":"

    Undocumented

    ","parent_name":"Rate"},"Structs/Rate.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"Rate"},"Structs/Rate.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"Rate"},"Structs/FfiConverterTypePingRequest.html#/s:5Glean27FfiConverterTypePingRequestV4read4fromAA0eF0V10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypePingRequest"},"Structs/FfiConverterTypePingRequest.html#/s:5Glean27FfiConverterTypePingRequestV5write_4intoyAA0eF0V_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypePingRequest"},"Structs/PingRequest.html#/s:5Glean11PingRequestV10documentIdSSvp":{"name":"documentId","abstract":"

    Undocumented

    ","parent_name":"PingRequest"},"Structs/PingRequest.html#/s:5Glean11PingRequestV4pathSSvp":{"name":"path","abstract":"

    Undocumented

    ","parent_name":"PingRequest"},"Structs/PingRequest.html#/s:5Glean11PingRequestV4bodySays5UInt8VGvp":{"name":"body","abstract":"

    Undocumented

    ","parent_name":"PingRequest"},"Structs/PingRequest.html#/s:5Glean11PingRequestV7headersSDyS2SGvp":{"name":"headers","abstract":"

    Undocumented

    ","parent_name":"PingRequest"},"Structs/PingRequest.html#/s:5Glean11PingRequestV19bodyHasInfoSectionsSbvp":{"name":"bodyHasInfoSections","abstract":"

    Undocumented

    ","parent_name":"PingRequest"},"Structs/PingRequest.html#/s:5Glean11PingRequestV8pingNameSSvp":{"name":"pingName","abstract":"

    Undocumented

    ","parent_name":"PingRequest"},"Structs/PingRequest.html#/s:5Glean11PingRequestV10documentId4path4body7headers0G15HasInfoSections8pingNameACSS_SSSays5UInt8VGSDyS2SGSbSStcfc":{"name":"init(documentId:path:body:headers:bodyHasInfoSections:pingName:)","abstract":"

    Undocumented

    ","parent_name":"PingRequest"},"Structs/PingRequest.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"PingRequest"},"Structs/PingRequest.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"PingRequest"},"Structs/FfiConverterTypePingRateLimit.html#/s:5Glean29FfiConverterTypePingRateLimitV4read4fromAA0efG0V10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypePingRateLimit"},"Structs/FfiConverterTypePingRateLimit.html#/s:5Glean29FfiConverterTypePingRateLimitV5write_4intoyAA0efG0V_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypePingRateLimit"},"Structs/PingRateLimit.html#/s:5Glean13PingRateLimitV18secondsPerIntervals6UInt64Vvp":{"name":"secondsPerInterval","abstract":"

    Undocumented

    ","parent_name":"PingRateLimit"},"Structs/PingRateLimit.html#/s:5Glean13PingRateLimitV16pingsPerIntervals6UInt32Vvp":{"name":"pingsPerInterval","abstract":"

    Undocumented

    ","parent_name":"PingRateLimit"},"Structs/PingRateLimit.html#/s:5Glean13PingRateLimitV18secondsPerInterval05pingsfG0ACs6UInt64V_s6UInt32Vtcfc":{"name":"init(secondsPerInterval:pingsPerInterval:)","abstract":"

    Undocumented

    ","parent_name":"PingRateLimit"},"Structs/PingRateLimit.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"PingRateLimit"},"Structs/PingRateLimit.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"PingRateLimit"},"Structs/FfiConverterTypeInternalConfiguration.html#/s:5Glean37FfiConverterTypeInternalConfigurationV4read4fromAA0eF0V10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeInternalConfiguration"},"Structs/FfiConverterTypeInternalConfiguration.html#/s:5Glean37FfiConverterTypeInternalConfigurationV5write_4intoyAA0eF0V_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeInternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV8dataPathSSvp":{"name":"dataPath","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV13applicationIdSSvp":{"name":"applicationId","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV19languageBindingNameSSvp":{"name":"languageBindingName","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV13uploadEnabledSbvp":{"name":"uploadEnabled","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV9maxEventss6UInt32VSgvp":{"name":"maxEvents","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV19delayPingLifetimeIoSbvp":{"name":"delayPingLifetimeIo","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV8appBuildSSvp":{"name":"appBuild","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV10useCoreMpsSbvp":{"name":"useCoreMps","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV25trimDataToRegisteredPingsSbvp":{"name":"trimDataToRegisteredPings","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV8logLevelAA0E6FilterOSgvp":{"name":"logLevel","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV9rateLimitAA08PingRateE0VSgvp":{"name":"rateLimit","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV21enableEventTimestampsSbvp":{"name":"enableEventTimestamps","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV17experimentationIdSSSgvp":{"name":"experimentationId","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV06enableB5PingsSbvp":{"name":"enableInternalPings","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV12pingScheduleSDySSSaySSGGvp":{"name":"pingSchedule","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV21pingLifetimeThresholds6UInt64Vvp":{"name":"pingLifetimeThreshold","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV19pingLifetimeMaxTimes6UInt64Vvp":{"name":"pingLifetimeMaxTime","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:5Glean21InternalConfigurationV8dataPath13applicationId19languageBindingName13uploadEnabled9maxEvents19delayPingLifetimeIo8appBuild10useCoreMps25trimDataToRegisteredPings8logLevel9rateLimit21enableEventTimestamps015experimentationG006enableB5Pings12pingSchedule04pingQ9Threshold04pingQ7MaxTimeACSS_S2SSbs6UInt32VSgSbSSS2bAA11LevelFilterOSgAA0P9RateLimitVSgSbSSSgSbSDySSSaySSGGs6UInt64VA6_tcfc":{"name":"init(dataPath:applicationId:languageBindingName:uploadEnabled:maxEvents:delayPingLifetimeIo:appBuild:useCoreMps:trimDataToRegisteredPings:logLevel:rateLimit:enableEventTimestamps:experimentationId:enableInternalPings:pingSchedule:pingLifetimeThreshold:pingLifetimeMaxTime:)","abstract":"

    Undocumented

    ","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"InternalConfiguration"},"Structs/InternalConfiguration.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"InternalConfiguration"},"Structs/FfiConverterTypeDistributionData.html#/s:5Glean32FfiConverterTypeDistributionDataV4read4fromAA0eF0V10Foundation0F0V4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeDistributionData"},"Structs/FfiConverterTypeDistributionData.html#/s:5Glean32FfiConverterTypeDistributionDataV5write_4intoyAA0eF0V_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeDistributionData"},"Structs/DistributionData.html#/s:5Glean16DistributionDataV6valuesSDys5Int64VAFGvp":{"name":"values","abstract":"

    Undocumented

    ","parent_name":"DistributionData"},"Structs/DistributionData.html#/s:5Glean16DistributionDataV3sums5Int64Vvp":{"name":"sum","abstract":"

    Undocumented

    ","parent_name":"DistributionData"},"Structs/DistributionData.html#/s:5Glean16DistributionDataV5counts5Int64Vvp":{"name":"count","abstract":"

    Undocumented

    ","parent_name":"DistributionData"},"Structs/DistributionData.html#/s:5Glean16DistributionDataV6values3sum5countACSDys5Int64VAHG_A2Htcfc":{"name":"init(values:sum:count:)","abstract":"

    Undocumented

    ","parent_name":"DistributionData"},"Structs/DistributionData.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"DistributionData"},"Structs/DistributionData.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"DistributionData"},"Structs/FfiConverterTypeDatetime.html#/s:5Glean24FfiConverterTypeDatetimeV4read4fromAA0E0V10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeDatetime"},"Structs/FfiConverterTypeDatetime.html#/s:5Glean24FfiConverterTypeDatetimeV5write_4intoyAA0E0V_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeDatetime"},"Structs/Datetime.html#/s:5Glean8DatetimeV4years5Int32Vvp":{"name":"year","abstract":"

    Undocumented

    ","parent_name":"Datetime"},"Structs/Datetime.html#/s:5Glean8DatetimeV5months6UInt32Vvp":{"name":"month","abstract":"

    Undocumented

    ","parent_name":"Datetime"},"Structs/Datetime.html#/s:5Glean8DatetimeV3days6UInt32Vvp":{"name":"day","abstract":"

    Undocumented

    ","parent_name":"Datetime"},"Structs/Datetime.html#/s:5Glean8DatetimeV4hours6UInt32Vvp":{"name":"hour","abstract":"

    Undocumented

    ","parent_name":"Datetime"},"Structs/Datetime.html#/s:5Glean8DatetimeV6minutes6UInt32Vvp":{"name":"minute","abstract":"

    Undocumented

    ","parent_name":"Datetime"},"Structs/Datetime.html#/s:5Glean8DatetimeV6seconds6UInt32Vvp":{"name":"second","abstract":"

    Undocumented

    ","parent_name":"Datetime"},"Structs/Datetime.html#/s:5Glean8DatetimeV10nanoseconds6UInt32Vvp":{"name":"nanosecond","abstract":"

    Undocumented

    ","parent_name":"Datetime"},"Structs/Datetime.html#/s:5Glean8DatetimeV13offsetSecondss5Int32Vvp":{"name":"offsetSeconds","abstract":"

    Undocumented

    ","parent_name":"Datetime"},"Structs/Datetime.html#/s:5Glean8DatetimeV4year5month3day4hour6minute6second10nanosecond13offsetSecondsACs5Int32V_s6UInt32VA5oMtcfc":{"name":"init(year:month:day:hour:minute:second:nanosecond:offsetSeconds:)","abstract":"

    Undocumented

    ","parent_name":"Datetime"},"Structs/Datetime.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"Datetime"},"Structs/Datetime.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"Datetime"},"Structs/FfiConverterTypeCommonMetricData.html#/s:5Glean32FfiConverterTypeCommonMetricDataV4read4fromAA0efG0V10Foundation0G0V4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeCommonMetricData"},"Structs/FfiConverterTypeCommonMetricData.html#/s:5Glean32FfiConverterTypeCommonMetricDataV5write_4intoyAA0efG0V_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeCommonMetricData"},"Structs/CommonMetricData.html#/s:5Glean16CommonMetricDataV8categorySSvp":{"name":"category","abstract":"

    Undocumented

    ","parent_name":"CommonMetricData"},"Structs/CommonMetricData.html#/s:5Glean16CommonMetricDataV4nameSSvp":{"name":"name","abstract":"

    Undocumented

    ","parent_name":"CommonMetricData"},"Structs/CommonMetricData.html#/s:5Glean16CommonMetricDataV11sendInPingsSaySSGvp":{"name":"sendInPings","abstract":"

    Undocumented

    ","parent_name":"CommonMetricData"},"Structs/CommonMetricData.html#/s:5Glean16CommonMetricDataV8lifetimeAA8LifetimeOvp":{"name":"lifetime","abstract":"

    Undocumented

    ","parent_name":"CommonMetricData"},"Structs/CommonMetricData.html#/s:5Glean16CommonMetricDataV8disabledSbvp":{"name":"disabled","abstract":"

    Undocumented

    ","parent_name":"CommonMetricData"},"Structs/CommonMetricData.html#/s:5Glean16CommonMetricDataV12dynamicLabelSSSgvp":{"name":"dynamicLabel","abstract":"

    Undocumented

    ","parent_name":"CommonMetricData"},"Structs/CommonMetricData.html#/s:5Glean16CommonMetricDataV8category4name11sendInPings8lifetime8disabled12dynamicLabelACSS_SSSaySSGAA8LifetimeOSbSSSgtcfc":{"name":"init(category:name:sendInPings:lifetime:disabled:dynamicLabel:)","abstract":"

    Undocumented

    ","parent_name":"CommonMetricData"},"Structs/CommonMetricData.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"CommonMetricData"},"Structs/CommonMetricData.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"CommonMetricData"},"Structs/FfiConverterTypeClientInfoMetrics.html#/s:5Glean33FfiConverterTypeClientInfoMetricsV4read4fromAA0efG0V10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeClientInfoMetrics"},"Structs/FfiConverterTypeClientInfoMetrics.html#/s:5Glean33FfiConverterTypeClientInfoMetricsV5write_4intoyAA0efG0V_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeClientInfoMetrics"},"Structs/ClientInfoMetrics.html#/s:5Glean17ClientInfoMetricsV8appBuildSSvp":{"name":"appBuild","abstract":"

    Undocumented

    ","parent_name":"ClientInfoMetrics"},"Structs/ClientInfoMetrics.html#/s:5Glean17ClientInfoMetricsV17appDisplayVersionSSvp":{"name":"appDisplayVersion","abstract":"

    Undocumented

    ","parent_name":"ClientInfoMetrics"},"Structs/ClientInfoMetrics.html#/s:5Glean17ClientInfoMetricsV12appBuildDateAA8DatetimeVvp":{"name":"appBuildDate","abstract":"

    Undocumented

    ","parent_name":"ClientInfoMetrics"},"Structs/ClientInfoMetrics.html#/s:5Glean17ClientInfoMetricsV12architectureSSvp":{"name":"architecture","abstract":"

    Undocumented

    ","parent_name":"ClientInfoMetrics"},"Structs/ClientInfoMetrics.html#/s:5Glean17ClientInfoMetricsV9osVersionSSvp":{"name":"osVersion","abstract":"

    Undocumented

    ","parent_name":"ClientInfoMetrics"},"Structs/ClientInfoMetrics.html#/s:5Glean17ClientInfoMetricsV7channelSSSgvp":{"name":"channel","abstract":"

    Undocumented

    ","parent_name":"ClientInfoMetrics"},"Structs/ClientInfoMetrics.html#/s:5Glean17ClientInfoMetricsV6localeSSSgvp":{"name":"locale","abstract":"

    Undocumented

    ","parent_name":"ClientInfoMetrics"},"Structs/ClientInfoMetrics.html#/s:5Glean17ClientInfoMetricsV18deviceManufacturerSSSgvp":{"name":"deviceManufacturer","abstract":"

    Undocumented

    ","parent_name":"ClientInfoMetrics"},"Structs/ClientInfoMetrics.html#/s:5Glean17ClientInfoMetricsV11deviceModelSSSgvp":{"name":"deviceModel","abstract":"

    Undocumented

    ","parent_name":"ClientInfoMetrics"},"Structs/ClientInfoMetrics.html#/s:5Glean17ClientInfoMetricsV17androidSdkVersionSSSgvp":{"name":"androidSdkVersion","abstract":"

    Undocumented

    ","parent_name":"ClientInfoMetrics"},"Structs/ClientInfoMetrics.html#/s:5Glean17ClientInfoMetricsV18windowsBuildNumbers5Int64VSgvp":{"name":"windowsBuildNumber","abstract":"

    Undocumented

    ","parent_name":"ClientInfoMetrics"},"Structs/ClientInfoMetrics.html#/s:5Glean17ClientInfoMetricsV8appBuild0E14DisplayVersion0eF4Date12architecture02osH07channel6locale18deviceManufacturer0N5Model010androidSdkH007windowsF6NumberACSS_SSAA8DatetimeVS3SSgA4Qs5Int64VSgtcfc":{"name":"init(appBuild:appDisplayVersion:appBuildDate:architecture:osVersion:channel:locale:deviceManufacturer:deviceModel:androidSdkVersion:windowsBuildNumber:)","abstract":"

    Undocumented

    ","parent_name":"ClientInfoMetrics"},"Structs/ClientInfoMetrics.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"ClientInfoMetrics"},"Structs/ClientInfoMetrics.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"ClientInfoMetrics"},"Structs/FfiConverterTypeUuidMetric.html#/s:5Glean26FfiConverterTypeUuidMetricV4liftyAA0eF0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeUuidMetric"},"Structs/FfiConverterTypeUuidMetric.html#/s:5Glean26FfiConverterTypeUuidMetricV5lowerySvAA0eF0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeUuidMetric"},"Structs/FfiConverterTypeUuidMetric.html#/s:5Glean26FfiConverterTypeUuidMetricV4read4fromAA0eF0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeUuidMetric"},"Structs/FfiConverterTypeUuidMetric.html#/s:5Glean26FfiConverterTypeUuidMetricV5write_4intoyAA0eF0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeUuidMetric"},"Structs/FfiConverterTypeUrlMetric.html#/s:5Glean25FfiConverterTypeUrlMetricV4liftyAA0eF0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeUrlMetric"},"Structs/FfiConverterTypeUrlMetric.html#/s:5Glean25FfiConverterTypeUrlMetricV5lowerySvAA0eF0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeUrlMetric"},"Structs/FfiConverterTypeUrlMetric.html#/s:5Glean25FfiConverterTypeUrlMetricV4read4fromAA0eF0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeUrlMetric"},"Structs/FfiConverterTypeUrlMetric.html#/s:5Glean25FfiConverterTypeUrlMetricV5write_4intoyAA0eF0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeUrlMetric"},"Structs/FfiConverterTypeTimingDistributionMetric.html#/s:5Glean40FfiConverterTypeTimingDistributionMetricV4liftyAA0efG0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeTimingDistributionMetric"},"Structs/FfiConverterTypeTimingDistributionMetric.html#/s:5Glean40FfiConverterTypeTimingDistributionMetricV5lowerySvAA0efG0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeTimingDistributionMetric"},"Structs/FfiConverterTypeTimingDistributionMetric.html#/s:5Glean40FfiConverterTypeTimingDistributionMetricV4read4fromAA0efG0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeTimingDistributionMetric"},"Structs/FfiConverterTypeTimingDistributionMetric.html#/s:5Glean40FfiConverterTypeTimingDistributionMetricV5write_4intoyAA0efG0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeTimingDistributionMetric"},"Structs/FfiConverterTypeTimespanMetric.html#/s:5Glean30FfiConverterTypeTimespanMetricV4liftyAA0eF0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeTimespanMetric"},"Structs/FfiConverterTypeTimespanMetric.html#/s:5Glean30FfiConverterTypeTimespanMetricV5lowerySvAA0eF0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeTimespanMetric"},"Structs/FfiConverterTypeTimespanMetric.html#/s:5Glean30FfiConverterTypeTimespanMetricV4read4fromAA0eF0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeTimespanMetric"},"Structs/FfiConverterTypeTimespanMetric.html#/s:5Glean30FfiConverterTypeTimespanMetricV5write_4intoyAA0eF0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeTimespanMetric"},"Structs/FfiConverterTypeTextMetric.html#/s:5Glean26FfiConverterTypeTextMetricV4liftyAA0eF0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeTextMetric"},"Structs/FfiConverterTypeTextMetric.html#/s:5Glean26FfiConverterTypeTextMetricV5lowerySvAA0eF0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeTextMetric"},"Structs/FfiConverterTypeTextMetric.html#/s:5Glean26FfiConverterTypeTextMetricV4read4fromAA0eF0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeTextMetric"},"Structs/FfiConverterTypeTextMetric.html#/s:5Glean26FfiConverterTypeTextMetricV5write_4intoyAA0eF0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeTextMetric"},"Structs/FfiConverterTypeStringMetric.html#/s:5Glean28FfiConverterTypeStringMetricV4liftyAA0eF0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeStringMetric"},"Structs/FfiConverterTypeStringMetric.html#/s:5Glean28FfiConverterTypeStringMetricV5lowerySvAA0eF0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeStringMetric"},"Structs/FfiConverterTypeStringMetric.html#/s:5Glean28FfiConverterTypeStringMetricV4read4fromAA0eF0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeStringMetric"},"Structs/FfiConverterTypeStringMetric.html#/s:5Glean28FfiConverterTypeStringMetricV5write_4intoyAA0eF0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeStringMetric"},"Structs/FfiConverterTypeStringListMetric.html#/s:5Glean32FfiConverterTypeStringListMetricV4liftyAA0efG0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeStringListMetric"},"Structs/FfiConverterTypeStringListMetric.html#/s:5Glean32FfiConverterTypeStringListMetricV5lowerySvAA0efG0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeStringListMetric"},"Structs/FfiConverterTypeStringListMetric.html#/s:5Glean32FfiConverterTypeStringListMetricV4read4fromAA0efG0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeStringListMetric"},"Structs/FfiConverterTypeStringListMetric.html#/s:5Glean32FfiConverterTypeStringListMetricV5write_4intoyAA0efG0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeStringListMetric"},"Structs/FfiConverterTypeRateMetric.html#/s:5Glean26FfiConverterTypeRateMetricV4liftyAA0eF0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeRateMetric"},"Structs/FfiConverterTypeRateMetric.html#/s:5Glean26FfiConverterTypeRateMetricV5lowerySvAA0eF0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeRateMetric"},"Structs/FfiConverterTypeRateMetric.html#/s:5Glean26FfiConverterTypeRateMetricV4read4fromAA0eF0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeRateMetric"},"Structs/FfiConverterTypeRateMetric.html#/s:5Glean26FfiConverterTypeRateMetricV5write_4intoyAA0eF0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeRateMetric"},"Structs/FfiConverterTypeQuantityMetric.html#/s:5Glean30FfiConverterTypeQuantityMetricV4liftyAA0eF0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeQuantityMetric"},"Structs/FfiConverterTypeQuantityMetric.html#/s:5Glean30FfiConverterTypeQuantityMetricV5lowerySvAA0eF0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeQuantityMetric"},"Structs/FfiConverterTypeQuantityMetric.html#/s:5Glean30FfiConverterTypeQuantityMetricV4read4fromAA0eF0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeQuantityMetric"},"Structs/FfiConverterTypeQuantityMetric.html#/s:5Glean30FfiConverterTypeQuantityMetricV5write_4intoyAA0eF0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeQuantityMetric"},"Structs/FfiConverterTypePingType.html#/s:5Glean020FfiConverterTypePingD0V4liftyAA0eD0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypePingType"},"Structs/FfiConverterTypePingType.html#/s:5Glean020FfiConverterTypePingD0V5lowerySvAA0eD0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypePingType"},"Structs/FfiConverterTypePingType.html#/s:5Glean020FfiConverterTypePingD0V4read4fromAA0eD0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypePingType"},"Structs/FfiConverterTypePingType.html#/s:5Glean020FfiConverterTypePingD0V5write_4intoyAA0eD0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypePingType"},"Structs/FfiConverterTypeObjectMetric.html#/s:5Glean28FfiConverterTypeObjectMetricV4liftyAA0eF0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeObjectMetric"},"Structs/FfiConverterTypeObjectMetric.html#/s:5Glean28FfiConverterTypeObjectMetricV5lowerySvAA0eF0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeObjectMetric"},"Structs/FfiConverterTypeObjectMetric.html#/s:5Glean28FfiConverterTypeObjectMetricV4read4fromAA0eF0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeObjectMetric"},"Structs/FfiConverterTypeObjectMetric.html#/s:5Glean28FfiConverterTypeObjectMetricV5write_4intoyAA0eF0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeObjectMetric"},"Structs/FfiConverterTypeNumeratorMetric.html#/s:5Glean31FfiConverterTypeNumeratorMetricV4liftyAA0eF0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeNumeratorMetric"},"Structs/FfiConverterTypeNumeratorMetric.html#/s:5Glean31FfiConverterTypeNumeratorMetricV5lowerySvAA0eF0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeNumeratorMetric"},"Structs/FfiConverterTypeNumeratorMetric.html#/s:5Glean31FfiConverterTypeNumeratorMetricV4read4fromAA0eF0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeNumeratorMetric"},"Structs/FfiConverterTypeNumeratorMetric.html#/s:5Glean31FfiConverterTypeNumeratorMetricV5write_4intoyAA0eF0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeNumeratorMetric"},"Structs/FfiConverterTypeMemoryDistributionMetric.html#/s:5Glean40FfiConverterTypeMemoryDistributionMetricV4liftyAA0efG0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeMemoryDistributionMetric"},"Structs/FfiConverterTypeMemoryDistributionMetric.html#/s:5Glean40FfiConverterTypeMemoryDistributionMetricV5lowerySvAA0efG0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeMemoryDistributionMetric"},"Structs/FfiConverterTypeMemoryDistributionMetric.html#/s:5Glean40FfiConverterTypeMemoryDistributionMetricV4read4fromAA0efG0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeMemoryDistributionMetric"},"Structs/FfiConverterTypeMemoryDistributionMetric.html#/s:5Glean40FfiConverterTypeMemoryDistributionMetricV5write_4intoyAA0efG0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeMemoryDistributionMetric"},"Structs/FfiConverterTypeLabeledString.html#/s:5Glean29FfiConverterTypeLabeledStringV4liftyAA0eF0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLabeledString"},"Structs/FfiConverterTypeLabeledString.html#/s:5Glean29FfiConverterTypeLabeledStringV5lowerySvAA0eF0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLabeledString"},"Structs/FfiConverterTypeLabeledString.html#/s:5Glean29FfiConverterTypeLabeledStringV4read4fromAA0eF0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLabeledString"},"Structs/FfiConverterTypeLabeledString.html#/s:5Glean29FfiConverterTypeLabeledStringV5write_4intoyAA0eF0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLabeledString"},"Structs/FfiConverterTypeLabeledCounter.html#/s:5Glean30FfiConverterTypeLabeledCounterV4liftyAA0eF0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLabeledCounter"},"Structs/FfiConverterTypeLabeledCounter.html#/s:5Glean30FfiConverterTypeLabeledCounterV5lowerySvAA0eF0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLabeledCounter"},"Structs/FfiConverterTypeLabeledCounter.html#/s:5Glean30FfiConverterTypeLabeledCounterV4read4fromAA0eF0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLabeledCounter"},"Structs/FfiConverterTypeLabeledCounter.html#/s:5Glean30FfiConverterTypeLabeledCounterV5write_4intoyAA0eF0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLabeledCounter"},"Structs/FfiConverterTypeLabeledBoolean.html#/s:5Glean30FfiConverterTypeLabeledBooleanV4liftyAA0eF0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLabeledBoolean"},"Structs/FfiConverterTypeLabeledBoolean.html#/s:5Glean30FfiConverterTypeLabeledBooleanV5lowerySvAA0eF0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLabeledBoolean"},"Structs/FfiConverterTypeLabeledBoolean.html#/s:5Glean30FfiConverterTypeLabeledBooleanV4read4fromAA0eF0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLabeledBoolean"},"Structs/FfiConverterTypeLabeledBoolean.html#/s:5Glean30FfiConverterTypeLabeledBooleanV5write_4intoyAA0eF0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeLabeledBoolean"},"Structs/FfiConverterTypeEventMetric.html#/s:5Glean27FfiConverterTypeEventMetricV4liftyAA0eF0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeEventMetric"},"Structs/FfiConverterTypeEventMetric.html#/s:5Glean27FfiConverterTypeEventMetricV5lowerySvAA0eF0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeEventMetric"},"Structs/FfiConverterTypeEventMetric.html#/s:5Glean27FfiConverterTypeEventMetricV4read4fromAA0eF0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeEventMetric"},"Structs/FfiConverterTypeEventMetric.html#/s:5Glean27FfiConverterTypeEventMetricV5write_4intoyAA0eF0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeEventMetric"},"Structs/FfiConverterTypeDenominatorMetric.html#/s:5Glean33FfiConverterTypeDenominatorMetricV4liftyAA0eF0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeDenominatorMetric"},"Structs/FfiConverterTypeDenominatorMetric.html#/s:5Glean33FfiConverterTypeDenominatorMetricV5lowerySvAA0eF0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeDenominatorMetric"},"Structs/FfiConverterTypeDenominatorMetric.html#/s:5Glean33FfiConverterTypeDenominatorMetricV4read4fromAA0eF0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeDenominatorMetric"},"Structs/FfiConverterTypeDenominatorMetric.html#/s:5Glean33FfiConverterTypeDenominatorMetricV5write_4intoyAA0eF0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeDenominatorMetric"},"Structs/FfiConverterTypeDatetimeMetric.html#/s:5Glean30FfiConverterTypeDatetimeMetricV4liftyAA0eF0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeDatetimeMetric"},"Structs/FfiConverterTypeDatetimeMetric.html#/s:5Glean30FfiConverterTypeDatetimeMetricV5lowerySvAA0eF0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeDatetimeMetric"},"Structs/FfiConverterTypeDatetimeMetric.html#/s:5Glean30FfiConverterTypeDatetimeMetricV4read4fromAA0eF0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeDatetimeMetric"},"Structs/FfiConverterTypeDatetimeMetric.html#/s:5Glean30FfiConverterTypeDatetimeMetricV5write_4intoyAA0eF0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeDatetimeMetric"},"Structs/FfiConverterTypeCustomDistributionMetric.html#/s:5Glean40FfiConverterTypeCustomDistributionMetricV4liftyAA0efG0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeCustomDistributionMetric"},"Structs/FfiConverterTypeCustomDistributionMetric.html#/s:5Glean40FfiConverterTypeCustomDistributionMetricV5lowerySvAA0efG0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeCustomDistributionMetric"},"Structs/FfiConverterTypeCustomDistributionMetric.html#/s:5Glean40FfiConverterTypeCustomDistributionMetricV4read4fromAA0efG0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeCustomDistributionMetric"},"Structs/FfiConverterTypeCustomDistributionMetric.html#/s:5Glean40FfiConverterTypeCustomDistributionMetricV5write_4intoyAA0efG0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeCustomDistributionMetric"},"Structs/FfiConverterTypeCounterMetric.html#/s:5Glean29FfiConverterTypeCounterMetricV4liftyAA0eF0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeCounterMetric"},"Structs/FfiConverterTypeCounterMetric.html#/s:5Glean29FfiConverterTypeCounterMetricV5lowerySvAA0eF0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeCounterMetric"},"Structs/FfiConverterTypeCounterMetric.html#/s:5Glean29FfiConverterTypeCounterMetricV4read4fromAA0eF0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeCounterMetric"},"Structs/FfiConverterTypeCounterMetric.html#/s:5Glean29FfiConverterTypeCounterMetricV5write_4intoyAA0eF0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeCounterMetric"},"Structs/FfiConverterTypeBooleanMetric.html#/s:5Glean29FfiConverterTypeBooleanMetricV4liftyAA0eF0CSvKFZ":{"name":"lift(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeBooleanMetric"},"Structs/FfiConverterTypeBooleanMetric.html#/s:5Glean29FfiConverterTypeBooleanMetricV5lowerySvAA0eF0CFZ":{"name":"lower(_:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeBooleanMetric"},"Structs/FfiConverterTypeBooleanMetric.html#/s:5Glean29FfiConverterTypeBooleanMetricV4read4fromAA0eF0C10Foundation4DataV4data_Si6offsettz_tKFZ":{"name":"read(from:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeBooleanMetric"},"Structs/FfiConverterTypeBooleanMetric.html#/s:5Glean29FfiConverterTypeBooleanMetricV5write_4intoyAA0eF0C_Says5UInt8VGztFZ":{"name":"write(_:into:)","abstract":"

    Undocumented

    ","parent_name":"FfiConverterTypeBooleanMetric"},"Structs/Configuration.html#/s:5Glean13ConfigurationV9maxEvents7channel14serverEndpoint8dataPath8logLevel21enableEventTimestamps17experimentationId0L13InternalPings21pingLifetimeThreshold0sT7MaxTimeACs5Int32VSg_SSSgA2qA0K6FilterOSgSbAQSbS2itcfc":{"name":"init(maxEvents:channel:serverEndpoint:dataPath:logLevel:enableEventTimestamps:experimentationId:enableInternalPings:pingLifetimeThreshold:pingLifetimeMaxTime:)","abstract":"

    Create a new Glean Configuration object

    ","parent_name":"Configuration"},"Structs/Configuration.html":{"name":"Configuration","abstract":"

    The Configuration struct describes how to configure Glean as well as providing convenience"},"Structs/FfiConverterTypeBooleanMetric.html":{"name":"FfiConverterTypeBooleanMetric","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeCounterMetric.html":{"name":"FfiConverterTypeCounterMetric","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeCustomDistributionMetric.html":{"name":"FfiConverterTypeCustomDistributionMetric","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeDatetimeMetric.html":{"name":"FfiConverterTypeDatetimeMetric","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeDenominatorMetric.html":{"name":"FfiConverterTypeDenominatorMetric","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeEventMetric.html":{"name":"FfiConverterTypeEventMetric","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeLabeledBoolean.html":{"name":"FfiConverterTypeLabeledBoolean","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeLabeledCounter.html":{"name":"FfiConverterTypeLabeledCounter","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeLabeledString.html":{"name":"FfiConverterTypeLabeledString","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeMemoryDistributionMetric.html":{"name":"FfiConverterTypeMemoryDistributionMetric","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeNumeratorMetric.html":{"name":"FfiConverterTypeNumeratorMetric","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeObjectMetric.html":{"name":"FfiConverterTypeObjectMetric","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypePingType.html":{"name":"FfiConverterTypePingType","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeQuantityMetric.html":{"name":"FfiConverterTypeQuantityMetric","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeRateMetric.html":{"name":"FfiConverterTypeRateMetric","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeStringListMetric.html":{"name":"FfiConverterTypeStringListMetric","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeStringMetric.html":{"name":"FfiConverterTypeStringMetric","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeTextMetric.html":{"name":"FfiConverterTypeTextMetric","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeTimespanMetric.html":{"name":"FfiConverterTypeTimespanMetric","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeTimingDistributionMetric.html":{"name":"FfiConverterTypeTimingDistributionMetric","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeUrlMetric.html":{"name":"FfiConverterTypeUrlMetric","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeUuidMetric.html":{"name":"FfiConverterTypeUuidMetric","abstract":"

    Undocumented

    "},"Structs/ClientInfoMetrics.html":{"name":"ClientInfoMetrics","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeClientInfoMetrics.html":{"name":"FfiConverterTypeClientInfoMetrics","abstract":"

    Undocumented

    "},"Structs/CommonMetricData.html":{"name":"CommonMetricData","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeCommonMetricData.html":{"name":"FfiConverterTypeCommonMetricData","abstract":"

    Undocumented

    "},"Structs/Datetime.html":{"name":"Datetime","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeDatetime.html":{"name":"FfiConverterTypeDatetime","abstract":"

    Undocumented

    "},"Structs/DistributionData.html":{"name":"DistributionData","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeDistributionData.html":{"name":"FfiConverterTypeDistributionData","abstract":"

    Undocumented

    "},"Structs/InternalConfiguration.html":{"name":"InternalConfiguration","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeInternalConfiguration.html":{"name":"FfiConverterTypeInternalConfiguration","abstract":"

    Undocumented

    "},"Structs/PingRateLimit.html":{"name":"PingRateLimit","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypePingRateLimit.html":{"name":"FfiConverterTypePingRateLimit","abstract":"

    Undocumented

    "},"Structs/PingRequest.html":{"name":"PingRequest","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypePingRequest.html":{"name":"FfiConverterTypePingRequest","abstract":"

    Undocumented

    "},"Structs/Rate.html":{"name":"Rate","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeRate.html":{"name":"FfiConverterTypeRate","abstract":"

    Undocumented

    "},"Structs/RecordedEvent.html":{"name":"RecordedEvent","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeRecordedEvent.html":{"name":"FfiConverterTypeRecordedEvent","abstract":"

    Undocumented

    "},"Structs/RecordedExperiment.html":{"name":"RecordedExperiment","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeRecordedExperiment.html":{"name":"FfiConverterTypeRecordedExperiment","abstract":"

    Undocumented

    "},"Structs/TimerId.html":{"name":"TimerId","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeTimerId.html":{"name":"FfiConverterTypeTimerId","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeCallbackError.html":{"name":"FfiConverterTypeCallbackError","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeErrorType.html":{"name":"FfiConverterTypeErrorType","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeHistogramType.html":{"name":"FfiConverterTypeHistogramType","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeLabeledMetricData.html":{"name":"FfiConverterTypeLabeledMetricData","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeLevelFilter.html":{"name":"FfiConverterTypeLevelFilter","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeLifetime.html":{"name":"FfiConverterTypeLifetime","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeMemoryUnit.html":{"name":"FfiConverterTypeMemoryUnit","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypePingUploadTask.html":{"name":"FfiConverterTypePingUploadTask","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeTimeUnit.html":{"name":"FfiConverterTypeTimeUnit","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeUploadResult.html":{"name":"FfiConverterTypeUploadResult","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeUploadTaskAction.html":{"name":"FfiConverterTypeUploadTaskAction","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeCowString.html":{"name":"FfiConverterTypeCowString","abstract":"

    Undocumented

    "},"Structs/FfiConverterTypeJsonValue.html":{"name":"FfiConverterTypeJsonValue","abstract":"

    Undocumented

    "},"Structs/BuildInfo.html":{"name":"BuildInfo","abstract":"

    Undocumented

    "},"Protocols/ReasonCodes.html#/s:5Glean11ReasonCodesP5indexSiyF":{"name":"index()","abstract":"

    The index of the reason code, used to index the string array passed at","parent_name":"ReasonCodes"},"Protocols/ObjectSerialize.html#/s:5Glean15ObjectSerializeP014intoSerializedB0SSyF":{"name":"intoSerializedObject()","abstract":"

    Undocumented

    ","parent_name":"ObjectSerialize"},"Protocols/EventExtras.html#/s:5Glean11EventExtrasP13toExtraRecordSDyS2SGyF":{"name":"toExtraRecord()","abstract":"

    Convert the event extras into 2 lists:

    ","parent_name":"EventExtras"},"Protocols/OnGleanEvents.html#/s:5Glean02OnA6EventsP18initializeFinishedyyF":{"name":"initializeFinished()","abstract":"

    Undocumented

    ","parent_name":"OnGleanEvents"},"Protocols/OnGleanEvents.html#/s:5Glean02OnA6EventsP13triggerUploadyyKF":{"name":"triggerUpload()","abstract":"

    Undocumented

    ","parent_name":"OnGleanEvents"},"Protocols/OnGleanEvents.html#/s:5Glean02OnA6EventsP25startMetricsPingSchedulerSbyF":{"name":"startMetricsPingScheduler()","abstract":"

    Undocumented

    ","parent_name":"OnGleanEvents"},"Protocols/OnGleanEvents.html#/s:5Glean02OnA6EventsP13cancelUploadsyyKF":{"name":"cancelUploads()","abstract":"

    Undocumented

    ","parent_name":"OnGleanEvents"},"Protocols/OnGleanEvents.html#/s:5Glean02OnA6EventsP8shutdownyyKF":{"name":"shutdown()","abstract":"

    Undocumented

    ","parent_name":"OnGleanEvents"},"Protocols/GleanEventListener.html#/s:5Glean0A13EventListenerP02onB8RecordedyySSF":{"name":"onEventRecorded(_:)","abstract":"

    Undocumented

    ","parent_name":"GleanEventListener"},"Protocols/UuidMetricProtocol.html#/s:5Glean18UuidMetricProtocolP14generateAndSetSSyF":{"name":"generateAndSet()","abstract":"

    Undocumented

    ","parent_name":"UuidMetricProtocol"},"Protocols/UuidMetricProtocol.html#/s:5Glean18UuidMetricProtocolP3setyySSF":{"name":"set(_:)","abstract":"

    Undocumented

    ","parent_name":"UuidMetricProtocol"},"Protocols/UuidMetricProtocol.html#/s:5Glean18UuidMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"UuidMetricProtocol"},"Protocols/UuidMetricProtocol.html#/s:5Glean18UuidMetricProtocolP12testGetValueySSSgAEF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"UuidMetricProtocol"},"Protocols/UrlMetricProtocol.html#/s:5Glean17UrlMetricProtocolP3setyySSF":{"name":"set(_:)","abstract":"

    Undocumented

    ","parent_name":"UrlMetricProtocol"},"Protocols/UrlMetricProtocol.html#/s:5Glean17UrlMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"UrlMetricProtocol"},"Protocols/UrlMetricProtocol.html#/s:5Glean17UrlMetricProtocolP12testGetValueySSSgAEF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"UrlMetricProtocol"},"Protocols/TimingDistributionMetricProtocol.html#/s:5Glean32TimingDistributionMetricProtocolP17accumulateSamplesyySays5Int64VGF":{"name":"accumulateSamples(_:)","abstract":"

    Undocumented

    ","parent_name":"TimingDistributionMetricProtocol"},"Protocols/TimingDistributionMetricProtocol.html#/s:5Glean32TimingDistributionMetricProtocolP22accumulateSingleSampleyys5Int64VF":{"name":"accumulateSingleSample(_:)","abstract":"

    Undocumented

    ","parent_name":"TimingDistributionMetricProtocol"},"Protocols/TimingDistributionMetricProtocol.html#/s:5Glean32TimingDistributionMetricProtocolP6cancelyyAA7TimerIdVF":{"name":"cancel(_:)","abstract":"

    Undocumented

    ","parent_name":"TimingDistributionMetricProtocol"},"Protocols/TimingDistributionMetricProtocol.html#/s:5Glean32TimingDistributionMetricProtocolP5startAA7TimerIdVyF":{"name":"start()","abstract":"

    Undocumented

    ","parent_name":"TimingDistributionMetricProtocol"},"Protocols/TimingDistributionMetricProtocol.html#/s:5Glean32TimingDistributionMetricProtocolP17stopAndAccumulateyyAA7TimerIdVF":{"name":"stopAndAccumulate(_:)","abstract":"

    Undocumented

    ","parent_name":"TimingDistributionMetricProtocol"},"Protocols/TimingDistributionMetricProtocol.html#/s:5Glean32TimingDistributionMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"TimingDistributionMetricProtocol"},"Protocols/TimingDistributionMetricProtocol.html#/s:5Glean32TimingDistributionMetricProtocolP12testGetValueyAA0C4DataVSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"TimingDistributionMetricProtocol"},"Protocols/TimespanMetricProtocol.html#/s:5Glean22TimespanMetricProtocolP6cancelyyF":{"name":"cancel()","abstract":"

    Undocumented

    ","parent_name":"TimespanMetricProtocol"},"Protocols/TimespanMetricProtocol.html#/s:5Glean22TimespanMetricProtocolP11setRawNanosyys5Int64VF":{"name":"setRawNanos(_:)","abstract":"

    Undocumented

    ","parent_name":"TimespanMetricProtocol"},"Protocols/TimespanMetricProtocol.html#/s:5Glean22TimespanMetricProtocolP5startyyF":{"name":"start()","abstract":"

    Undocumented

    ","parent_name":"TimespanMetricProtocol"},"Protocols/TimespanMetricProtocol.html#/s:5Glean22TimespanMetricProtocolP4stopyyF":{"name":"stop()","abstract":"

    Undocumented

    ","parent_name":"TimespanMetricProtocol"},"Protocols/TimespanMetricProtocol.html#/s:5Glean22TimespanMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"TimespanMetricProtocol"},"Protocols/TimespanMetricProtocol.html#/s:5Glean22TimespanMetricProtocolP12testGetValueys5Int64VSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"TimespanMetricProtocol"},"Protocols/TextMetricProtocol.html#/s:5Glean18TextMetricProtocolP3setyySSF":{"name":"set(_:)","abstract":"

    Undocumented

    ","parent_name":"TextMetricProtocol"},"Protocols/TextMetricProtocol.html#/s:5Glean18TextMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"TextMetricProtocol"},"Protocols/TextMetricProtocol.html#/s:5Glean18TextMetricProtocolP12testGetValueySSSgAEF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"TextMetricProtocol"},"Protocols/StringMetricProtocol.html#/s:5Glean20StringMetricProtocolP3setyySSF":{"name":"set(_:)","abstract":"

    Undocumented

    ","parent_name":"StringMetricProtocol"},"Protocols/StringMetricProtocol.html#/s:5Glean20StringMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"StringMetricProtocol"},"Protocols/StringMetricProtocol.html#/s:5Glean20StringMetricProtocolP12testGetValueySSSgAEF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"StringMetricProtocol"},"Protocols/StringListMetricProtocol.html#/s:5Glean24StringListMetricProtocolP3addyySSF":{"name":"add(_:)","abstract":"

    Undocumented

    ","parent_name":"StringListMetricProtocol"},"Protocols/StringListMetricProtocol.html#/s:5Glean24StringListMetricProtocolP3setyySaySSGF":{"name":"set(_:)","abstract":"

    Undocumented

    ","parent_name":"StringListMetricProtocol"},"Protocols/StringListMetricProtocol.html#/s:5Glean24StringListMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"StringListMetricProtocol"},"Protocols/StringListMetricProtocol.html#/s:5Glean24StringListMetricProtocolP12testGetValueySaySSGSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"StringListMetricProtocol"},"Protocols/RateMetricProtocol.html#/s:5Glean18RateMetricProtocolP16addToDenominatoryys5Int32VF":{"name":"addToDenominator(_:)","abstract":"

    Undocumented

    ","parent_name":"RateMetricProtocol"},"Protocols/RateMetricProtocol.html#/s:5Glean18RateMetricProtocolP14addToNumeratoryys5Int32VF":{"name":"addToNumerator(_:)","abstract":"

    Undocumented

    ","parent_name":"RateMetricProtocol"},"Protocols/RateMetricProtocol.html#/s:5Glean18RateMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"RateMetricProtocol"},"Protocols/RateMetricProtocol.html#/s:5Glean18RateMetricProtocolP12testGetValueyAA0B0VSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"RateMetricProtocol"},"Protocols/QuantityMetricProtocol.html#/s:5Glean22QuantityMetricProtocolP3setyys5Int64VF":{"name":"set(_:)","abstract":"

    Undocumented

    ","parent_name":"QuantityMetricProtocol"},"Protocols/QuantityMetricProtocol.html#/s:5Glean22QuantityMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"QuantityMetricProtocol"},"Protocols/QuantityMetricProtocol.html#/s:5Glean22QuantityMetricProtocolP12testGetValueys5Int64VSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"QuantityMetricProtocol"},"Protocols/PingTypeProtocol.html#/s:5Glean16PingTypeProtocolP6submityySSSgF":{"name":"submit(_:)","abstract":"

    Undocumented

    ","parent_name":"PingTypeProtocol"},"Protocols/ObjectMetricProtocol.html#/s:5Glean20ObjectMetricProtocolP17recordSchemaErroryyF":{"name":"recordSchemaError()","abstract":"

    Undocumented

    ","parent_name":"ObjectMetricProtocol"},"Protocols/ObjectMetricProtocol.html#/s:5Glean20ObjectMetricProtocolP9setStringyySSF":{"name":"setString(_:)","abstract":"

    Undocumented

    ","parent_name":"ObjectMetricProtocol"},"Protocols/ObjectMetricProtocol.html#/s:5Glean20ObjectMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"ObjectMetricProtocol"},"Protocols/ObjectMetricProtocol.html#/s:5Glean20ObjectMetricProtocolP12testGetValueySSSgAEF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"ObjectMetricProtocol"},"Protocols/NumeratorMetricProtocol.html#/s:5Glean23NumeratorMetricProtocolP05addToB0yys5Int32VF":{"name":"addToNumerator(_:)","abstract":"

    Undocumented

    ","parent_name":"NumeratorMetricProtocol"},"Protocols/NumeratorMetricProtocol.html#/s:5Glean23NumeratorMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"NumeratorMetricProtocol"},"Protocols/NumeratorMetricProtocol.html#/s:5Glean23NumeratorMetricProtocolP12testGetValueyAA4RateVSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"NumeratorMetricProtocol"},"Protocols/MemoryDistributionMetricProtocol.html#/s:5Glean32MemoryDistributionMetricProtocolP10accumulateyys5Int64VF":{"name":"accumulate(_:)","abstract":"

    Undocumented

    ","parent_name":"MemoryDistributionMetricProtocol"},"Protocols/MemoryDistributionMetricProtocol.html#/s:5Glean32MemoryDistributionMetricProtocolP17accumulateSamplesyySays5Int64VGF":{"name":"accumulateSamples(_:)","abstract":"

    Undocumented

    ","parent_name":"MemoryDistributionMetricProtocol"},"Protocols/MemoryDistributionMetricProtocol.html#/s:5Glean32MemoryDistributionMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"MemoryDistributionMetricProtocol"},"Protocols/MemoryDistributionMetricProtocol.html#/s:5Glean32MemoryDistributionMetricProtocolP12testGetValueyAA0C4DataVSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"MemoryDistributionMetricProtocol"},"Protocols/LabeledStringProtocol.html#/s:5Glean21LabeledStringProtocolP3getyAA0C6MetricCSSF":{"name":"get(_:)","abstract":"

    Undocumented

    ","parent_name":"LabeledStringProtocol"},"Protocols/LabeledStringProtocol.html#/s:5Glean21LabeledStringProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"LabeledStringProtocol"},"Protocols/LabeledCounterProtocol.html#/s:5Glean22LabeledCounterProtocolP3getyAA0C6MetricCSSF":{"name":"get(_:)","abstract":"

    Undocumented

    ","parent_name":"LabeledCounterProtocol"},"Protocols/LabeledCounterProtocol.html#/s:5Glean22LabeledCounterProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"LabeledCounterProtocol"},"Protocols/LabeledBooleanProtocol.html#/s:5Glean22LabeledBooleanProtocolP3getyAA0C6MetricCSSF":{"name":"get(_:)","abstract":"

    Undocumented

    ","parent_name":"LabeledBooleanProtocol"},"Protocols/LabeledBooleanProtocol.html#/s:5Glean22LabeledBooleanProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"LabeledBooleanProtocol"},"Protocols/EventMetricProtocol.html#/s:5Glean19EventMetricProtocolP6recordyySDyS2SGF":{"name":"record(_:)","abstract":"

    Undocumented

    ","parent_name":"EventMetricProtocol"},"Protocols/EventMetricProtocol.html#/s:5Glean19EventMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"EventMetricProtocol"},"Protocols/EventMetricProtocol.html#/s:5Glean19EventMetricProtocolP12testGetValueySayAA08RecordedB0VGSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"EventMetricProtocol"},"Protocols/DenominatorMetricProtocol.html#/s:5Glean25DenominatorMetricProtocolP3addyys5Int32VF":{"name":"add(_:)","abstract":"

    Undocumented

    ","parent_name":"DenominatorMetricProtocol"},"Protocols/DenominatorMetricProtocol.html#/s:5Glean25DenominatorMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"DenominatorMetricProtocol"},"Protocols/DenominatorMetricProtocol.html#/s:5Glean25DenominatorMetricProtocolP12testGetValueys5Int32VSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"DenominatorMetricProtocol"},"Protocols/DatetimeMetricProtocol.html#/s:5Glean22DatetimeMetricProtocolP3setyyAA0B0VSgF":{"name":"set(_:)","abstract":"

    Undocumented

    ","parent_name":"DatetimeMetricProtocol"},"Protocols/DatetimeMetricProtocol.html#/s:5Glean22DatetimeMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"DatetimeMetricProtocol"},"Protocols/DatetimeMetricProtocol.html#/s:5Glean22DatetimeMetricProtocolP12testGetValueyAA0B0VSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"DatetimeMetricProtocol"},"Protocols/DatetimeMetricProtocol.html#/s:5Glean22DatetimeMetricProtocolP20testGetValueAsStringySSSgAEF":{"name":"testGetValueAsString(_:)","abstract":"

    Undocumented

    ","parent_name":"DatetimeMetricProtocol"},"Protocols/CustomDistributionMetricProtocol.html#/s:5Glean32CustomDistributionMetricProtocolP17accumulateSamplesyySays5Int64VGF":{"name":"accumulateSamples(_:)","abstract":"

    Undocumented

    ","parent_name":"CustomDistributionMetricProtocol"},"Protocols/CustomDistributionMetricProtocol.html#/s:5Glean32CustomDistributionMetricProtocolP22accumulateSingleSampleyys5Int64VF":{"name":"accumulateSingleSample(_:)","abstract":"

    Undocumented

    ","parent_name":"CustomDistributionMetricProtocol"},"Protocols/CustomDistributionMetricProtocol.html#/s:5Glean32CustomDistributionMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"CustomDistributionMetricProtocol"},"Protocols/CustomDistributionMetricProtocol.html#/s:5Glean32CustomDistributionMetricProtocolP12testGetValueyAA0C4DataVSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"CustomDistributionMetricProtocol"},"Protocols/CounterMetricProtocol.html#/s:5Glean21CounterMetricProtocolP3addyys5Int32VF":{"name":"add(_:)","abstract":"

    Undocumented

    ","parent_name":"CounterMetricProtocol"},"Protocols/CounterMetricProtocol.html#/s:5Glean21CounterMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"CounterMetricProtocol"},"Protocols/CounterMetricProtocol.html#/s:5Glean21CounterMetricProtocolP12testGetValueys5Int32VSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"CounterMetricProtocol"},"Protocols/BooleanMetricProtocol.html#/s:5Glean21BooleanMetricProtocolP3setyySbF":{"name":"set(_:)","abstract":"

    Undocumented

    ","parent_name":"BooleanMetricProtocol"},"Protocols/BooleanMetricProtocol.html#/s:5Glean21BooleanMetricProtocolP24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"BooleanMetricProtocol"},"Protocols/BooleanMetricProtocol.html#/s:5Glean21BooleanMetricProtocolP12testGetValueySbSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"BooleanMetricProtocol"},"Protocols/BooleanMetricProtocol.html":{"name":"BooleanMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/CounterMetricProtocol.html":{"name":"CounterMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/CustomDistributionMetricProtocol.html":{"name":"CustomDistributionMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/DatetimeMetricProtocol.html":{"name":"DatetimeMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/DenominatorMetricProtocol.html":{"name":"DenominatorMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/EventMetricProtocol.html":{"name":"EventMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/LabeledBooleanProtocol.html":{"name":"LabeledBooleanProtocol","abstract":"

    Undocumented

    "},"Protocols/LabeledCounterProtocol.html":{"name":"LabeledCounterProtocol","abstract":"

    Undocumented

    "},"Protocols/LabeledStringProtocol.html":{"name":"LabeledStringProtocol","abstract":"

    Undocumented

    "},"Protocols/MemoryDistributionMetricProtocol.html":{"name":"MemoryDistributionMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/NumeratorMetricProtocol.html":{"name":"NumeratorMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/ObjectMetricProtocol.html":{"name":"ObjectMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/PingTypeProtocol.html":{"name":"PingTypeProtocol","abstract":"

    Undocumented

    "},"Protocols/QuantityMetricProtocol.html":{"name":"QuantityMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/RateMetricProtocol.html":{"name":"RateMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/StringListMetricProtocol.html":{"name":"StringListMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/StringMetricProtocol.html":{"name":"StringMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/TextMetricProtocol.html":{"name":"TextMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/TimespanMetricProtocol.html":{"name":"TimespanMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/TimingDistributionMetricProtocol.html":{"name":"TimingDistributionMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/UrlMetricProtocol.html":{"name":"UrlMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/UuidMetricProtocol.html":{"name":"UuidMetricProtocol","abstract":"

    Undocumented

    "},"Protocols/GleanEventListener.html":{"name":"GleanEventListener","abstract":"

    Undocumented

    "},"Protocols/OnGleanEvents.html":{"name":"OnGleanEvents","abstract":"

    Undocumented

    "},"Protocols/EventExtras.html":{"name":"EventExtras","abstract":"

    Extra keys for events by name.

    "},"Protocols/ObjectSerialize.html":{"name":"ObjectSerialize","abstract":"

    An object that can be serialized into JSON.

    "},"Protocols/ReasonCodes.html":{"name":"ReasonCodes","abstract":"

    The reasons a ping may be sent."},"Functions.html#/s:5Glean34FfiConverterTypeBooleanMetric_liftyAA0eF0CSvKF":{"name":"FfiConverterTypeBooleanMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean35FfiConverterTypeBooleanMetric_lowerySvAA0eF0CF":{"name":"FfiConverterTypeBooleanMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean34FfiConverterTypeCounterMetric_liftyAA0eF0CSvKF":{"name":"FfiConverterTypeCounterMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean35FfiConverterTypeCounterMetric_lowerySvAA0eF0CF":{"name":"FfiConverterTypeCounterMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean45FfiConverterTypeCustomDistributionMetric_liftyAA0efG0CSvKF":{"name":"FfiConverterTypeCustomDistributionMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean46FfiConverterTypeCustomDistributionMetric_lowerySvAA0efG0CF":{"name":"FfiConverterTypeCustomDistributionMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean35FfiConverterTypeDatetimeMetric_liftyAA0eF0CSvKF":{"name":"FfiConverterTypeDatetimeMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean36FfiConverterTypeDatetimeMetric_lowerySvAA0eF0CF":{"name":"FfiConverterTypeDatetimeMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean38FfiConverterTypeDenominatorMetric_liftyAA0eF0CSvKF":{"name":"FfiConverterTypeDenominatorMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean39FfiConverterTypeDenominatorMetric_lowerySvAA0eF0CF":{"name":"FfiConverterTypeDenominatorMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean32FfiConverterTypeEventMetric_liftyAA0eF0CSvKF":{"name":"FfiConverterTypeEventMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean33FfiConverterTypeEventMetric_lowerySvAA0eF0CF":{"name":"FfiConverterTypeEventMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean35FfiConverterTypeLabeledBoolean_liftyAA0eF0CSvKF":{"name":"FfiConverterTypeLabeledBoolean_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean36FfiConverterTypeLabeledBoolean_lowerySvAA0eF0CF":{"name":"FfiConverterTypeLabeledBoolean_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean35FfiConverterTypeLabeledCounter_liftyAA0eF0CSvKF":{"name":"FfiConverterTypeLabeledCounter_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean36FfiConverterTypeLabeledCounter_lowerySvAA0eF0CF":{"name":"FfiConverterTypeLabeledCounter_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean34FfiConverterTypeLabeledString_liftyAA0eF0CSvKF":{"name":"FfiConverterTypeLabeledString_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean35FfiConverterTypeLabeledString_lowerySvAA0eF0CF":{"name":"FfiConverterTypeLabeledString_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean45FfiConverterTypeMemoryDistributionMetric_liftyAA0efG0CSvKF":{"name":"FfiConverterTypeMemoryDistributionMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean46FfiConverterTypeMemoryDistributionMetric_lowerySvAA0efG0CF":{"name":"FfiConverterTypeMemoryDistributionMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean36FfiConverterTypeNumeratorMetric_liftyAA0eF0CSvKF":{"name":"FfiConverterTypeNumeratorMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean37FfiConverterTypeNumeratorMetric_lowerySvAA0eF0CF":{"name":"FfiConverterTypeNumeratorMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean33FfiConverterTypeObjectMetric_liftyAA0eF0CSvKF":{"name":"FfiConverterTypeObjectMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean34FfiConverterTypeObjectMetric_lowerySvAA0eF0CF":{"name":"FfiConverterTypeObjectMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean020FfiConverterTypePingD5_liftyAA0eD0CSvKF":{"name":"FfiConverterTypePingType_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean020FfiConverterTypePingD6_lowerySvAA0eD0CF":{"name":"FfiConverterTypePingType_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean35FfiConverterTypeQuantityMetric_liftyAA0eF0CSvKF":{"name":"FfiConverterTypeQuantityMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean36FfiConverterTypeQuantityMetric_lowerySvAA0eF0CF":{"name":"FfiConverterTypeQuantityMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean31FfiConverterTypeRateMetric_liftyAA0eF0CSvKF":{"name":"FfiConverterTypeRateMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean32FfiConverterTypeRateMetric_lowerySvAA0eF0CF":{"name":"FfiConverterTypeRateMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean37FfiConverterTypeStringListMetric_liftyAA0efG0CSvKF":{"name":"FfiConverterTypeStringListMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean38FfiConverterTypeStringListMetric_lowerySvAA0efG0CF":{"name":"FfiConverterTypeStringListMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean33FfiConverterTypeStringMetric_liftyAA0eF0CSvKF":{"name":"FfiConverterTypeStringMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean34FfiConverterTypeStringMetric_lowerySvAA0eF0CF":{"name":"FfiConverterTypeStringMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean31FfiConverterTypeTextMetric_liftyAA0eF0CSvKF":{"name":"FfiConverterTypeTextMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean32FfiConverterTypeTextMetric_lowerySvAA0eF0CF":{"name":"FfiConverterTypeTextMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean35FfiConverterTypeTimespanMetric_liftyAA0eF0CSvKF":{"name":"FfiConverterTypeTimespanMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean36FfiConverterTypeTimespanMetric_lowerySvAA0eF0CF":{"name":"FfiConverterTypeTimespanMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean45FfiConverterTypeTimingDistributionMetric_liftyAA0efG0CSvKF":{"name":"FfiConverterTypeTimingDistributionMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean46FfiConverterTypeTimingDistributionMetric_lowerySvAA0efG0CF":{"name":"FfiConverterTypeTimingDistributionMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean30FfiConverterTypeUrlMetric_liftyAA0eF0CSvKF":{"name":"FfiConverterTypeUrlMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean31FfiConverterTypeUrlMetric_lowerySvAA0eF0CF":{"name":"FfiConverterTypeUrlMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean31FfiConverterTypeUuidMetric_liftyAA0eF0CSvKF":{"name":"FfiConverterTypeUuidMetric_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean32FfiConverterTypeUuidMetric_lowerySvAA0eF0CF":{"name":"FfiConverterTypeUuidMetric_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean38FfiConverterTypeClientInfoMetrics_liftyAA0efG0VSo10RustBufferVKF":{"name":"FfiConverterTypeClientInfoMetrics_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean39FfiConverterTypeClientInfoMetrics_lowerySo10RustBufferVAA0efG0VF":{"name":"FfiConverterTypeClientInfoMetrics_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean37FfiConverterTypeCommonMetricData_liftyAA0efG0VSo10RustBufferVKF":{"name":"FfiConverterTypeCommonMetricData_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean38FfiConverterTypeCommonMetricData_lowerySo10RustBufferVAA0efG0VF":{"name":"FfiConverterTypeCommonMetricData_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean29FfiConverterTypeDatetime_liftyAA0E0VSo10RustBufferVKF":{"name":"FfiConverterTypeDatetime_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean30FfiConverterTypeDatetime_lowerySo10RustBufferVAA0E0VF":{"name":"FfiConverterTypeDatetime_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean37FfiConverterTypeDistributionData_liftyAA0eF0VSo10RustBufferVKF":{"name":"FfiConverterTypeDistributionData_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean38FfiConverterTypeDistributionData_lowerySo10RustBufferVAA0eF0VF":{"name":"FfiConverterTypeDistributionData_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean42FfiConverterTypeInternalConfiguration_liftyAA0eF0VSo10RustBufferVKF":{"name":"FfiConverterTypeInternalConfiguration_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean43FfiConverterTypeInternalConfiguration_lowerySo10RustBufferVAA0eF0VF":{"name":"FfiConverterTypeInternalConfiguration_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean34FfiConverterTypePingRateLimit_liftyAA0efG0VSo10RustBufferVKF":{"name":"FfiConverterTypePingRateLimit_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean35FfiConverterTypePingRateLimit_lowerySo10RustBufferVAA0efG0VF":{"name":"FfiConverterTypePingRateLimit_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean32FfiConverterTypePingRequest_liftyAA0eF0VSo10RustBufferVKF":{"name":"FfiConverterTypePingRequest_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean33FfiConverterTypePingRequest_lowerySo10RustBufferVAA0eF0VF":{"name":"FfiConverterTypePingRequest_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean25FfiConverterTypeRate_liftyAA0E0VSo10RustBufferVKF":{"name":"FfiConverterTypeRate_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean26FfiConverterTypeRate_lowerySo10RustBufferVAA0E0VF":{"name":"FfiConverterTypeRate_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean34FfiConverterTypeRecordedEvent_liftyAA0eF0VSo10RustBufferVKF":{"name":"FfiConverterTypeRecordedEvent_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean35FfiConverterTypeRecordedEvent_lowerySo10RustBufferVAA0eF0VF":{"name":"FfiConverterTypeRecordedEvent_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean39FfiConverterTypeRecordedExperiment_liftyAA0eF0VSo10RustBufferVKF":{"name":"FfiConverterTypeRecordedExperiment_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean40FfiConverterTypeRecordedExperiment_lowerySo10RustBufferVAA0eF0VF":{"name":"FfiConverterTypeRecordedExperiment_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean28FfiConverterTypeTimerId_liftyAA0eF0VSo10RustBufferVKF":{"name":"FfiConverterTypeTimerId_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean29FfiConverterTypeTimerId_lowerySo10RustBufferVAA0eF0VF":{"name":"FfiConverterTypeTimerId_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean021FfiConverterTypeErrorD5_liftyAA0eD0OSo10RustBufferVKF":{"name":"FfiConverterTypeErrorType_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean021FfiConverterTypeErrorD6_lowerySo10RustBufferVAA0eD0OF":{"name":"FfiConverterTypeErrorType_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean025FfiConverterTypeHistogramD5_liftyAA0eD0OSo10RustBufferVKF":{"name":"FfiConverterTypeHistogramType_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean025FfiConverterTypeHistogramD6_lowerySo10RustBufferVAA0eD0OF":{"name":"FfiConverterTypeHistogramType_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean38FfiConverterTypeLabeledMetricData_liftyAA0efG0OSo10RustBufferVKF":{"name":"FfiConverterTypeLabeledMetricData_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean39FfiConverterTypeLabeledMetricData_lowerySo10RustBufferVAA0efG0OF":{"name":"FfiConverterTypeLabeledMetricData_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean32FfiConverterTypeLevelFilter_liftyAA0eF0OSo10RustBufferVKF":{"name":"FfiConverterTypeLevelFilter_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean33FfiConverterTypeLevelFilter_lowerySo10RustBufferVAA0eF0OF":{"name":"FfiConverterTypeLevelFilter_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean29FfiConverterTypeLifetime_liftyAA0E0OSo10RustBufferVKF":{"name":"FfiConverterTypeLifetime_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean30FfiConverterTypeLifetime_lowerySo10RustBufferVAA0E0OF":{"name":"FfiConverterTypeLifetime_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean31FfiConverterTypeMemoryUnit_liftyAA0eF0OSo10RustBufferVKF":{"name":"FfiConverterTypeMemoryUnit_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean32FfiConverterTypeMemoryUnit_lowerySo10RustBufferVAA0eF0OF":{"name":"FfiConverterTypeMemoryUnit_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean35FfiConverterTypePingUploadTask_liftyAA0efG0OSo10RustBufferVKF":{"name":"FfiConverterTypePingUploadTask_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean36FfiConverterTypePingUploadTask_lowerySo10RustBufferVAA0efG0OF":{"name":"FfiConverterTypePingUploadTask_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean29FfiConverterTypeTimeUnit_liftyAA0eF0OSo10RustBufferVKF":{"name":"FfiConverterTypeTimeUnit_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean30FfiConverterTypeTimeUnit_lowerySo10RustBufferVAA0eF0OF":{"name":"FfiConverterTypeTimeUnit_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean33FfiConverterTypeUploadResult_liftyAA0eF0OSo10RustBufferVKF":{"name":"FfiConverterTypeUploadResult_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean34FfiConverterTypeUploadResult_lowerySo10RustBufferVAA0eF0OF":{"name":"FfiConverterTypeUploadResult_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean37FfiConverterTypeUploadTaskAction_liftyAA0efG0OSo10RustBufferVKF":{"name":"FfiConverterTypeUploadTaskAction_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean38FfiConverterTypeUploadTaskAction_lowerySo10RustBufferVAA0efG0OF":{"name":"FfiConverterTypeUploadTaskAction_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean30FfiConverterTypeCowString_liftySSSo10RustBufferVKF":{"name":"FfiConverterTypeCowString_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean31FfiConverterTypeCowString_lowerySo10RustBufferVSSF":{"name":"FfiConverterTypeCowString_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean30FfiConverterTypeJsonValue_liftySSSo10RustBufferVKF":{"name":"FfiConverterTypeJsonValue_lift(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean31FfiConverterTypeJsonValue_lowerySo10RustBufferVSSF":{"name":"FfiConverterTypeJsonValue_lower(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean27gleanApplyServerKnobsConfigyySSF":{"name":"gleanApplyServerKnobsConfig(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean18gleanEnableLoggingyyF":{"name":"gleanEnableLogging()","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean22gleanEnableLoggingToFdyys6UInt64VF":{"name":"gleanEnableLoggingToFd(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean18gleanGetUploadTaskAA04PingdE0OyF":{"name":"gleanGetUploadTask()","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean23gleanHandleClientActiveyyF":{"name":"gleanHandleClientActive()","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean25gleanHandleClientInactiveyyF":{"name":"gleanHandleClientInactive()","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean15gleanInitializeyyAA21InternalConfigurationV_AA17ClientInfoMetricsVAA02OnA6Events_ptF":{"name":"gleanInitialize(_:_:_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean28gleanInitializeForSubprocessySbAA21InternalConfigurationVF":{"name":"gleanInitializeForSubprocess(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean28gleanPersistPingLifetimeDatayyF":{"name":"gleanPersistPingLifetimeData()","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean30gleanProcessPingUploadResponseyAA0E10TaskActionOSS_AA0E6ResultOtF":{"name":"gleanProcessPingUploadResponse(_:_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean26gleanRegisterEventListeneryySS_AA0adE0_ptF":{"name":"gleanRegisterEventListener(_:_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean20gleanSetDebugViewTagySbSSF":{"name":"gleanSetDebugViewTag(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean17gleanSetDirtyFlagyySbF":{"name":"gleanSetDirtyFlag(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean24gleanSetExperimentActiveyySS_SSSDyS2SGtF":{"name":"gleanSetExperimentActive(_:_:_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean26gleanSetExperimentInactiveyySSF":{"name":"gleanSetExperimentInactive(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean25gleanSetExperimentationIdyySSF":{"name":"gleanSetExperimentationId(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean16gleanSetLogPingsyySbF":{"name":"gleanSetLogPings(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean18gleanSetSourceTagsySbSaySSGF":{"name":"gleanSetSourceTags(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean16gleanSetTestModeyySbF":{"name":"gleanSetTestMode(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean21gleanSetUploadEnabledyySbF":{"name":"gleanSetUploadEnabled(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean13gleanShutdownyyF":{"name":"gleanShutdown()","abstract":"

    Shuts down Glean in an orderly fashion.

    "},"Functions.html#/s:5Glean21gleanSubmitPingByNameyySS_SSSgtF":{"name":"gleanSubmitPingByName(_:_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean25gleanSubmitPingByNameSyncySbSS_SSSgtF":{"name":"gleanSubmitPingByNameSync(_:_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean016gleanTestDestroyA0yySb_SSSgtF":{"name":"gleanTestDestroyGlean(_:_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean26gleanTestGetExperimentDatayAA08RecordedE0VSgSSF":{"name":"gleanTestGetExperimentData(_:)","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean29gleanTestGetExperimentationIdSSSgyF":{"name":"gleanTestGetExperimentationId()","abstract":"

    Undocumented

    "},"Functions.html#/s:5Glean28gleanUnregisterEventListeneryySSF":{"name":"gleanUnregisterEventListener(_:)","abstract":"

    Undocumented

    "},"Extensions/String.html#/s:SS5GleanE16errorDescriptionSSSgvp":{"name":"errorDescription","abstract":"

    The string itself is the error description.

    ","parent_name":"String"},"Extensions/TimingDistributionMetricType.html#/s:5Glean24TimingDistributionMetricC7measure13funcToMeasurexxyXE_tlF":{"name":"measure(funcToMeasure:)","abstract":"

    Convenience method to simplify measuring a function or block of code

    ","parent_name":"TimingDistributionMetricType"},"Extensions/TimingDistributionMetricType.html#/s:5Glean24TimingDistributionMetricC7measure13funcToMeasurexxyKXE_tKlF":{"name":"measure(funcToMeasure:)","abstract":"

    Convenience method to simplify measuring a function or block of code

    ","parent_name":"TimingDistributionMetricType"},"Extensions/TimespanMetricType.html#/s:5Glean14TimespanMetricC7measure13funcToMeasurexxyXE_tlF":{"name":"measure(funcToMeasure:)","abstract":"

    Convenience method to simplify measuring a function or block of code

    ","parent_name":"TimespanMetricType"},"Extensions/TimespanMetricType.html#/s:5Glean14TimespanMetricC7measure13funcToMeasurexxyKXE_tKlF":{"name":"measure(funcToMeasure:)","abstract":"

    Convenience method to simplify measuring a function or block of code

    ","parent_name":"TimespanMetricType"},"Extensions/Array.html#/s:Sa5GleanSeRzSERzlE20intoSerializedObjectSSyF":{"name":"intoSerializedObject()","abstract":"

    Undocumented

    ","parent_name":"Array"},"Extensions/Array.html":{"name":"Array"},"Extensions/TimespanMetricType.html":{"name":"TimespanMetricType"},"Extensions/TimingDistributionMetricType.html":{"name":"TimingDistributionMetricType"},"Extensions/String.html":{"name":"String","abstract":"

    Turn a string into an error, so that it can be thrown as an exception.

    "},"Enums/NoReasonCodes.html#/s:5Glean11ReasonCodesP5indexSiyF":{"name":"index()","parent_name":"NoReasonCodes"},"Enums/UploadTaskAction.html#/s:5Glean16UploadTaskActionO4nextyA2CmF":{"name":"next","abstract":"

    Undocumented

    ","parent_name":"UploadTaskAction"},"Enums/UploadTaskAction.html#/s:5Glean16UploadTaskActionO3endyA2CmF":{"name":"end","abstract":"

    Undocumented

    ","parent_name":"UploadTaskAction"},"Enums/UploadResult.html#/s:5Glean12UploadResultO18recoverableFailureyACs4Int8V_tcACmF":{"name":"recoverableFailure(unused:)","abstract":"

    Undocumented

    ","parent_name":"UploadResult"},"Enums/UploadResult.html#/s:5Glean12UploadResultO20unrecoverableFailureyACs4Int8V_tcACmF":{"name":"unrecoverableFailure(unused:)","abstract":"

    Undocumented

    ","parent_name":"UploadResult"},"Enums/UploadResult.html#/s:5Glean12UploadResultO10httpStatusyACs5Int32V_tcACmF":{"name":"httpStatus(code:)","abstract":"

    Undocumented

    ","parent_name":"UploadResult"},"Enums/UploadResult.html#/s:5Glean12UploadResultO4doneyACs4Int8V_tcACmF":{"name":"done(unused:)","abstract":"

    Undocumented

    ","parent_name":"UploadResult"},"Enums/TimeUnit.html#/s:5Glean8TimeUnitO10nanosecondyA2CmF":{"name":"nanosecond","abstract":"

    Undocumented

    ","parent_name":"TimeUnit"},"Enums/TimeUnit.html#/s:5Glean8TimeUnitO11microsecondyA2CmF":{"name":"microsecond","abstract":"

    Undocumented

    ","parent_name":"TimeUnit"},"Enums/TimeUnit.html#/s:5Glean8TimeUnitO11millisecondyA2CmF":{"name":"millisecond","abstract":"

    Undocumented

    ","parent_name":"TimeUnit"},"Enums/TimeUnit.html#/s:5Glean8TimeUnitO6secondyA2CmF":{"name":"second","abstract":"

    Undocumented

    ","parent_name":"TimeUnit"},"Enums/TimeUnit.html#/s:5Glean8TimeUnitO6minuteyA2CmF":{"name":"minute","abstract":"

    Undocumented

    ","parent_name":"TimeUnit"},"Enums/TimeUnit.html#/s:5Glean8TimeUnitO4houryA2CmF":{"name":"hour","abstract":"

    Undocumented

    ","parent_name":"TimeUnit"},"Enums/TimeUnit.html#/s:5Glean8TimeUnitO3dayyA2CmF":{"name":"day","abstract":"

    Undocumented

    ","parent_name":"TimeUnit"},"Enums/PingUploadTask.html#/s:5Glean14PingUploadTaskO6uploadyAcA0B7RequestV_tcACmF":{"name":"upload(request:)","abstract":"

    Undocumented

    ","parent_name":"PingUploadTask"},"Enums/PingUploadTask.html#/s:5Glean14PingUploadTaskO4waityACs6UInt64V_tcACmF":{"name":"wait(time:)","abstract":"

    Undocumented

    ","parent_name":"PingUploadTask"},"Enums/PingUploadTask.html#/s:5Glean14PingUploadTaskO4doneyACs4Int8V_tcACmF":{"name":"done(unused:)","abstract":"

    Undocumented

    ","parent_name":"PingUploadTask"},"Enums/MemoryUnit.html#/s:5Glean10MemoryUnitO4byteyA2CmF":{"name":"byte","abstract":"

    Undocumented

    ","parent_name":"MemoryUnit"},"Enums/MemoryUnit.html#/s:5Glean10MemoryUnitO8kilobyteyA2CmF":{"name":"kilobyte","abstract":"

    Undocumented

    ","parent_name":"MemoryUnit"},"Enums/MemoryUnit.html#/s:5Glean10MemoryUnitO8megabyteyA2CmF":{"name":"megabyte","abstract":"

    Undocumented

    ","parent_name":"MemoryUnit"},"Enums/MemoryUnit.html#/s:5Glean10MemoryUnitO8gigabyteyA2CmF":{"name":"gigabyte","abstract":"

    Undocumented

    ","parent_name":"MemoryUnit"},"Enums/Lifetime.html#/s:5Glean8LifetimeO4pingyA2CmF":{"name":"ping","abstract":"

    Undocumented

    ","parent_name":"Lifetime"},"Enums/Lifetime.html#/s:5Glean8LifetimeO11applicationyA2CmF":{"name":"application","abstract":"

    Undocumented

    ","parent_name":"Lifetime"},"Enums/Lifetime.html#/s:5Glean8LifetimeO4useryA2CmF":{"name":"user","abstract":"

    Undocumented

    ","parent_name":"Lifetime"},"Enums/LevelFilter.html#/s:5Glean11LevelFilterO3offyA2CmF":{"name":"off","abstract":"

    Undocumented

    ","parent_name":"LevelFilter"},"Enums/LevelFilter.html#/s:5Glean11LevelFilterO5erroryA2CmF":{"name":"error","abstract":"

    Undocumented

    ","parent_name":"LevelFilter"},"Enums/LevelFilter.html#/s:5Glean11LevelFilterO4warnyA2CmF":{"name":"warn","abstract":"

    Undocumented

    ","parent_name":"LevelFilter"},"Enums/LevelFilter.html#/s:5Glean11LevelFilterO4infoyA2CmF":{"name":"info","abstract":"

    Undocumented

    ","parent_name":"LevelFilter"},"Enums/LevelFilter.html#/s:5Glean11LevelFilterO5debugyA2CmF":{"name":"debug","abstract":"

    Undocumented

    ","parent_name":"LevelFilter"},"Enums/LevelFilter.html#/s:5Glean11LevelFilterO5traceyA2CmF":{"name":"trace","abstract":"

    Undocumented

    ","parent_name":"LevelFilter"},"Enums/LabeledMetricData.html#/s:5Glean17LabeledMetricDataO6commonyAcA06CommoncD0V_tcACmF":{"name":"common(cmd:)","abstract":"

    Undocumented

    ","parent_name":"LabeledMetricData"},"Enums/LabeledMetricData.html#/s:5Glean17LabeledMetricDataO18customDistributionyAcA06CommoncD0V_s5Int64VA2hA13HistogramTypeOtcACmF":{"name":"customDistribution(cmd:rangeMin:rangeMax:bucketCount:histogramType:)","abstract":"

    Undocumented

    ","parent_name":"LabeledMetricData"},"Enums/LabeledMetricData.html#/s:5Glean17LabeledMetricDataO18memoryDistributionyAcA06CommoncD0V_AA10MemoryUnitOtcACmF":{"name":"memoryDistribution(cmd:unit:)","abstract":"

    Undocumented

    ","parent_name":"LabeledMetricData"},"Enums/LabeledMetricData.html#/s:5Glean17LabeledMetricDataO18timingDistributionyAcA06CommoncD0V_AA8TimeUnitOtcACmF":{"name":"timingDistribution(cmd:unit:)","abstract":"

    Undocumented

    ","parent_name":"LabeledMetricData"},"Enums/HistogramType.html#/s:5Glean13HistogramTypeO6linearyA2CmF":{"name":"linear","abstract":"

    Undocumented

    ","parent_name":"HistogramType"},"Enums/HistogramType.html#/s:5Glean13HistogramTypeO11exponentialyA2CmF":{"name":"exponential","abstract":"

    Undocumented

    ","parent_name":"HistogramType"},"Enums/ErrorType.html#/s:5Glean9ErrorTypeO12invalidValueyA2CmF":{"name":"invalidValue","abstract":"

    Undocumented

    ","parent_name":"ErrorType"},"Enums/ErrorType.html#/s:5Glean9ErrorTypeO12invalidLabelyA2CmF":{"name":"invalidLabel","abstract":"

    Undocumented

    ","parent_name":"ErrorType"},"Enums/ErrorType.html#/s:5Glean9ErrorTypeO12invalidStateyA2CmF":{"name":"invalidState","abstract":"

    Undocumented

    ","parent_name":"ErrorType"},"Enums/ErrorType.html#/s:5Glean9ErrorTypeO15invalidOverflowyA2CmF":{"name":"invalidOverflow","abstract":"

    Undocumented

    ","parent_name":"ErrorType"},"Enums/CallbackError.html#/s:5Glean13CallbackErrorO010UnexpectedC0yACSS_tcACmF":{"name":"UnexpectedError(message:)","abstract":"

    Undocumented

    ","parent_name":"CallbackError"},"Enums/CallbackError.html#/s:10Foundation14LocalizedErrorP16errorDescriptionSSSgvp":{"name":"errorDescription","parent_name":"CallbackError"},"Enums/CallbackError.html":{"name":"CallbackError","abstract":"

    Undocumented

    "},"Enums/ErrorType.html":{"name":"ErrorType","abstract":"

    Undocumented

    "},"Enums/HistogramType.html":{"name":"HistogramType","abstract":"

    Undocumented

    "},"Enums/LabeledMetricData.html":{"name":"LabeledMetricData","abstract":"

    Undocumented

    "},"Enums/LevelFilter.html":{"name":"LevelFilter","abstract":"

    Undocumented

    "},"Enums/Lifetime.html":{"name":"Lifetime","abstract":"

    Undocumented

    "},"Enums/MemoryUnit.html":{"name":"MemoryUnit","abstract":"

    Undocumented

    "},"Enums/PingUploadTask.html":{"name":"PingUploadTask","abstract":"

    Undocumented

    "},"Enums/TimeUnit.html":{"name":"TimeUnit","abstract":"

    Undocumented

    "},"Enums/UploadResult.html":{"name":"UploadResult","abstract":"

    Undocumented

    "},"Enums/UploadTaskAction.html":{"name":"UploadTaskAction","abstract":"

    Undocumented

    "},"Enums.html#/s:5Glean0A7MetricsO":{"name":"GleanMetrics","abstract":"

    Namespace for user metrics

    "},"Enums/NoReasonCodes.html":{"name":"NoReasonCodes","abstract":"

    Default of no reason codes for pings.

    "},"Classes/HttpPingUploader.html#/s:5Glean16HttpPingUploaderC13configuration7sessionAcA13ConfigurationV_So12NSURLSessionCtcfc":{"name":"init(configuration:session:)","abstract":"

    Initialize the HTTP Ping uploader from a Glean configuration object","parent_name":"HttpPingUploader"},"Classes/UuidMetricType.html#/s:5Glean14UuidMetricTypeCyAcA06CommonC4DataVcfc":{"name":"init(_:)","abstract":"

    The public constructor used by automatically generated metrics.

    ","parent_name":"UuidMetricType"},"Classes/UuidMetricType.html#/s:5Glean14UuidMetricTypeC14generateAndSet10Foundation4UUIDVyF":{"name":"generateAndSet()","abstract":"

    Generate a new UUID and set it in the metric store.

    ","parent_name":"UuidMetricType"},"Classes/UuidMetricType.html#/s:5Glean14UuidMetricTypeC3setyy10Foundation4UUIDVF":{"name":"set(_:)","abstract":"

    Explicitly set an existing UUID value.

    ","parent_name":"UuidMetricType"},"Classes/UuidMetricType.html#/s:5Glean14UuidMetricTypeC12testGetValuey10Foundation4UUIDVSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Returns the stored value for testing purposes only. This function will attempt to await the","parent_name":"UuidMetricType"},"Classes/UrlMetricType.html#/s:5Glean13UrlMetricTypeCyAcA06CommonC4DataVcfc":{"name":"init(_:)","abstract":"

    The public constructor used by automatically generated metrics.

    ","parent_name":"UrlMetricType"},"Classes/UrlMetricType.html#/s:5Glean13UrlMetricTypeC3set3urly10Foundation3URLV_tF":{"name":"set(url:)","abstract":"

    Set a URL value.

    ","parent_name":"UrlMetricType"},"Classes/UrlMetricType.html#/s:5Glean13UrlMetricTypeC3setyySSF":{"name":"set(_:)","abstract":"

    Set a URL value.

    ","parent_name":"UrlMetricType"},"Classes/UrlMetricType.html#/s:5Glean13UrlMetricTypeC12testGetValueySSSgAEF":{"name":"testGetValue(_:)","abstract":"

    Returns the stored value for testing purposes only. This function will attempt to await the","parent_name":"UrlMetricType"},"Classes/UrlMetricType.html#/s:5Glean13UrlMetricTypeC24testGetNumRecordedErrorsys5Int32VAA05ErrorD0OF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Returns the number of errors recorded for the given metric.

    ","parent_name":"UrlMetricType"},"Classes/Ping.html#/s:5Glean4PingC4name15includeClientId11sendIfEmpty17preciseTimestamps0D12InfoSections7enabled14schedulesPings11reasonCodesACyxGSS_S5bSaySSGAMtcfc":{"name":"init(name:includeClientId:sendIfEmpty:preciseTimestamps:includeInfoSections:enabled:schedulesPings:reasonCodes:)","abstract":"

    The public constructor used by automatically generated metrics.

    ","parent_name":"Ping"},"Classes/Ping.html#/s:5Glean4PingC20testBeforeNextSubmit2cbyyxSgKc_tF":{"name":"testBeforeNextSubmit(cb:)","abstract":"

    Test-only API

    ","parent_name":"Ping"},"Classes/Ping.html#/s:5Glean4PingC6submit6reasonyxSg_tF":{"name":"submit(reason:)","abstract":"

    Collect and submit the ping for eventual uploading.

    ","parent_name":"Ping"},"Classes/ObjectMetricType.html#/s:5Glean16ObjectMetricTypeCyACyxGAA06CommonC4DataVcfc":{"name":"init(_:)","abstract":"

    The public constructor used by automatically generated metrics.

    ","parent_name":"ObjectMetricType"},"Classes/ObjectMetricType.html#/s:5Glean16ObjectMetricTypeC3setyyxF":{"name":"set(_:)","abstract":"

    Sets to the associated structure.

    ","parent_name":"ObjectMetricType"},"Classes/ObjectMetricType.html#/s:5Glean16ObjectMetricTypeC12testGetValueyxSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Returns the stored value for testing purposes only. This function will attempt to await the","parent_name":"ObjectMetricType"},"Classes/ObjectMetricType.html#/s:5Glean16ObjectMetricTypeC24testGetNumRecordedErrorsys5Int32VAA05ErrorD0OF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Returns the number of errors recorded for the given metric.

    ","parent_name":"ObjectMetricType"},"Classes/LabeledMetricType.html#/s:5Glean17LabeledMetricTypeC8category4name11sendInPings8lifetime8disabled03subC06labelsACyxGSS_SSSaySSGAA8LifetimeOSbxALSgtKcfc":{"name":"init(category:name:sendInPings:lifetime:disabled:subMetric:labels:)","abstract":"

    The public constructor used by automatically generated metrics.

    ","parent_name":"LabeledMetricType"},"Classes/LabeledMetricType.html#/s:5Glean17LabeledMetricTypeCyxSScip":{"name":"subscript(_:)","abstract":"

    Get the specific metric for a given label.

    ","parent_name":"LabeledMetricType"},"Classes/LabeledMetricType.html#/s:5Glean17LabeledMetricTypeC24testGetNumRecordedErrorsys5Int32VAA05ErrorD0OF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Returns the number of errors recorded for the given metric.

    ","parent_name":"LabeledMetricType"},"Classes/EventMetricType.html#/s:5Glean15EventMetricTypeCyACyxGAA06CommonC4DataV_SaySSGSgtcfc":{"name":"init(_:_:)","abstract":"

    The public constructor used by automatically generated metrics.

    ","parent_name":"EventMetricType"},"Classes/EventMetricType.html#/s:5Glean15EventMetricTypeC6recordyyxSgF":{"name":"record(_:)","abstract":"

    Undocumented

    ","parent_name":"EventMetricType"},"Classes/EventMetricType.html#/s:5Glean15EventMetricTypeC12testGetValueySayAA08RecordedB0VGSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Returns the stored value for testing purposes only. This function will attempt to await the","parent_name":"EventMetricType"},"Classes/EventMetricType.html#/s:5Glean15EventMetricTypeC24testGetNumRecordedErrorsys5Int32VAA05ErrorD0OF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Returns the number of errors recorded for the given metric.

    ","parent_name":"EventMetricType"},"Classes/NoExtras.html#/s:5Glean11EventExtrasP13toExtraRecordSDyS2SGyF":{"name":"toExtraRecord()","parent_name":"NoExtras"},"Classes/DatetimeMetricType.html#/s:5Glean18DatetimeMetricTypeCyAcA06CommonC4DataV_AA8TimeUnitOtcfc":{"name":"init(_:_:)","abstract":"

    The public constructor used by automatically generated metrics.

    ","parent_name":"DatetimeMetricType"},"Classes/DatetimeMetricType.html#/s:5Glean18DatetimeMetricTypeC3setyy10Foundation4DateVF":{"name":"set(_:)","abstract":"

    Set a datetime value, truncating it to the metric’s resolution.

    ","parent_name":"DatetimeMetricType"},"Classes/DatetimeMetricType.html#/s:5Glean18DatetimeMetricTypeC20testGetValueAsStringySSSgAEF":{"name":"testGetValueAsString(_:)","abstract":"

    Returns the string representation of the stored value for testing purposes only. This function","parent_name":"DatetimeMetricType"},"Classes/DatetimeMetricType.html#/s:5Glean18DatetimeMetricTypeC12testGetValuey10Foundation4DateVSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Returns the stored value for testing purposes only. This function will attempt to await the","parent_name":"DatetimeMetricType"},"Classes/DatetimeMetricType.html#/s:5Glean18DatetimeMetricTypeC24testGetNumRecordedErrorsys5Int32VAA05ErrorD0OF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Returns the number of errors recorded for the given metric.

    ","parent_name":"DatetimeMetricType"},"Classes/Glean.html#/s:5GleanAAC6sharedABvpZ":{"name":"shared","abstract":"

    The main Glean object.

    ","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC10initialize13uploadEnabled13configuration9buildInfoySb_AA13ConfigurationVAA05BuildG0VtF":{"name":"initialize(uploadEnabled:configuration:buildInfo:)","abstract":"

    Initialize the Glean SDK.

    ","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC16setUploadEnabledyySbF":{"name":"setUploadEnabled(_:)","abstract":"

    Enable or disable Glean collection and upload.

    ","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC19setExperimentActive_6branch5extraySS_SSSDyS2SGSgtF":{"name":"setExperimentActive(_:branch:extra:)","abstract":"

    Used to indicate that an experiment is running.

    ","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC21setExperimentInactiveyySSF":{"name":"setExperimentInactive(_:)","abstract":"

    Used to indicate that an experiment is no longer running.

    ","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC22testIsExperimentActiveySbSSF":{"name":"testIsExperimentActive(_:)","abstract":"

    Tests whether an experiment is active, for testing purposes only.

    ","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC21testGetExperimentDatayAA08RecordedD0VSgSSF":{"name":"testGetExperimentData(_:)","abstract":"

    PUBLIC TEST ONLY FUNCTION.

    ","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC20setExperimentationIdyySSF":{"name":"setExperimentationId(_:)","abstract":"

    Dynamically set the experimentation identifier, as opposed to setting it through the configuration","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC24testGetExperimentationIdSSSgyF":{"name":"testGetExperimentationId()","abstract":"

    PUBLIC TEST ONLY FUNCTION.

    ","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC13registerPingsyyypF":{"name":"registerPings(_:)","abstract":"

    Register the pings generated from pings.yaml with the Glean SDK.

    ","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC15setDebugViewTagySbSSF":{"name":"setDebugViewTag(_:)","abstract":"

    Set a tag to be applied to headers when uploading pings for debug view.","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC11setLogPingsyySbF":{"name":"setLogPings(_:)","abstract":"

    Set the log_pings debug option,","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC13setSourceTagsySbSaySSGF":{"name":"setSourceTags(_:)","abstract":"

    Set the source tags to be applied as headers when uploading pings.

    ","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC21registerEventListener3tag8listenerySS_AA0acD0_ptF":{"name":"registerEventListener(tag:listener:)","abstract":"

    EXPERIMENTAL: Register a listener to receive notification of event recordings

    ","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC23unregisterEventListener3tagySS_tF":{"name":"unregisterEventListener(tag:)","abstract":"

    EXPERIMENTAL: Unregister a listener to receive notification of event recordings

    ","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC22applyServerKnobsConfigyySSF":{"name":"applyServerKnobsConfig(_:)","abstract":"

    Set configuration to override metrics’ default enabled/disabled state, typically from","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC8shutdownyyF":{"name":"shutdown()","abstract":"

    Shuts down Glean in an orderly fashion

    ","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC15handleCustomUrl3urly10Foundation3URLV_tF":{"name":"handleCustomUrl(url:)","abstract":"

    When applications are launched using the custom URL scheme, this helper function will process","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC17enableTestingModeyyF":{"name":"enableTestingMode()","abstract":"

    PUBLIC TEST ONLY FUNCTION.

    ","parent_name":"Glean"},"Classes/Glean.html#/s:5GleanAAC05resetA013configuration11clearStores13uploadEnabledyAA13ConfigurationV_S2btF":{"name":"resetGlean(configuration:clearStores:uploadEnabled:)","abstract":"

    PUBLIC TEST ONLY FUNCTION.

    ","parent_name":"Glean"},"Classes/UuidMetric/NoPointer.html#/s:5Glean10UuidMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/UuidMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"UuidMetric"},"Classes/UuidMetric.html#/s:5Glean10UuidMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"UuidMetric"},"Classes/UuidMetric.html#/s:5Glean10UuidMetricC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"UuidMetric"},"Classes/UuidMetric.html#/s:5Glean10UuidMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"UuidMetric"},"Classes/UuidMetric.html#/s:5Glean10UuidMetricCyAcA06CommonC4DataVcfc":{"name":"init(_:)","abstract":"

    Undocumented

    ","parent_name":"UuidMetric"},"Classes/UuidMetric.html#/s:5Glean10UuidMetricC14generateAndSetSSyF":{"name":"generateAndSet()","abstract":"

    Undocumented

    ","parent_name":"UuidMetric"},"Classes/UuidMetric.html#/s:5Glean10UuidMetricC3setyySSF":{"name":"set(_:)","abstract":"

    Undocumented

    ","parent_name":"UuidMetric"},"Classes/UuidMetric.html#/s:5Glean10UuidMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"UuidMetric"},"Classes/UuidMetric.html#/s:5Glean10UuidMetricC12testGetValueySSSgAEF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"UuidMetric"},"Classes/UrlMetric/NoPointer.html#/s:5Glean9UrlMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/UrlMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"UrlMetric"},"Classes/UrlMetric.html#/s:5Glean9UrlMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"UrlMetric"},"Classes/UrlMetric.html#/s:5Glean9UrlMetricC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"UrlMetric"},"Classes/UrlMetric.html#/s:5Glean9UrlMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"UrlMetric"},"Classes/UrlMetric.html#/s:5Glean9UrlMetricCyAcA06CommonC4DataVcfc":{"name":"init(_:)","abstract":"

    Undocumented

    ","parent_name":"UrlMetric"},"Classes/UrlMetric.html#/s:5Glean9UrlMetricC3setyySSF":{"name":"set(_:)","abstract":"

    Undocumented

    ","parent_name":"UrlMetric"},"Classes/UrlMetric.html#/s:5Glean9UrlMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"UrlMetric"},"Classes/UrlMetric.html#/s:5Glean9UrlMetricC12testGetValueySSSgAEF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"UrlMetric"},"Classes/TimingDistributionMetric/NoPointer.html#/s:5Glean24TimingDistributionMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/TimingDistributionMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"TimingDistributionMetric"},"Classes/TimingDistributionMetric.html#/s:5Glean24TimingDistributionMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"TimingDistributionMetric"},"Classes/TimingDistributionMetric.html#/s:5Glean24TimingDistributionMetricC9noPointerA2C02NoF0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"TimingDistributionMetric"},"Classes/TimingDistributionMetric.html#/s:5Glean24TimingDistributionMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"TimingDistributionMetric"},"Classes/TimingDistributionMetric.html#/s:5Glean24TimingDistributionMetricCyAcA06CommonD4DataV_AA8TimeUnitOtcfc":{"name":"init(_:_:)","abstract":"

    Undocumented

    ","parent_name":"TimingDistributionMetric"},"Classes/TimingDistributionMetric.html#/s:5Glean24TimingDistributionMetricC17accumulateSamplesyySays5Int64VGF":{"name":"accumulateSamples(_:)","abstract":"

    Undocumented

    ","parent_name":"TimingDistributionMetric"},"Classes/TimingDistributionMetric.html#/s:5Glean24TimingDistributionMetricC22accumulateSingleSampleyys5Int64VF":{"name":"accumulateSingleSample(_:)","abstract":"

    Undocumented

    ","parent_name":"TimingDistributionMetric"},"Classes/TimingDistributionMetric.html#/s:5Glean24TimingDistributionMetricC6cancelyyAA7TimerIdVF":{"name":"cancel(_:)","abstract":"

    Undocumented

    ","parent_name":"TimingDistributionMetric"},"Classes/TimingDistributionMetric.html#/s:5Glean24TimingDistributionMetricC5startAA7TimerIdVyF":{"name":"start()","abstract":"

    Undocumented

    ","parent_name":"TimingDistributionMetric"},"Classes/TimingDistributionMetric.html#/s:5Glean24TimingDistributionMetricC17stopAndAccumulateyyAA7TimerIdVF":{"name":"stopAndAccumulate(_:)","abstract":"

    Undocumented

    ","parent_name":"TimingDistributionMetric"},"Classes/TimingDistributionMetric.html#/s:5Glean24TimingDistributionMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"TimingDistributionMetric"},"Classes/TimingDistributionMetric.html#/s:5Glean24TimingDistributionMetricC12testGetValueyAA0C4DataVSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"TimingDistributionMetric"},"Classes/TimespanMetric/NoPointer.html#/s:5Glean14TimespanMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/TimespanMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"TimespanMetric"},"Classes/TimespanMetric.html#/s:5Glean14TimespanMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"TimespanMetric"},"Classes/TimespanMetric.html#/s:5Glean14TimespanMetricC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"TimespanMetric"},"Classes/TimespanMetric.html#/s:5Glean14TimespanMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"TimespanMetric"},"Classes/TimespanMetric.html#/s:5Glean14TimespanMetricCyAcA06CommonC4DataV_AA8TimeUnitOtcfc":{"name":"init(_:_:)","abstract":"

    Undocumented

    ","parent_name":"TimespanMetric"},"Classes/TimespanMetric.html#/s:5Glean14TimespanMetricC6cancelyyF":{"name":"cancel()","abstract":"

    Undocumented

    ","parent_name":"TimespanMetric"},"Classes/TimespanMetric.html#/s:5Glean14TimespanMetricC11setRawNanosyys5Int64VF":{"name":"setRawNanos(_:)","abstract":"

    Undocumented

    ","parent_name":"TimespanMetric"},"Classes/TimespanMetric.html#/s:5Glean14TimespanMetricC5startyyF":{"name":"start()","abstract":"

    Undocumented

    ","parent_name":"TimespanMetric"},"Classes/TimespanMetric.html#/s:5Glean14TimespanMetricC4stopyyF":{"name":"stop()","abstract":"

    Undocumented

    ","parent_name":"TimespanMetric"},"Classes/TimespanMetric.html#/s:5Glean14TimespanMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"TimespanMetric"},"Classes/TimespanMetric.html#/s:5Glean14TimespanMetricC12testGetValueys5Int64VSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"TimespanMetric"},"Classes/TextMetric/NoPointer.html#/s:5Glean10TextMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/TextMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"TextMetric"},"Classes/TextMetric.html#/s:5Glean10TextMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"TextMetric"},"Classes/TextMetric.html#/s:5Glean10TextMetricC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"TextMetric"},"Classes/TextMetric.html#/s:5Glean10TextMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"TextMetric"},"Classes/TextMetric.html#/s:5Glean10TextMetricCyAcA06CommonC4DataVcfc":{"name":"init(_:)","abstract":"

    Undocumented

    ","parent_name":"TextMetric"},"Classes/TextMetric.html#/s:5Glean10TextMetricC3setyySSF":{"name":"set(_:)","abstract":"

    Undocumented

    ","parent_name":"TextMetric"},"Classes/TextMetric.html#/s:5Glean10TextMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"TextMetric"},"Classes/TextMetric.html#/s:5Glean10TextMetricC12testGetValueySSSgAEF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"TextMetric"},"Classes/StringMetric/NoPointer.html#/s:5Glean12StringMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/StringMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"StringMetric"},"Classes/StringMetric.html#/s:5Glean12StringMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"StringMetric"},"Classes/StringMetric.html#/s:5Glean12StringMetricC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"StringMetric"},"Classes/StringMetric.html#/s:5Glean12StringMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"StringMetric"},"Classes/StringMetric.html#/s:5Glean12StringMetricCyAcA06CommonC4DataVcfc":{"name":"init(_:)","abstract":"

    Undocumented

    ","parent_name":"StringMetric"},"Classes/StringMetric.html#/s:5Glean12StringMetricC3setyySSF":{"name":"set(_:)","abstract":"

    Undocumented

    ","parent_name":"StringMetric"},"Classes/StringMetric.html#/s:5Glean12StringMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"StringMetric"},"Classes/StringMetric.html#/s:5Glean12StringMetricC12testGetValueySSSgAEF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"StringMetric"},"Classes/StringListMetric/NoPointer.html#/s:5Glean16StringListMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/StringListMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"StringListMetric"},"Classes/StringListMetric.html#/s:5Glean16StringListMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"StringListMetric"},"Classes/StringListMetric.html#/s:5Glean16StringListMetricC9noPointerA2C02NoF0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"StringListMetric"},"Classes/StringListMetric.html#/s:5Glean16StringListMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"StringListMetric"},"Classes/StringListMetric.html#/s:5Glean16StringListMetricCyAcA06CommonD4DataVcfc":{"name":"init(_:)","abstract":"

    Undocumented

    ","parent_name":"StringListMetric"},"Classes/StringListMetric.html#/s:5Glean16StringListMetricC3addyySSF":{"name":"add(_:)","abstract":"

    Undocumented

    ","parent_name":"StringListMetric"},"Classes/StringListMetric.html#/s:5Glean16StringListMetricC3setyySaySSGF":{"name":"set(_:)","abstract":"

    Undocumented

    ","parent_name":"StringListMetric"},"Classes/StringListMetric.html#/s:5Glean16StringListMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"StringListMetric"},"Classes/StringListMetric.html#/s:5Glean16StringListMetricC12testGetValueySaySSGSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"StringListMetric"},"Classes/RateMetric/NoPointer.html#/s:5Glean10RateMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/RateMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"RateMetric"},"Classes/RateMetric.html#/s:5Glean10RateMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"RateMetric"},"Classes/RateMetric.html#/s:5Glean10RateMetricC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"RateMetric"},"Classes/RateMetric.html#/s:5Glean10RateMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"RateMetric"},"Classes/RateMetric.html#/s:5Glean10RateMetricCyAcA06CommonC4DataVcfc":{"name":"init(_:)","abstract":"

    Undocumented

    ","parent_name":"RateMetric"},"Classes/RateMetric.html#/s:5Glean10RateMetricC16addToDenominatoryys5Int32VF":{"name":"addToDenominator(_:)","abstract":"

    Undocumented

    ","parent_name":"RateMetric"},"Classes/RateMetric.html#/s:5Glean10RateMetricC14addToNumeratoryys5Int32VF":{"name":"addToNumerator(_:)","abstract":"

    Undocumented

    ","parent_name":"RateMetric"},"Classes/RateMetric.html#/s:5Glean10RateMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"RateMetric"},"Classes/RateMetric.html#/s:5Glean10RateMetricC12testGetValueyAA0B0VSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"RateMetric"},"Classes/QuantityMetric/NoPointer.html#/s:5Glean14QuantityMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/QuantityMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"QuantityMetric"},"Classes/QuantityMetric.html#/s:5Glean14QuantityMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"QuantityMetric"},"Classes/QuantityMetric.html#/s:5Glean14QuantityMetricC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"QuantityMetric"},"Classes/QuantityMetric.html#/s:5Glean14QuantityMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"QuantityMetric"},"Classes/QuantityMetric.html#/s:5Glean14QuantityMetricCyAcA06CommonC4DataVcfc":{"name":"init(_:)","abstract":"

    Undocumented

    ","parent_name":"QuantityMetric"},"Classes/QuantityMetric.html#/s:5Glean14QuantityMetricC3setyys5Int64VF":{"name":"set(_:)","abstract":"

    Undocumented

    ","parent_name":"QuantityMetric"},"Classes/QuantityMetric.html#/s:5Glean14QuantityMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"QuantityMetric"},"Classes/QuantityMetric.html#/s:5Glean14QuantityMetricC12testGetValueys5Int64VSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"QuantityMetric"},"Classes/PingType/NoPointer.html#/s:5Glean8PingTypeC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/PingType/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"PingType"},"Classes/PingType.html#/s:5Glean8PingTypeC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"PingType"},"Classes/PingType.html#/s:5Glean8PingTypeC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"PingType"},"Classes/PingType.html#/s:5Glean8PingTypeC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"PingType"},"Classes/PingType.html#/s:5Glean8PingTypeCyACSS_S5bSaySSGADtcfc":{"name":"init(_:_:_:_:_:_:_:_:)","abstract":"

    Undocumented

    ","parent_name":"PingType"},"Classes/PingType.html#/s:5Glean8PingTypeC6submityySSSgF":{"name":"submit(_:)","abstract":"

    Undocumented

    ","parent_name":"PingType"},"Classes/ObjectMetric/NoPointer.html#/s:5Glean12ObjectMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/ObjectMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"ObjectMetric"},"Classes/ObjectMetric.html#/s:5Glean12ObjectMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"ObjectMetric"},"Classes/ObjectMetric.html#/s:5Glean12ObjectMetricC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"ObjectMetric"},"Classes/ObjectMetric.html#/s:5Glean12ObjectMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"ObjectMetric"},"Classes/ObjectMetric.html#/s:5Glean12ObjectMetricCyAcA06CommonC4DataVcfc":{"name":"init(_:)","abstract":"

    Undocumented

    ","parent_name":"ObjectMetric"},"Classes/ObjectMetric.html#/s:5Glean12ObjectMetricC17recordSchemaErroryyF":{"name":"recordSchemaError()","abstract":"

    Undocumented

    ","parent_name":"ObjectMetric"},"Classes/ObjectMetric.html#/s:5Glean12ObjectMetricC9setStringyySSF":{"name":"setString(_:)","abstract":"

    Undocumented

    ","parent_name":"ObjectMetric"},"Classes/ObjectMetric.html#/s:5Glean12ObjectMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"ObjectMetric"},"Classes/ObjectMetric.html#/s:5Glean12ObjectMetricC12testGetValueySSSgAEF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"ObjectMetric"},"Classes/NumeratorMetric/NoPointer.html#/s:5Glean15NumeratorMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/NumeratorMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"NumeratorMetric"},"Classes/NumeratorMetric.html#/s:5Glean15NumeratorMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"NumeratorMetric"},"Classes/NumeratorMetric.html#/s:5Glean15NumeratorMetricC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"NumeratorMetric"},"Classes/NumeratorMetric.html#/s:5Glean15NumeratorMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"NumeratorMetric"},"Classes/NumeratorMetric.html#/s:5Glean15NumeratorMetricCyAcA06CommonC4DataVcfc":{"name":"init(_:)","abstract":"

    Undocumented

    ","parent_name":"NumeratorMetric"},"Classes/NumeratorMetric.html#/s:5Glean15NumeratorMetricC05addToB0yys5Int32VF":{"name":"addToNumerator(_:)","abstract":"

    Undocumented

    ","parent_name":"NumeratorMetric"},"Classes/NumeratorMetric.html#/s:5Glean15NumeratorMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"NumeratorMetric"},"Classes/NumeratorMetric.html#/s:5Glean15NumeratorMetricC12testGetValueyAA4RateVSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"NumeratorMetric"},"Classes/MemoryDistributionMetric/NoPointer.html#/s:5Glean24MemoryDistributionMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/MemoryDistributionMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"MemoryDistributionMetric"},"Classes/MemoryDistributionMetric.html#/s:5Glean24MemoryDistributionMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"MemoryDistributionMetric"},"Classes/MemoryDistributionMetric.html#/s:5Glean24MemoryDistributionMetricC9noPointerA2C02NoF0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"MemoryDistributionMetric"},"Classes/MemoryDistributionMetric.html#/s:5Glean24MemoryDistributionMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"MemoryDistributionMetric"},"Classes/MemoryDistributionMetric.html#/s:5Glean24MemoryDistributionMetricCyAcA06CommonD4DataV_AA0B4UnitOtcfc":{"name":"init(_:_:)","abstract":"

    Undocumented

    ","parent_name":"MemoryDistributionMetric"},"Classes/MemoryDistributionMetric.html#/s:5Glean24MemoryDistributionMetricC10accumulateyys5Int64VF":{"name":"accumulate(_:)","abstract":"

    Undocumented

    ","parent_name":"MemoryDistributionMetric"},"Classes/MemoryDistributionMetric.html#/s:5Glean24MemoryDistributionMetricC17accumulateSamplesyySays5Int64VGF":{"name":"accumulateSamples(_:)","abstract":"

    Undocumented

    ","parent_name":"MemoryDistributionMetric"},"Classes/MemoryDistributionMetric.html#/s:5Glean24MemoryDistributionMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"MemoryDistributionMetric"},"Classes/MemoryDistributionMetric.html#/s:5Glean24MemoryDistributionMetricC12testGetValueyAA0C4DataVSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"MemoryDistributionMetric"},"Classes/LabeledString/NoPointer.html#/s:5Glean13LabeledStringC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/LabeledString/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"LabeledString"},"Classes/LabeledString.html#/s:5Glean13LabeledStringC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"LabeledString"},"Classes/LabeledString.html#/s:5Glean13LabeledStringC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"LabeledString"},"Classes/LabeledString.html#/s:5Glean13LabeledStringC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"LabeledString"},"Classes/LabeledString.html#/s:5Glean13LabeledStringCyAcA0B10MetricDataO_SaySSGSgtcfc":{"name":"init(_:_:)","abstract":"

    Undocumented

    ","parent_name":"LabeledString"},"Classes/LabeledString.html#/s:5Glean13LabeledStringC3getyAA0C6MetricCSSF":{"name":"get(_:)","abstract":"

    Undocumented

    ","parent_name":"LabeledString"},"Classes/LabeledString.html#/s:5Glean13LabeledStringC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"LabeledString"},"Classes/LabeledCounter/NoPointer.html#/s:5Glean14LabeledCounterC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/LabeledCounter/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"LabeledCounter"},"Classes/LabeledCounter.html#/s:5Glean14LabeledCounterC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"LabeledCounter"},"Classes/LabeledCounter.html#/s:5Glean14LabeledCounterC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"LabeledCounter"},"Classes/LabeledCounter.html#/s:5Glean14LabeledCounterC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"LabeledCounter"},"Classes/LabeledCounter.html#/s:5Glean14LabeledCounterCyAcA0B10MetricDataO_SaySSGSgtcfc":{"name":"init(_:_:)","abstract":"

    Undocumented

    ","parent_name":"LabeledCounter"},"Classes/LabeledCounter.html#/s:5Glean14LabeledCounterC3getyAA0C6MetricCSSF":{"name":"get(_:)","abstract":"

    Undocumented

    ","parent_name":"LabeledCounter"},"Classes/LabeledCounter.html#/s:5Glean14LabeledCounterC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"LabeledCounter"},"Classes/LabeledBoolean/NoPointer.html#/s:5Glean14LabeledBooleanC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/LabeledBoolean/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"LabeledBoolean"},"Classes/LabeledBoolean.html#/s:5Glean14LabeledBooleanC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"LabeledBoolean"},"Classes/LabeledBoolean.html#/s:5Glean14LabeledBooleanC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"LabeledBoolean"},"Classes/LabeledBoolean.html#/s:5Glean14LabeledBooleanC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"LabeledBoolean"},"Classes/LabeledBoolean.html#/s:5Glean14LabeledBooleanCyAcA0B10MetricDataO_SaySSGSgtcfc":{"name":"init(_:_:)","abstract":"

    Undocumented

    ","parent_name":"LabeledBoolean"},"Classes/LabeledBoolean.html#/s:5Glean14LabeledBooleanC3getyAA0C6MetricCSSF":{"name":"get(_:)","abstract":"

    Undocumented

    ","parent_name":"LabeledBoolean"},"Classes/LabeledBoolean.html#/s:5Glean14LabeledBooleanC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"LabeledBoolean"},"Classes/EventMetric/NoPointer.html#/s:5Glean11EventMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/EventMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"EventMetric"},"Classes/EventMetric.html#/s:5Glean11EventMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"EventMetric"},"Classes/EventMetric.html#/s:5Glean11EventMetricC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"EventMetric"},"Classes/EventMetric.html#/s:5Glean11EventMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"EventMetric"},"Classes/EventMetric.html#/s:5Glean11EventMetricCyAcA06CommonC4DataV_SaySSGtcfc":{"name":"init(_:_:)","abstract":"

    Undocumented

    ","parent_name":"EventMetric"},"Classes/EventMetric.html#/s:5Glean11EventMetricC6recordyySDyS2SGF":{"name":"record(_:)","abstract":"

    Undocumented

    ","parent_name":"EventMetric"},"Classes/EventMetric.html#/s:5Glean11EventMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"EventMetric"},"Classes/EventMetric.html#/s:5Glean11EventMetricC12testGetValueySayAA08RecordedB0VGSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"EventMetric"},"Classes/DenominatorMetric/NoPointer.html#/s:5Glean17DenominatorMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/DenominatorMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"DenominatorMetric"},"Classes/DenominatorMetric.html#/s:5Glean17DenominatorMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"DenominatorMetric"},"Classes/DenominatorMetric.html#/s:5Glean17DenominatorMetricC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"DenominatorMetric"},"Classes/DenominatorMetric.html#/s:5Glean17DenominatorMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"DenominatorMetric"},"Classes/DenominatorMetric.html#/s:5Glean17DenominatorMetricCyAcA06CommonC4DataV_SayAEGtcfc":{"name":"init(_:_:)","abstract":"

    Undocumented

    ","parent_name":"DenominatorMetric"},"Classes/DenominatorMetric.html#/s:5Glean17DenominatorMetricC3addyys5Int32VF":{"name":"add(_:)","abstract":"

    Undocumented

    ","parent_name":"DenominatorMetric"},"Classes/DenominatorMetric.html#/s:5Glean17DenominatorMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"DenominatorMetric"},"Classes/DenominatorMetric.html#/s:5Glean17DenominatorMetricC12testGetValueys5Int32VSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"DenominatorMetric"},"Classes/DatetimeMetric/NoPointer.html#/s:5Glean14DatetimeMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/DatetimeMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"DatetimeMetric"},"Classes/DatetimeMetric.html#/s:5Glean14DatetimeMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"DatetimeMetric"},"Classes/DatetimeMetric.html#/s:5Glean14DatetimeMetricC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"DatetimeMetric"},"Classes/DatetimeMetric.html#/s:5Glean14DatetimeMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"DatetimeMetric"},"Classes/DatetimeMetric.html#/s:5Glean14DatetimeMetricCyAcA06CommonC4DataV_AA8TimeUnitOtcfc":{"name":"init(_:_:)","abstract":"

    Undocumented

    ","parent_name":"DatetimeMetric"},"Classes/DatetimeMetric.html#/s:5Glean14DatetimeMetricC3setyyAA0B0VSgF":{"name":"set(_:)","abstract":"

    Undocumented

    ","parent_name":"DatetimeMetric"},"Classes/DatetimeMetric.html#/s:5Glean14DatetimeMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"DatetimeMetric"},"Classes/DatetimeMetric.html#/s:5Glean14DatetimeMetricC12testGetValueyAA0B0VSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"DatetimeMetric"},"Classes/DatetimeMetric.html#/s:5Glean14DatetimeMetricC20testGetValueAsStringySSSgAEF":{"name":"testGetValueAsString(_:)","abstract":"

    Undocumented

    ","parent_name":"DatetimeMetric"},"Classes/CustomDistributionMetric/NoPointer.html#/s:5Glean24CustomDistributionMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/CustomDistributionMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"CustomDistributionMetric"},"Classes/CustomDistributionMetric.html#/s:5Glean24CustomDistributionMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"CustomDistributionMetric"},"Classes/CustomDistributionMetric.html#/s:5Glean24CustomDistributionMetricC9noPointerA2C02NoF0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"CustomDistributionMetric"},"Classes/CustomDistributionMetric.html#/s:5Glean24CustomDistributionMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"CustomDistributionMetric"},"Classes/CustomDistributionMetric.html#/s:5Glean24CustomDistributionMetricCyAcA06CommonD4DataV_s5Int64VA2gA13HistogramTypeOtcfc":{"name":"init(_:_:_:_:_:)","abstract":"

    Undocumented

    ","parent_name":"CustomDistributionMetric"},"Classes/CustomDistributionMetric.html#/s:5Glean24CustomDistributionMetricC17accumulateSamplesyySays5Int64VGF":{"name":"accumulateSamples(_:)","abstract":"

    Undocumented

    ","parent_name":"CustomDistributionMetric"},"Classes/CustomDistributionMetric.html#/s:5Glean24CustomDistributionMetricC22accumulateSingleSampleyys5Int64VF":{"name":"accumulateSingleSample(_:)","abstract":"

    Undocumented

    ","parent_name":"CustomDistributionMetric"},"Classes/CustomDistributionMetric.html#/s:5Glean24CustomDistributionMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"CustomDistributionMetric"},"Classes/CustomDistributionMetric.html#/s:5Glean24CustomDistributionMetricC12testGetValueyAA0C4DataVSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"CustomDistributionMetric"},"Classes/CounterMetric/NoPointer.html#/s:5Glean13CounterMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/CounterMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"CounterMetric"},"Classes/CounterMetric.html#/s:5Glean13CounterMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"CounterMetric"},"Classes/CounterMetric.html#/s:5Glean13CounterMetricC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"CounterMetric"},"Classes/CounterMetric.html#/s:5Glean13CounterMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"CounterMetric"},"Classes/CounterMetric.html#/s:5Glean13CounterMetricCyAcA06CommonC4DataVcfc":{"name":"init(_:)","abstract":"

    Undocumented

    ","parent_name":"CounterMetric"},"Classes/CounterMetric.html#/s:5Glean13CounterMetricC3addyys5Int32VF":{"name":"add(_:)","abstract":"

    Undocumented

    ","parent_name":"CounterMetric"},"Classes/CounterMetric.html#/s:5Glean13CounterMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"CounterMetric"},"Classes/CounterMetric.html#/s:5Glean13CounterMetricC12testGetValueys5Int32VSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"CounterMetric"},"Classes/BooleanMetric/NoPointer.html#/s:5Glean13BooleanMetricC9NoPointerVAEycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"NoPointer"},"Classes/BooleanMetric/NoPointer.html":{"name":"NoPointer","abstract":"

    Used to instantiate a [FFIObject] without an actual pointer, for fakes in tests, mostly.

    ","parent_name":"BooleanMetric"},"Classes/BooleanMetric.html#/s:5Glean13BooleanMetricC20unsafeFromRawPointerACSv_tcfc":{"name":"init(unsafeFromRawPointer:)","abstract":"

    Undocumented

    ","parent_name":"BooleanMetric"},"Classes/BooleanMetric.html#/s:5Glean13BooleanMetricC9noPointerA2C02NoE0V_tcfc":{"name":"init(noPointer:)","abstract":"

    This constructor can be used to instantiate a fake object.

    ","parent_name":"BooleanMetric"},"Classes/BooleanMetric.html#/s:5Glean13BooleanMetricC18uniffiClonePointerSvyF":{"name":"uniffiClonePointer()","abstract":"

    Undocumented

    ","parent_name":"BooleanMetric"},"Classes/BooleanMetric.html#/s:5Glean13BooleanMetricCyAcA06CommonC4DataVcfc":{"name":"init(_:)","abstract":"

    Undocumented

    ","parent_name":"BooleanMetric"},"Classes/BooleanMetric.html#/s:5Glean13BooleanMetricC3setyySbF":{"name":"set(_:)","abstract":"

    Undocumented

    ","parent_name":"BooleanMetric"},"Classes/BooleanMetric.html#/s:5Glean13BooleanMetricC24testGetNumRecordedErrorsys5Int32VAA9ErrorTypeOF":{"name":"testGetNumRecordedErrors(_:)","abstract":"

    Undocumented

    ","parent_name":"BooleanMetric"},"Classes/BooleanMetric.html#/s:5Glean13BooleanMetricC12testGetValueySbSgSSSgF":{"name":"testGetValue(_:)","abstract":"

    Undocumented

    ","parent_name":"BooleanMetric"},"Classes/BooleanMetric.html":{"name":"BooleanMetric","abstract":"

    Undocumented

    "},"Classes/CounterMetric.html":{"name":"CounterMetric","abstract":"

    Undocumented

    "},"Classes/CustomDistributionMetric.html":{"name":"CustomDistributionMetric","abstract":"

    Undocumented

    "},"Classes/DatetimeMetric.html":{"name":"DatetimeMetric","abstract":"

    Undocumented

    "},"Classes/DenominatorMetric.html":{"name":"DenominatorMetric","abstract":"

    Undocumented

    "},"Classes/EventMetric.html":{"name":"EventMetric","abstract":"

    Undocumented

    "},"Classes/LabeledBoolean.html":{"name":"LabeledBoolean","abstract":"

    Undocumented

    "},"Classes/LabeledCounter.html":{"name":"LabeledCounter","abstract":"

    Undocumented

    "},"Classes/LabeledString.html":{"name":"LabeledString","abstract":"

    Undocumented

    "},"Classes/MemoryDistributionMetric.html":{"name":"MemoryDistributionMetric","abstract":"

    Undocumented

    "},"Classes/NumeratorMetric.html":{"name":"NumeratorMetric","abstract":"

    Undocumented

    "},"Classes/ObjectMetric.html":{"name":"ObjectMetric","abstract":"

    Undocumented

    "},"Classes/PingType.html":{"name":"PingType","abstract":"

    Undocumented

    "},"Classes/QuantityMetric.html":{"name":"QuantityMetric","abstract":"

    Undocumented

    "},"Classes/RateMetric.html":{"name":"RateMetric","abstract":"

    Undocumented

    "},"Classes/StringListMetric.html":{"name":"StringListMetric","abstract":"

    Undocumented

    "},"Classes/StringMetric.html":{"name":"StringMetric","abstract":"

    Undocumented

    "},"Classes/TextMetric.html":{"name":"TextMetric","abstract":"

    Undocumented

    "},"Classes/TimespanMetric.html":{"name":"TimespanMetric","abstract":"

    Undocumented

    "},"Classes/TimingDistributionMetric.html":{"name":"TimingDistributionMetric","abstract":"

    Undocumented

    "},"Classes/UrlMetric.html":{"name":"UrlMetric","abstract":"

    Undocumented

    "},"Classes/UuidMetric.html":{"name":"UuidMetric","abstract":"

    Undocumented

    "},"Classes/Glean.html":{"name":"Glean","abstract":"

    The main Glean API.

    "},"Classes/DatetimeMetricType.html":{"name":"DatetimeMetricType","abstract":"

    This implements the developer facing API for recording datetime metrics.

    "},"Classes/NoExtras.html":{"name":"NoExtras","abstract":"

    Default of no extra keys for events (for the new API).

    "},"Classes/EventMetricType.html":{"name":"EventMetricType","abstract":"

    This implements the developer facing API for recording events.

    "},"Classes/LabeledMetricType.html":{"name":"LabeledMetricType","abstract":"

    This implements the developer facing API for labeled metrics.

    "},"Classes/ObjectMetricType.html":{"name":"ObjectMetricType","abstract":"

    This implements the developer facing API for the object metric type.

    "},"Classes/Ping.html":{"name":"Ping","abstract":"

    This implements the developer facing API for custom pings.

    "},"Classes/UrlMetricType.html":{"name":"UrlMetricType","abstract":"

    This implements the developer facing API for recording URL metrics.

    "},"Classes/UuidMetricType.html":{"name":"UuidMetricType","abstract":"

    This implements the developer facing API for recording UUID metrics.

    "},"Classes/HttpPingUploader.html":{"name":"HttpPingUploader","abstract":"

    This class represents a ping uploader via HTTP.

    "},"Classes.html":{"name":"Classes","abstract":"

    The following classes are available globally.

    "},"Enums.html":{"name":"Enumerations","abstract":"

    The following enumerations are available globally.

    "},"Extensions.html":{"name":"Extensions","abstract":"

    The following extensions are available globally.

    "},"Functions.html":{"name":"Functions","abstract":"

    The following functions are available globally.

    "},"Protocols.html":{"name":"Protocols","abstract":"

    The following protocols are available globally.

    "},"Structs.html":{"name":"Structures","abstract":"

    The following structures are available globally.

    "},"Typealiases.html":{"name":"Type Aliases","abstract":"

    The following type aliases are available globally.

    "}} \ No newline at end of file diff --git a/swift/undocumented.json b/swift/undocumented.json index 8dbc70ac72..86dcba4808 100644 --- a/swift/undocumented.json +++ b/swift/undocumented.json @@ -30,5306 +30,5306 @@ }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 523, + "line": 524, "symbol": "BooleanMetricProtocol", "symbol_kind": "source.lang.swift.decl.protocol", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 525, + "line": 526, "symbol": "BooleanMetricProtocol.set(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 527, + "line": 528, "symbol": "BooleanMetricProtocol.testGetNumRecordedErrors(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 529, + "line": 530, "symbol": "BooleanMetricProtocol.testGetValue(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 532, + "line": 533, "symbol": "BooleanMetric", "symbol_kind": "source.lang.swift.decl.class", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 538, + "line": 539, "symbol": "BooleanMetric.NoPointer.init()", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 544, + "line": 545, "symbol": "BooleanMetric.init(unsafeFromRawPointer:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 557, + "line": 558, "symbol": "BooleanMetric.uniffiClonePointer()", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 560, + "line": 561, "symbol": "BooleanMetric.init(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 580, + "line": 582, "symbol": "BooleanMetric.set(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 587, + "line": 589, "symbol": "BooleanMetric.testGetNumRecordedErrors(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 595, + "line": 597, "symbol": "BooleanMetric.testGetValue(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 606, + "line": 608, "symbol": "FfiConverterTypeBooleanMetric", "symbol_kind": "source.lang.swift.decl.struct", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 611, + "line": 613, "symbol": "FfiConverterTypeBooleanMetric.lift(_:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 615, + "line": 617, "symbol": "FfiConverterTypeBooleanMetric.lower(_:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 619, + "line": 621, "symbol": "FfiConverterTypeBooleanMetric.read(from:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 630, + "line": 632, "symbol": "FfiConverterTypeBooleanMetric.write(_:into:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 640, + "line": 642, "symbol": "FfiConverterTypeBooleanMetric_lift(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 644, + "line": 646, "symbol": "FfiConverterTypeBooleanMetric_lower(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 651, + "line": 653, "symbol": "CounterMetricProtocol", "symbol_kind": "source.lang.swift.decl.protocol", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 653, + "line": 655, "symbol": "CounterMetricProtocol.add(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 655, + "line": 657, "symbol": "CounterMetricProtocol.testGetNumRecordedErrors(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 657, + "line": 659, "symbol": "CounterMetricProtocol.testGetValue(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 660, + "line": 662, "symbol": "CounterMetric", "symbol_kind": "source.lang.swift.decl.class", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 666, + "line": 668, "symbol": "CounterMetric.NoPointer.init()", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 672, + "line": 674, "symbol": "CounterMetric.init(unsafeFromRawPointer:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 685, + "line": 687, "symbol": "CounterMetric.uniffiClonePointer()", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 688, + "line": 690, "symbol": "CounterMetric.init(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 708, + "line": 711, "symbol": "CounterMetric.add(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 715, + "line": 718, "symbol": "CounterMetric.testGetNumRecordedErrors(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 723, + "line": 726, "symbol": "CounterMetric.testGetValue(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 734, + "line": 737, "symbol": "FfiConverterTypeCounterMetric", "symbol_kind": "source.lang.swift.decl.struct", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 739, + "line": 742, "symbol": "FfiConverterTypeCounterMetric.lift(_:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 743, + "line": 746, "symbol": "FfiConverterTypeCounterMetric.lower(_:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 747, + "line": 750, "symbol": "FfiConverterTypeCounterMetric.read(from:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 758, + "line": 761, "symbol": "FfiConverterTypeCounterMetric.write(_:into:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 768, + "line": 771, "symbol": "FfiConverterTypeCounterMetric_lift(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 772, + "line": 775, "symbol": "FfiConverterTypeCounterMetric_lower(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 779, + "line": 782, "symbol": "CustomDistributionMetricProtocol", "symbol_kind": "source.lang.swift.decl.protocol", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 781, + "line": 784, "symbol": "CustomDistributionMetricProtocol.accumulateSamples(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 783, + "line": 786, "symbol": "CustomDistributionMetricProtocol.accumulateSingleSample(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 785, + "line": 788, "symbol": "CustomDistributionMetricProtocol.testGetNumRecordedErrors(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 787, + "line": 790, "symbol": "CustomDistributionMetricProtocol.testGetValue(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 790, + "line": 793, "symbol": "CustomDistributionMetric", "symbol_kind": "source.lang.swift.decl.class", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 796, + "line": 799, "symbol": "CustomDistributionMetric.NoPointer.init()", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 802, + "line": 805, "symbol": "CustomDistributionMetric.init(unsafeFromRawPointer:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 815, + "line": 818, "symbol": "CustomDistributionMetric.uniffiClonePointer()", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 818, + "line": 821, "symbol": "CustomDistributionMetric.init(_:_:_:_:_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 842, + "line": 846, "symbol": "CustomDistributionMetric.accumulateSamples(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 849, + "line": 853, "symbol": "CustomDistributionMetric.accumulateSingleSample(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 856, + "line": 860, "symbol": "CustomDistributionMetric.testGetNumRecordedErrors(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 864, + "line": 868, "symbol": "CustomDistributionMetric.testGetValue(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 875, + "line": 879, "symbol": "FfiConverterTypeCustomDistributionMetric", "symbol_kind": "source.lang.swift.decl.struct", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 880, + "line": 884, "symbol": "FfiConverterTypeCustomDistributionMetric.lift(_:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 884, + "line": 888, "symbol": "FfiConverterTypeCustomDistributionMetric.lower(_:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 888, + "line": 892, "symbol": "FfiConverterTypeCustomDistributionMetric.read(from:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 899, + "line": 903, "symbol": "FfiConverterTypeCustomDistributionMetric.write(_:into:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 909, + "line": 913, "symbol": "FfiConverterTypeCustomDistributionMetric_lift(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 913, + "line": 917, "symbol": "FfiConverterTypeCustomDistributionMetric_lower(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 920, + "line": 924, "symbol": "DatetimeMetricProtocol", "symbol_kind": "source.lang.swift.decl.protocol", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 922, + "line": 926, "symbol": "DatetimeMetricProtocol.set(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 924, + "line": 928, "symbol": "DatetimeMetricProtocol.testGetNumRecordedErrors(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 926, + "line": 930, "symbol": "DatetimeMetricProtocol.testGetValue(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 928, + "line": 932, "symbol": "DatetimeMetricProtocol.testGetValueAsString(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 931, + "line": 935, "symbol": "DatetimeMetric", "symbol_kind": "source.lang.swift.decl.class", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 937, + "line": 941, "symbol": "DatetimeMetric.NoPointer.init()", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 943, + "line": 947, "symbol": "DatetimeMetric.init(unsafeFromRawPointer:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 956, + "line": 960, "symbol": "DatetimeMetric.uniffiClonePointer()", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 959, + "line": 963, "symbol": "DatetimeMetric.init(_:_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 980, + "line": 985, "symbol": "DatetimeMetric.set(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 987, + "line": 992, "symbol": "DatetimeMetric.testGetNumRecordedErrors(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 995, + "line": 1000, "symbol": "DatetimeMetric.testGetValue(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1003, + "line": 1008, "symbol": "DatetimeMetric.testGetValueAsString(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1014, + "line": 1019, "symbol": "FfiConverterTypeDatetimeMetric", "symbol_kind": "source.lang.swift.decl.struct", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1019, + "line": 1024, "symbol": "FfiConverterTypeDatetimeMetric.lift(_:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1023, + "line": 1028, "symbol": "FfiConverterTypeDatetimeMetric.lower(_:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1027, + "line": 1032, "symbol": "FfiConverterTypeDatetimeMetric.read(from:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1038, + "line": 1043, "symbol": "FfiConverterTypeDatetimeMetric.write(_:into:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1048, + "line": 1053, "symbol": "FfiConverterTypeDatetimeMetric_lift(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1052, + "line": 1057, "symbol": "FfiConverterTypeDatetimeMetric_lower(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1059, + "line": 1064, "symbol": "DenominatorMetricProtocol", "symbol_kind": "source.lang.swift.decl.protocol", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1061, + "line": 1066, "symbol": "DenominatorMetricProtocol.add(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1063, + "line": 1068, "symbol": "DenominatorMetricProtocol.testGetNumRecordedErrors(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1065, + "line": 1070, "symbol": "DenominatorMetricProtocol.testGetValue(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1068, + "line": 1073, "symbol": "DenominatorMetric", "symbol_kind": "source.lang.swift.decl.class", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1074, + "line": 1079, "symbol": "DenominatorMetric.NoPointer.init()", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1080, + "line": 1085, "symbol": "DenominatorMetric.init(unsafeFromRawPointer:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1093, + "line": 1098, "symbol": "DenominatorMetric.uniffiClonePointer()", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1096, + "line": 1101, "symbol": "DenominatorMetric.init(_:_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1117, + "line": 1123, "symbol": "DenominatorMetric.add(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1124, + "line": 1130, "symbol": "DenominatorMetric.testGetNumRecordedErrors(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1132, + "line": 1138, "symbol": "DenominatorMetric.testGetValue(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1143, + "line": 1149, "symbol": "FfiConverterTypeDenominatorMetric", "symbol_kind": "source.lang.swift.decl.struct", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1148, + "line": 1154, "symbol": "FfiConverterTypeDenominatorMetric.lift(_:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1152, + "line": 1158, "symbol": "FfiConverterTypeDenominatorMetric.lower(_:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1156, + "line": 1162, "symbol": "FfiConverterTypeDenominatorMetric.read(from:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1167, + "line": 1173, "symbol": "FfiConverterTypeDenominatorMetric.write(_:into:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1177, + "line": 1183, "symbol": "FfiConverterTypeDenominatorMetric_lift(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1181, + "line": 1187, "symbol": "FfiConverterTypeDenominatorMetric_lower(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1188, + "line": 1194, "symbol": "EventMetricProtocol", "symbol_kind": "source.lang.swift.decl.protocol", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1190, + "line": 1196, "symbol": "EventMetricProtocol.record(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1192, + "line": 1198, "symbol": "EventMetricProtocol.testGetNumRecordedErrors(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1194, + "line": 1200, "symbol": "EventMetricProtocol.testGetValue(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1197, + "line": 1203, "symbol": "EventMetric", "symbol_kind": "source.lang.swift.decl.class", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1203, + "line": 1209, "symbol": "EventMetric.NoPointer.init()", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1209, + "line": 1215, "symbol": "EventMetric.init(unsafeFromRawPointer:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1222, + "line": 1228, "symbol": "EventMetric.uniffiClonePointer()", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1225, + "line": 1231, "symbol": "EventMetric.init(_:_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1246, + "line": 1253, "symbol": "EventMetric.record(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1253, + "line": 1260, "symbol": "EventMetric.testGetNumRecordedErrors(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1261, + "line": 1268, "symbol": "EventMetric.testGetValue(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1272, + "line": 1279, "symbol": "FfiConverterTypeEventMetric", "symbol_kind": "source.lang.swift.decl.struct", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1277, + "line": 1284, "symbol": "FfiConverterTypeEventMetric.lift(_:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1281, + "line": 1288, "symbol": "FfiConverterTypeEventMetric.lower(_:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1285, + "line": 1292, "symbol": "FfiConverterTypeEventMetric.read(from:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1296, + "line": 1303, "symbol": "FfiConverterTypeEventMetric.write(_:into:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1306, + "line": 1313, "symbol": "FfiConverterTypeEventMetric_lift(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1310, + "line": 1317, "symbol": "FfiConverterTypeEventMetric_lower(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1317, + "line": 1324, "symbol": "LabeledBooleanProtocol", "symbol_kind": "source.lang.swift.decl.protocol", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1319, + "line": 1326, "symbol": "LabeledBooleanProtocol.get(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1321, + "line": 1328, "symbol": "LabeledBooleanProtocol.testGetNumRecordedErrors(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1324, + "line": 1331, "symbol": "LabeledBoolean", "symbol_kind": "source.lang.swift.decl.class", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1330, + "line": 1337, "symbol": "LabeledBoolean.NoPointer.init()", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1336, + "line": 1343, "symbol": "LabeledBoolean.init(unsafeFromRawPointer:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1349, + "line": 1356, "symbol": "LabeledBoolean.uniffiClonePointer()", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1352, + "line": 1359, "symbol": "LabeledBoolean.init(_:_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1373, + "line": 1381, "symbol": "LabeledBoolean.get(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1381, + "line": 1389, "symbol": "LabeledBoolean.testGetNumRecordedErrors(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1392, + "line": 1400, "symbol": "FfiConverterTypeLabeledBoolean", "symbol_kind": "source.lang.swift.decl.struct", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1397, + "line": 1405, "symbol": "FfiConverterTypeLabeledBoolean.lift(_:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1401, + "line": 1409, "symbol": "FfiConverterTypeLabeledBoolean.lower(_:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1405, + "line": 1413, "symbol": "FfiConverterTypeLabeledBoolean.read(from:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1416, + "line": 1424, "symbol": "FfiConverterTypeLabeledBoolean.write(_:into:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1426, + "line": 1434, "symbol": "FfiConverterTypeLabeledBoolean_lift(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1430, + "line": 1438, "symbol": "FfiConverterTypeLabeledBoolean_lower(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1437, + "line": 1445, "symbol": "LabeledCounterProtocol", "symbol_kind": "source.lang.swift.decl.protocol", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1439, + "line": 1447, "symbol": "LabeledCounterProtocol.get(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1441, + "line": 1449, "symbol": "LabeledCounterProtocol.testGetNumRecordedErrors(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1444, + "line": 1452, "symbol": "LabeledCounter", "symbol_kind": "source.lang.swift.decl.class", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1450, + "line": 1458, "symbol": "LabeledCounter.NoPointer.init()", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1456, + "line": 1464, "symbol": "LabeledCounter.init(unsafeFromRawPointer:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1469, + "line": 1477, "symbol": "LabeledCounter.uniffiClonePointer()", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1472, + "line": 1480, "symbol": "LabeledCounter.init(_:_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1493, + "line": 1502, "symbol": "LabeledCounter.get(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1501, + "line": 1510, "symbol": "LabeledCounter.testGetNumRecordedErrors(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1512, + "line": 1521, "symbol": "FfiConverterTypeLabeledCounter", "symbol_kind": "source.lang.swift.decl.struct", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1517, + "line": 1526, "symbol": "FfiConverterTypeLabeledCounter.lift(_:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1521, + "line": 1530, "symbol": "FfiConverterTypeLabeledCounter.lower(_:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1525, + "line": 1534, "symbol": "FfiConverterTypeLabeledCounter.read(from:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1536, + "line": 1545, "symbol": "FfiConverterTypeLabeledCounter.write(_:into:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1546, + "line": 1555, "symbol": "FfiConverterTypeLabeledCounter_lift(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1550, + "line": 1559, "symbol": "FfiConverterTypeLabeledCounter_lower(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1557, + "line": 1566, "symbol": "LabeledStringProtocol", "symbol_kind": "source.lang.swift.decl.protocol", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1559, + "line": 1568, "symbol": "LabeledStringProtocol.get(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1561, + "line": 1570, "symbol": "LabeledStringProtocol.testGetNumRecordedErrors(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1564, + "line": 1573, "symbol": "LabeledString", "symbol_kind": "source.lang.swift.decl.class", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1570, + "line": 1579, "symbol": "LabeledString.NoPointer.init()", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1576, + "line": 1585, "symbol": "LabeledString.init(unsafeFromRawPointer:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1589, + "line": 1598, "symbol": "LabeledString.uniffiClonePointer()", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1592, + "line": 1601, "symbol": "LabeledString.init(_:_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1613, + "line": 1623, "symbol": "LabeledString.get(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1621, + "line": 1631, "symbol": "LabeledString.testGetNumRecordedErrors(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1632, + "line": 1642, "symbol": "FfiConverterTypeLabeledString", "symbol_kind": "source.lang.swift.decl.struct", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1637, + "line": 1647, "symbol": "FfiConverterTypeLabeledString.lift(_:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1641, + "line": 1651, "symbol": "FfiConverterTypeLabeledString.lower(_:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1645, + "line": 1655, "symbol": "FfiConverterTypeLabeledString.read(from:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1656, + "line": 1666, "symbol": "FfiConverterTypeLabeledString.write(_:into:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1666, + "line": 1676, "symbol": "FfiConverterTypeLabeledString_lift(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1670, + "line": 1680, "symbol": "FfiConverterTypeLabeledString_lower(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1677, + "line": 1687, "symbol": "MemoryDistributionMetricProtocol", "symbol_kind": "source.lang.swift.decl.protocol", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1679, + "line": 1689, "symbol": "MemoryDistributionMetricProtocol.accumulate(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1681, + "line": 1691, "symbol": "MemoryDistributionMetricProtocol.accumulateSamples(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1683, + "line": 1693, "symbol": "MemoryDistributionMetricProtocol.testGetNumRecordedErrors(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1685, + "line": 1695, "symbol": "MemoryDistributionMetricProtocol.testGetValue(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1688, + "line": 1698, "symbol": "MemoryDistributionMetric", "symbol_kind": "source.lang.swift.decl.class", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1694, + "line": 1704, "symbol": "MemoryDistributionMetric.NoPointer.init()", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1700, + "line": 1710, "symbol": "MemoryDistributionMetric.init(unsafeFromRawPointer:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1713, + "line": 1723, "symbol": "MemoryDistributionMetric.uniffiClonePointer()", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1716, + "line": 1726, "symbol": "MemoryDistributionMetric.init(_:_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1737, + "line": 1748, "symbol": "MemoryDistributionMetric.accumulate(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1744, + "line": 1755, "symbol": "MemoryDistributionMetric.accumulateSamples(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1751, + "line": 1762, "symbol": "MemoryDistributionMetric.testGetNumRecordedErrors(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1759, + "line": 1770, "symbol": "MemoryDistributionMetric.testGetValue(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1770, + "line": 1781, "symbol": "FfiConverterTypeMemoryDistributionMetric", "symbol_kind": "source.lang.swift.decl.struct", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1775, + "line": 1786, "symbol": "FfiConverterTypeMemoryDistributionMetric.lift(_:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1779, + "line": 1790, "symbol": "FfiConverterTypeMemoryDistributionMetric.lower(_:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1783, + "line": 1794, "symbol": "FfiConverterTypeMemoryDistributionMetric.read(from:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1794, + "line": 1805, "symbol": "FfiConverterTypeMemoryDistributionMetric.write(_:into:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1804, + "line": 1815, "symbol": "FfiConverterTypeMemoryDistributionMetric_lift(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1808, + "line": 1819, "symbol": "FfiConverterTypeMemoryDistributionMetric_lower(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1815, + "line": 1826, "symbol": "NumeratorMetricProtocol", "symbol_kind": "source.lang.swift.decl.protocol", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1817, + "line": 1828, "symbol": "NumeratorMetricProtocol.addToNumerator(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1819, + "line": 1830, "symbol": "NumeratorMetricProtocol.testGetNumRecordedErrors(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1821, + "line": 1832, "symbol": "NumeratorMetricProtocol.testGetValue(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1824, + "line": 1835, "symbol": "NumeratorMetric", "symbol_kind": "source.lang.swift.decl.class", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1830, + "line": 1841, "symbol": "NumeratorMetric.NoPointer.init()", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1836, + "line": 1847, "symbol": "NumeratorMetric.init(unsafeFromRawPointer:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1849, + "line": 1860, "symbol": "NumeratorMetric.uniffiClonePointer()", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1852, + "line": 1863, "symbol": "NumeratorMetric.init(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1872, + "line": 1884, "symbol": "NumeratorMetric.addToNumerator(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1879, + "line": 1891, "symbol": "NumeratorMetric.testGetNumRecordedErrors(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1887, + "line": 1899, "symbol": "NumeratorMetric.testGetValue(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1898, + "line": 1910, "symbol": "FfiConverterTypeNumeratorMetric", "symbol_kind": "source.lang.swift.decl.struct", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1903, + "line": 1915, "symbol": "FfiConverterTypeNumeratorMetric.lift(_:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1907, + "line": 1919, "symbol": "FfiConverterTypeNumeratorMetric.lower(_:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1911, + "line": 1923, "symbol": "FfiConverterTypeNumeratorMetric.read(from:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1922, + "line": 1934, "symbol": "FfiConverterTypeNumeratorMetric.write(_:into:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1932, + "line": 1944, "symbol": "FfiConverterTypeNumeratorMetric_lift(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1936, + "line": 1948, "symbol": "FfiConverterTypeNumeratorMetric_lower(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1943, + "line": 1955, "symbol": "ObjectMetricProtocol", "symbol_kind": "source.lang.swift.decl.protocol", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1945, + "line": 1957, "symbol": "ObjectMetricProtocol.recordSchemaError()", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1947, + "line": 1959, "symbol": "ObjectMetricProtocol.setString(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1949, + "line": 1961, "symbol": "ObjectMetricProtocol.testGetNumRecordedErrors(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1951, + "line": 1963, "symbol": "ObjectMetricProtocol.testGetValue(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1954, + "line": 1966, "symbol": "ObjectMetric", "symbol_kind": "source.lang.swift.decl.class", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1960, + "line": 1972, "symbol": "ObjectMetric.NoPointer.init()", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1966, + "line": 1978, "symbol": "ObjectMetric.init(unsafeFromRawPointer:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1979, + "line": 1991, "symbol": "ObjectMetric.uniffiClonePointer()", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 1982, + "line": 1994, "symbol": "ObjectMetric.init(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2002, + "line": 2015, "symbol": "ObjectMetric.recordSchemaError()", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2008, + "line": 2021, "symbol": "ObjectMetric.setString(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2015, + "line": 2028, "symbol": "ObjectMetric.testGetNumRecordedErrors(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2023, + "line": 2036, "symbol": "ObjectMetric.testGetValue(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2034, + "line": 2047, "symbol": "FfiConverterTypeObjectMetric", "symbol_kind": "source.lang.swift.decl.struct", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2039, + "line": 2052, "symbol": "FfiConverterTypeObjectMetric.lift(_:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2043, + "line": 2056, "symbol": "FfiConverterTypeObjectMetric.lower(_:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2047, + "line": 2060, "symbol": "FfiConverterTypeObjectMetric.read(from:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2058, + "line": 2071, "symbol": "FfiConverterTypeObjectMetric.write(_:into:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2068, + "line": 2081, "symbol": "FfiConverterTypeObjectMetric_lift(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2072, + "line": 2085, "symbol": "FfiConverterTypeObjectMetric_lower(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2079, + "line": 2092, "symbol": "PingTypeProtocol", "symbol_kind": "source.lang.swift.decl.protocol", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2081, + "line": 2094, "symbol": "PingTypeProtocol.submit(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2084, + "line": 2097, "symbol": "PingType", "symbol_kind": "source.lang.swift.decl.class", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2090, + "line": 2103, "symbol": "PingType.NoPointer.init()", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2096, + "line": 2109, "symbol": "PingType.init(unsafeFromRawPointer:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2109, + "line": 2122, "symbol": "PingType.uniffiClonePointer()", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2112, + "line": 2125, "symbol": "PingType.init(_:_:_:_:_:_:_:_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2139, + "line": 2153, "symbol": "PingType.submit(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2149, + "line": 2163, "symbol": "FfiConverterTypePingType", "symbol_kind": "source.lang.swift.decl.struct", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2154, + "line": 2168, "symbol": "FfiConverterTypePingType.lift(_:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2158, + "line": 2172, "symbol": "FfiConverterTypePingType.lower(_:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2162, + "line": 2176, "symbol": "FfiConverterTypePingType.read(from:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2173, + "line": 2187, "symbol": "FfiConverterTypePingType.write(_:into:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2183, + "line": 2197, "symbol": "FfiConverterTypePingType_lift(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2187, + "line": 2201, "symbol": "FfiConverterTypePingType_lower(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2194, + "line": 2208, "symbol": "QuantityMetricProtocol", "symbol_kind": "source.lang.swift.decl.protocol", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2196, + "line": 2210, "symbol": "QuantityMetricProtocol.set(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2198, + "line": 2212, "symbol": "QuantityMetricProtocol.testGetNumRecordedErrors(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2200, + "line": 2214, "symbol": "QuantityMetricProtocol.testGetValue(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2203, + "line": 2217, "symbol": "QuantityMetric", "symbol_kind": "source.lang.swift.decl.class", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2209, + "line": 2223, "symbol": "QuantityMetric.NoPointer.init()", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2215, + "line": 2229, "symbol": "QuantityMetric.init(unsafeFromRawPointer:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2228, + "line": 2242, "symbol": "QuantityMetric.uniffiClonePointer()", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2231, + "line": 2245, "symbol": "QuantityMetric.init(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2251, + "line": 2266, "symbol": "QuantityMetric.set(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2258, + "line": 2273, "symbol": "QuantityMetric.testGetNumRecordedErrors(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2266, + "line": 2281, "symbol": "QuantityMetric.testGetValue(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2277, + "line": 2292, "symbol": "FfiConverterTypeQuantityMetric", "symbol_kind": "source.lang.swift.decl.struct", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2282, + "line": 2297, "symbol": "FfiConverterTypeQuantityMetric.lift(_:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2286, + "line": 2301, "symbol": "FfiConverterTypeQuantityMetric.lower(_:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2290, + "line": 2305, "symbol": "FfiConverterTypeQuantityMetric.read(from:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2301, + "line": 2316, "symbol": "FfiConverterTypeQuantityMetric.write(_:into:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2311, + "line": 2326, "symbol": "FfiConverterTypeQuantityMetric_lift(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2315, + "line": 2330, "symbol": "FfiConverterTypeQuantityMetric_lower(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2322, + "line": 2337, "symbol": "RateMetricProtocol", "symbol_kind": "source.lang.swift.decl.protocol", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2324, + "line": 2339, "symbol": "RateMetricProtocol.addToDenominator(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2326, + "line": 2341, "symbol": "RateMetricProtocol.addToNumerator(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2328, + "line": 2343, "symbol": "RateMetricProtocol.testGetNumRecordedErrors(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2330, + "line": 2345, "symbol": "RateMetricProtocol.testGetValue(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2333, + "line": 2348, "symbol": "RateMetric", "symbol_kind": "source.lang.swift.decl.class", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2339, + "line": 2354, "symbol": "RateMetric.NoPointer.init()", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2345, + "line": 2360, "symbol": "RateMetric.init(unsafeFromRawPointer:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2358, + "line": 2373, "symbol": "RateMetric.uniffiClonePointer()", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2361, + "line": 2376, "symbol": "RateMetric.init(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2381, + "line": 2397, "symbol": "RateMetric.addToDenominator(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2388, + "line": 2404, "symbol": "RateMetric.addToNumerator(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2395, + "line": 2411, "symbol": "RateMetric.testGetNumRecordedErrors(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2403, + "line": 2419, "symbol": "RateMetric.testGetValue(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2414, + "line": 2430, "symbol": "FfiConverterTypeRateMetric", "symbol_kind": "source.lang.swift.decl.struct", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2419, + "line": 2435, "symbol": "FfiConverterTypeRateMetric.lift(_:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2423, + "line": 2439, "symbol": "FfiConverterTypeRateMetric.lower(_:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2427, + "line": 2443, "symbol": "FfiConverterTypeRateMetric.read(from:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2438, + "line": 2454, "symbol": "FfiConverterTypeRateMetric.write(_:into:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2448, + "line": 2464, "symbol": "FfiConverterTypeRateMetric_lift(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2452, + "line": 2468, "symbol": "FfiConverterTypeRateMetric_lower(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2459, + "line": 2475, "symbol": "StringListMetricProtocol", "symbol_kind": "source.lang.swift.decl.protocol", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2461, + "line": 2477, "symbol": "StringListMetricProtocol.add(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2463, + "line": 2479, "symbol": "StringListMetricProtocol.set(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2465, + "line": 2481, "symbol": "StringListMetricProtocol.testGetNumRecordedErrors(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2467, + "line": 2483, "symbol": "StringListMetricProtocol.testGetValue(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2470, + "line": 2486, "symbol": "StringListMetric", "symbol_kind": "source.lang.swift.decl.class", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2476, + "line": 2492, "symbol": "StringListMetric.NoPointer.init()", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2482, + "line": 2498, "symbol": "StringListMetric.init(unsafeFromRawPointer:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2495, + "line": 2511, "symbol": "StringListMetric.uniffiClonePointer()", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2498, + "line": 2514, "symbol": "StringListMetric.init(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2518, + "line": 2535, "symbol": "StringListMetric.add(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2525, + "line": 2542, "symbol": "StringListMetric.set(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2532, + "line": 2549, "symbol": "StringListMetric.testGetNumRecordedErrors(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2540, + "line": 2557, "symbol": "StringListMetric.testGetValue(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2551, + "line": 2568, "symbol": "FfiConverterTypeStringListMetric", "symbol_kind": "source.lang.swift.decl.struct", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2556, + "line": 2573, "symbol": "FfiConverterTypeStringListMetric.lift(_:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2560, + "line": 2577, "symbol": "FfiConverterTypeStringListMetric.lower(_:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2564, + "line": 2581, "symbol": "FfiConverterTypeStringListMetric.read(from:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2575, + "line": 2592, "symbol": "FfiConverterTypeStringListMetric.write(_:into:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2585, + "line": 2602, "symbol": "FfiConverterTypeStringListMetric_lift(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2589, + "line": 2606, "symbol": "FfiConverterTypeStringListMetric_lower(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2596, + "line": 2613, "symbol": "StringMetricProtocol", "symbol_kind": "source.lang.swift.decl.protocol", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2598, + "line": 2615, "symbol": "StringMetricProtocol.set(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2600, + "line": 2617, "symbol": "StringMetricProtocol.testGetNumRecordedErrors(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2602, + "line": 2619, "symbol": "StringMetricProtocol.testGetValue(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2605, + "line": 2622, "symbol": "StringMetric", "symbol_kind": "source.lang.swift.decl.class", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2611, + "line": 2628, "symbol": "StringMetric.NoPointer.init()", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2617, + "line": 2634, "symbol": "StringMetric.init(unsafeFromRawPointer:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2630, + "line": 2647, "symbol": "StringMetric.uniffiClonePointer()", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2633, + "line": 2650, "symbol": "StringMetric.init(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2653, + "line": 2671, "symbol": "StringMetric.set(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2660, + "line": 2678, "symbol": "StringMetric.testGetNumRecordedErrors(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2668, + "line": 2686, "symbol": "StringMetric.testGetValue(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2679, + "line": 2697, "symbol": "FfiConverterTypeStringMetric", "symbol_kind": "source.lang.swift.decl.struct", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2684, + "line": 2702, "symbol": "FfiConverterTypeStringMetric.lift(_:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2688, + "line": 2706, "symbol": "FfiConverterTypeStringMetric.lower(_:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2692, + "line": 2710, "symbol": "FfiConverterTypeStringMetric.read(from:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2703, + "line": 2721, "symbol": "FfiConverterTypeStringMetric.write(_:into:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2713, + "line": 2731, "symbol": "FfiConverterTypeStringMetric_lift(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2717, + "line": 2735, "symbol": "FfiConverterTypeStringMetric_lower(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2724, + "line": 2742, "symbol": "TextMetricProtocol", "symbol_kind": "source.lang.swift.decl.protocol", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2726, + "line": 2744, "symbol": "TextMetricProtocol.set(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2728, + "line": 2746, "symbol": "TextMetricProtocol.testGetNumRecordedErrors(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2730, + "line": 2748, "symbol": "TextMetricProtocol.testGetValue(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2733, + "line": 2751, "symbol": "TextMetric", "symbol_kind": "source.lang.swift.decl.class", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2739, + "line": 2757, "symbol": "TextMetric.NoPointer.init()", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2745, + "line": 2763, "symbol": "TextMetric.init(unsafeFromRawPointer:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2758, + "line": 2776, "symbol": "TextMetric.uniffiClonePointer()", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2761, + "line": 2779, "symbol": "TextMetric.init(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2781, + "line": 2800, "symbol": "TextMetric.set(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2788, + "line": 2807, "symbol": "TextMetric.testGetNumRecordedErrors(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2796, + "line": 2815, "symbol": "TextMetric.testGetValue(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2807, + "line": 2826, "symbol": "FfiConverterTypeTextMetric", "symbol_kind": "source.lang.swift.decl.struct", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2812, + "line": 2831, "symbol": "FfiConverterTypeTextMetric.lift(_:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2816, + "line": 2835, "symbol": "FfiConverterTypeTextMetric.lower(_:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2820, + "line": 2839, "symbol": "FfiConverterTypeTextMetric.read(from:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2831, + "line": 2850, "symbol": "FfiConverterTypeTextMetric.write(_:into:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2841, + "line": 2860, "symbol": "FfiConverterTypeTextMetric_lift(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2845, + "line": 2864, "symbol": "FfiConverterTypeTextMetric_lower(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2852, + "line": 2871, "symbol": "TimespanMetricProtocol", "symbol_kind": "source.lang.swift.decl.protocol", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2854, + "line": 2873, "symbol": "TimespanMetricProtocol.cancel()", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2856, + "line": 2875, "symbol": "TimespanMetricProtocol.setRawNanos(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2858, + "line": 2877, "symbol": "TimespanMetricProtocol.start()", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2860, + "line": 2879, "symbol": "TimespanMetricProtocol.stop()", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2862, + "line": 2881, "symbol": "TimespanMetricProtocol.testGetNumRecordedErrors(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2864, + "line": 2883, "symbol": "TimespanMetricProtocol.testGetValue(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2867, + "line": 2886, "symbol": "TimespanMetric", "symbol_kind": "source.lang.swift.decl.class", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2873, + "line": 2892, "symbol": "TimespanMetric.NoPointer.init()", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2879, + "line": 2898, "symbol": "TimespanMetric.init(unsafeFromRawPointer:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2892, + "line": 2911, "symbol": "TimespanMetric.uniffiClonePointer()", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2895, + "line": 2914, "symbol": "TimespanMetric.init(_:_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2916, + "line": 2936, "symbol": "TimespanMetric.cancel()", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2922, + "line": 2942, "symbol": "TimespanMetric.setRawNanos(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2929, + "line": 2949, "symbol": "TimespanMetric.start()", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2935, + "line": 2955, "symbol": "TimespanMetric.stop()", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2941, + "line": 2961, "symbol": "TimespanMetric.testGetNumRecordedErrors(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2949, + "line": 2969, "symbol": "TimespanMetric.testGetValue(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2960, + "line": 2980, "symbol": "FfiConverterTypeTimespanMetric", "symbol_kind": "source.lang.swift.decl.struct", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2965, + "line": 2985, "symbol": "FfiConverterTypeTimespanMetric.lift(_:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2969, + "line": 2989, "symbol": "FfiConverterTypeTimespanMetric.lower(_:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2973, + "line": 2993, "symbol": "FfiConverterTypeTimespanMetric.read(from:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2984, + "line": 3004, "symbol": "FfiConverterTypeTimespanMetric.write(_:into:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2994, + "line": 3014, "symbol": "FfiConverterTypeTimespanMetric_lift(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 2998, + "line": 3018, "symbol": "FfiConverterTypeTimespanMetric_lower(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3005, + "line": 3025, "symbol": "TimingDistributionMetricProtocol", "symbol_kind": "source.lang.swift.decl.protocol", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3007, + "line": 3027, "symbol": "TimingDistributionMetricProtocol.accumulateSamples(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3009, + "line": 3029, "symbol": "TimingDistributionMetricProtocol.accumulateSingleSample(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3011, + "line": 3031, "symbol": "TimingDistributionMetricProtocol.cancel(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3013, + "line": 3033, "symbol": "TimingDistributionMetricProtocol.start()", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3015, + "line": 3035, "symbol": "TimingDistributionMetricProtocol.stopAndAccumulate(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3017, + "line": 3037, "symbol": "TimingDistributionMetricProtocol.testGetNumRecordedErrors(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3019, + "line": 3039, "symbol": "TimingDistributionMetricProtocol.testGetValue(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3022, + "line": 3042, "symbol": "TimingDistributionMetric", "symbol_kind": "source.lang.swift.decl.class", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3028, + "line": 3048, "symbol": "TimingDistributionMetric.NoPointer.init()", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3034, + "line": 3054, "symbol": "TimingDistributionMetric.init(unsafeFromRawPointer:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3047, + "line": 3067, "symbol": "TimingDistributionMetric.uniffiClonePointer()", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3050, + "line": 3070, "symbol": "TimingDistributionMetric.init(_:_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3071, + "line": 3092, "symbol": "TimingDistributionMetric.accumulateSamples(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3078, + "line": 3099, "symbol": "TimingDistributionMetric.accumulateSingleSample(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3085, + "line": 3106, "symbol": "TimingDistributionMetric.cancel(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3092, + "line": 3113, "symbol": "TimingDistributionMetric.start()", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3099, + "line": 3120, "symbol": "TimingDistributionMetric.stopAndAccumulate(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3106, + "line": 3127, "symbol": "TimingDistributionMetric.testGetNumRecordedErrors(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3114, + "line": 3135, "symbol": "TimingDistributionMetric.testGetValue(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3125, + "line": 3146, "symbol": "FfiConverterTypeTimingDistributionMetric", "symbol_kind": "source.lang.swift.decl.struct", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3130, + "line": 3151, "symbol": "FfiConverterTypeTimingDistributionMetric.lift(_:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3134, + "line": 3155, "symbol": "FfiConverterTypeTimingDistributionMetric.lower(_:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3138, + "line": 3159, "symbol": "FfiConverterTypeTimingDistributionMetric.read(from:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3149, + "line": 3170, "symbol": "FfiConverterTypeTimingDistributionMetric.write(_:into:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3159, + "line": 3180, "symbol": "FfiConverterTypeTimingDistributionMetric_lift(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3163, + "line": 3184, "symbol": "FfiConverterTypeTimingDistributionMetric_lower(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3170, + "line": 3191, "symbol": "UrlMetricProtocol", "symbol_kind": "source.lang.swift.decl.protocol", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3172, + "line": 3193, "symbol": "UrlMetricProtocol.set(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3174, + "line": 3195, "symbol": "UrlMetricProtocol.testGetNumRecordedErrors(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3176, + "line": 3197, "symbol": "UrlMetricProtocol.testGetValue(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3179, + "line": 3200, "symbol": "UrlMetric", "symbol_kind": "source.lang.swift.decl.class", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3185, + "line": 3206, "symbol": "UrlMetric.NoPointer.init()", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3191, + "line": 3212, "symbol": "UrlMetric.init(unsafeFromRawPointer:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3204, + "line": 3225, "symbol": "UrlMetric.uniffiClonePointer()", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3207, + "line": 3228, "symbol": "UrlMetric.init(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3227, + "line": 3249, "symbol": "UrlMetric.set(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3234, + "line": 3256, "symbol": "UrlMetric.testGetNumRecordedErrors(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3242, + "line": 3264, "symbol": "UrlMetric.testGetValue(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3253, + "line": 3275, "symbol": "FfiConverterTypeUrlMetric", "symbol_kind": "source.lang.swift.decl.struct", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3258, + "line": 3280, "symbol": "FfiConverterTypeUrlMetric.lift(_:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3262, + "line": 3284, "symbol": "FfiConverterTypeUrlMetric.lower(_:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3266, + "line": 3288, "symbol": "FfiConverterTypeUrlMetric.read(from:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3277, + "line": 3299, "symbol": "FfiConverterTypeUrlMetric.write(_:into:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3287, + "line": 3309, "symbol": "FfiConverterTypeUrlMetric_lift(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3291, + "line": 3313, "symbol": "FfiConverterTypeUrlMetric_lower(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3298, + "line": 3320, "symbol": "UuidMetricProtocol", "symbol_kind": "source.lang.swift.decl.protocol", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3300, + "line": 3322, "symbol": "UuidMetricProtocol.generateAndSet()", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3302, + "line": 3324, "symbol": "UuidMetricProtocol.set(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3304, + "line": 3326, "symbol": "UuidMetricProtocol.testGetNumRecordedErrors(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3306, + "line": 3328, "symbol": "UuidMetricProtocol.testGetValue(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3309, + "line": 3331, "symbol": "UuidMetric", "symbol_kind": "source.lang.swift.decl.class", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3315, + "line": 3337, "symbol": "UuidMetric.NoPointer.init()", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3321, + "line": 3343, "symbol": "UuidMetric.init(unsafeFromRawPointer:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3334, + "line": 3356, "symbol": "UuidMetric.uniffiClonePointer()", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3337, + "line": 3359, "symbol": "UuidMetric.init(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3357, + "line": 3380, "symbol": "UuidMetric.generateAndSet()", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3364, + "line": 3387, "symbol": "UuidMetric.set(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3371, + "line": 3394, "symbol": "UuidMetric.testGetNumRecordedErrors(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3379, + "line": 3402, "symbol": "UuidMetric.testGetValue(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3390, + "line": 3413, "symbol": "FfiConverterTypeUuidMetric", "symbol_kind": "source.lang.swift.decl.struct", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3395, + "line": 3418, "symbol": "FfiConverterTypeUuidMetric.lift(_:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3399, + "line": 3422, "symbol": "FfiConverterTypeUuidMetric.lower(_:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3403, + "line": 3426, "symbol": "FfiConverterTypeUuidMetric.read(from:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3414, + "line": 3437, "symbol": "FfiConverterTypeUuidMetric.write(_:into:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3424, + "line": 3447, "symbol": "FfiConverterTypeUuidMetric_lift(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3428, + "line": 3451, "symbol": "FfiConverterTypeUuidMetric_lower(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3433, + "line": 3456, "symbol": "ClientInfoMetrics", "symbol_kind": "source.lang.swift.decl.struct", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3434, + "line": 3457, "symbol": "ClientInfoMetrics.appBuild", "symbol_kind": "source.lang.swift.decl.var.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3435, + "line": 3458, "symbol": "ClientInfoMetrics.appDisplayVersion", "symbol_kind": "source.lang.swift.decl.var.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3436, + "line": 3459, "symbol": "ClientInfoMetrics.appBuildDate", "symbol_kind": "source.lang.swift.decl.var.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3437, + "line": 3460, "symbol": "ClientInfoMetrics.architecture", "symbol_kind": "source.lang.swift.decl.var.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3438, + "line": 3461, "symbol": "ClientInfoMetrics.osVersion", "symbol_kind": "source.lang.swift.decl.var.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3439, + "line": 3462, "symbol": "ClientInfoMetrics.channel", "symbol_kind": "source.lang.swift.decl.var.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3440, + "line": 3463, "symbol": "ClientInfoMetrics.locale", "symbol_kind": "source.lang.swift.decl.var.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3441, + "line": 3464, "symbol": "ClientInfoMetrics.deviceManufacturer", "symbol_kind": "source.lang.swift.decl.var.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3442, + "line": 3465, "symbol": "ClientInfoMetrics.deviceModel", "symbol_kind": "source.lang.swift.decl.var.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3443, + "line": 3466, "symbol": "ClientInfoMetrics.androidSdkVersion", "symbol_kind": "source.lang.swift.decl.var.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3444, + "line": 3467, "symbol": "ClientInfoMetrics.windowsBuildNumber", "symbol_kind": "source.lang.swift.decl.var.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3448, + "line": 3471, "symbol": "ClientInfoMetrics.init(appBuild:appDisplayVersion:appBuildDate:architecture:osVersion:channel:locale:deviceManufacturer:deviceModel:androidSdkVersion:windowsBuildNumber:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3465, + "line": 3488, "symbol": "ClientInfoMetrics", "symbol_kind": "source.lang.swift.decl.extension", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3519, + "line": 3542, "symbol": "FfiConverterTypeClientInfoMetrics", "symbol_kind": "source.lang.swift.decl.struct", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3520, + "line": 3543, "symbol": "FfiConverterTypeClientInfoMetrics.read(from:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3537, + "line": 3560, "symbol": "FfiConverterTypeClientInfoMetrics.write(_:into:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3553, + "line": 3576, "symbol": "FfiConverterTypeClientInfoMetrics_lift(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3557, + "line": 3580, "symbol": "FfiConverterTypeClientInfoMetrics_lower(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3562, + "line": 3585, "symbol": "CommonMetricData", "symbol_kind": "source.lang.swift.decl.struct", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3563, + "line": 3586, "symbol": "CommonMetricData.category", "symbol_kind": "source.lang.swift.decl.var.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3564, + "line": 3587, "symbol": "CommonMetricData.name", "symbol_kind": "source.lang.swift.decl.var.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3565, + "line": 3588, "symbol": "CommonMetricData.sendInPings", "symbol_kind": "source.lang.swift.decl.var.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3566, + "line": 3589, "symbol": "CommonMetricData.lifetime", "symbol_kind": "source.lang.swift.decl.var.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3567, + "line": 3590, "symbol": "CommonMetricData.disabled", "symbol_kind": "source.lang.swift.decl.var.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3568, + "line": 3591, "symbol": "CommonMetricData.dynamicLabel", "symbol_kind": "source.lang.swift.decl.var.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3572, + "line": 3595, "symbol": "CommonMetricData.init(category:name:sendInPings:lifetime:disabled:dynamicLabel:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3584, + "line": 3607, "symbol": "CommonMetricData", "symbol_kind": "source.lang.swift.decl.extension", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3618, + "line": 3641, "symbol": "FfiConverterTypeCommonMetricData", "symbol_kind": "source.lang.swift.decl.struct", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3619, + "line": 3642, "symbol": "FfiConverterTypeCommonMetricData.read(from:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3631, + "line": 3654, "symbol": "FfiConverterTypeCommonMetricData.write(_:into:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3642, + "line": 3665, "symbol": "FfiConverterTypeCommonMetricData_lift(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3646, + "line": 3669, "symbol": "FfiConverterTypeCommonMetricData_lower(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3651, + "line": 3674, "symbol": "Datetime", "symbol_kind": "source.lang.swift.decl.struct", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3652, + "line": 3675, "symbol": "Datetime.year", "symbol_kind": "source.lang.swift.decl.var.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3653, + "line": 3676, "symbol": "Datetime.month", "symbol_kind": "source.lang.swift.decl.var.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3654, + "line": 3677, "symbol": "Datetime.day", "symbol_kind": "source.lang.swift.decl.var.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3655, + "line": 3678, "symbol": "Datetime.hour", "symbol_kind": "source.lang.swift.decl.var.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3656, + "line": 3679, "symbol": "Datetime.minute", "symbol_kind": "source.lang.swift.decl.var.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3657, + "line": 3680, "symbol": "Datetime.second", "symbol_kind": "source.lang.swift.decl.var.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3658, + "line": 3681, "symbol": "Datetime.nanosecond", "symbol_kind": "source.lang.swift.decl.var.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3659, + "line": 3682, "symbol": "Datetime.offsetSeconds", "symbol_kind": "source.lang.swift.decl.var.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3663, + "line": 3686, "symbol": "Datetime.init(year:month:day:hour:minute:second:nanosecond:offsetSeconds:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3677, + "line": 3700, "symbol": "Datetime", "symbol_kind": "source.lang.swift.decl.extension", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3719, + "line": 3742, "symbol": "FfiConverterTypeDatetime", "symbol_kind": "source.lang.swift.decl.struct", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3720, + "line": 3743, "symbol": "FfiConverterTypeDatetime.read(from:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3734, + "line": 3757, "symbol": "FfiConverterTypeDatetime.write(_:into:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3747, + "line": 3770, "symbol": "FfiConverterTypeDatetime_lift(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3751, + "line": 3774, "symbol": "FfiConverterTypeDatetime_lower(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3756, + "line": 3779, "symbol": "DistributionData", "symbol_kind": "source.lang.swift.decl.struct", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3757, + "line": 3780, "symbol": "DistributionData.values", "symbol_kind": "source.lang.swift.decl.var.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3758, + "line": 3781, "symbol": "DistributionData.sum", "symbol_kind": "source.lang.swift.decl.var.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3759, + "line": 3782, "symbol": "DistributionData.count", "symbol_kind": "source.lang.swift.decl.var.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3763, + "line": 3786, "symbol": "DistributionData.init(values:sum:count:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3772, + "line": 3795, "symbol": "DistributionData", "symbol_kind": "source.lang.swift.decl.extension", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3794, + "line": 3817, "symbol": "FfiConverterTypeDistributionData", "symbol_kind": "source.lang.swift.decl.struct", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3795, + "line": 3818, "symbol": "FfiConverterTypeDistributionData.read(from:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3804, + "line": 3827, "symbol": "FfiConverterTypeDistributionData.write(_:into:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3812, + "line": 3835, "symbol": "FfiConverterTypeDistributionData_lift(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3816, + "line": 3839, "symbol": "FfiConverterTypeDistributionData_lower(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3821, + "line": 3844, "symbol": "InternalConfiguration", "symbol_kind": "source.lang.swift.decl.struct", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3822, + "line": 3845, "symbol": "InternalConfiguration.dataPath", "symbol_kind": "source.lang.swift.decl.var.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3823, + "line": 3846, "symbol": "InternalConfiguration.applicationId", "symbol_kind": "source.lang.swift.decl.var.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3824, + "line": 3847, "symbol": "InternalConfiguration.languageBindingName", "symbol_kind": "source.lang.swift.decl.var.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3825, + "line": 3848, "symbol": "InternalConfiguration.uploadEnabled", "symbol_kind": "source.lang.swift.decl.var.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3826, + "line": 3849, "symbol": "InternalConfiguration.maxEvents", "symbol_kind": "source.lang.swift.decl.var.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3827, + "line": 3850, "symbol": "InternalConfiguration.delayPingLifetimeIo", "symbol_kind": "source.lang.swift.decl.var.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3828, + "line": 3851, "symbol": "InternalConfiguration.appBuild", "symbol_kind": "source.lang.swift.decl.var.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3829, + "line": 3852, "symbol": "InternalConfiguration.useCoreMps", "symbol_kind": "source.lang.swift.decl.var.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3830, + "line": 3853, "symbol": "InternalConfiguration.trimDataToRegisteredPings", "symbol_kind": "source.lang.swift.decl.var.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3831, + "line": 3854, "symbol": "InternalConfiguration.logLevel", "symbol_kind": "source.lang.swift.decl.var.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3832, + "line": 3855, "symbol": "InternalConfiguration.rateLimit", "symbol_kind": "source.lang.swift.decl.var.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3833, + "line": 3856, "symbol": "InternalConfiguration.enableEventTimestamps", "symbol_kind": "source.lang.swift.decl.var.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3834, + "line": 3857, "symbol": "InternalConfiguration.experimentationId", "symbol_kind": "source.lang.swift.decl.var.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3835, + "line": 3858, "symbol": "InternalConfiguration.enableInternalPings", "symbol_kind": "source.lang.swift.decl.var.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3836, + "line": 3859, "symbol": "InternalConfiguration.pingSchedule", "symbol_kind": "source.lang.swift.decl.var.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3837, + "line": 3860, "symbol": "InternalConfiguration.pingLifetimeThreshold", "symbol_kind": "source.lang.swift.decl.var.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3838, + "line": 3861, "symbol": "InternalConfiguration.pingLifetimeMaxTime", "symbol_kind": "source.lang.swift.decl.var.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3842, + "line": 3865, "symbol": "InternalConfiguration.init(dataPath:applicationId:languageBindingName:uploadEnabled:maxEvents:delayPingLifetimeIo:appBuild:useCoreMps:trimDataToRegisteredPings:logLevel:rateLimit:enableEventTimestamps:experimentationId:enableInternalPings:pingSchedule:pingLifetimeThreshold:pingLifetimeMaxTime:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3865, + "line": 3888, "symbol": "InternalConfiguration", "symbol_kind": "source.lang.swift.decl.extension", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3943, + "line": 3966, "symbol": "FfiConverterTypeInternalConfiguration", "symbol_kind": "source.lang.swift.decl.struct", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3944, + "line": 3967, "symbol": "FfiConverterTypeInternalConfiguration.read(from:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3967, + "line": 3990, "symbol": "FfiConverterTypeInternalConfiguration.write(_:into:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3989, + "line": 4012, "symbol": "FfiConverterTypeInternalConfiguration_lift(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3993, + "line": 4016, "symbol": "FfiConverterTypeInternalConfiguration_lower(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3998, + "line": 4021, "symbol": "PingRateLimit", "symbol_kind": "source.lang.swift.decl.struct", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 3999, + "line": 4022, "symbol": "PingRateLimit.secondsPerInterval", "symbol_kind": "source.lang.swift.decl.var.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4000, + "line": 4023, "symbol": "PingRateLimit.pingsPerInterval", "symbol_kind": "source.lang.swift.decl.var.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4004, + "line": 4027, "symbol": "PingRateLimit.init(secondsPerInterval:pingsPerInterval:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4012, + "line": 4035, "symbol": "PingRateLimit", "symbol_kind": "source.lang.swift.decl.extension", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4030, + "line": 4053, "symbol": "FfiConverterTypePingRateLimit", "symbol_kind": "source.lang.swift.decl.struct", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4031, + "line": 4054, "symbol": "FfiConverterTypePingRateLimit.read(from:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4039, + "line": 4062, "symbol": "FfiConverterTypePingRateLimit.write(_:into:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4046, + "line": 4069, "symbol": "FfiConverterTypePingRateLimit_lift(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4050, + "line": 4073, "symbol": "FfiConverterTypePingRateLimit_lower(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4055, + "line": 4078, "symbol": "PingRequest", "symbol_kind": "source.lang.swift.decl.struct", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4056, + "line": 4079, "symbol": "PingRequest.documentId", "symbol_kind": "source.lang.swift.decl.var.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4057, + "line": 4080, "symbol": "PingRequest.path", "symbol_kind": "source.lang.swift.decl.var.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4058, + "line": 4081, "symbol": "PingRequest.body", "symbol_kind": "source.lang.swift.decl.var.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4059, + "line": 4082, "symbol": "PingRequest.headers", "symbol_kind": "source.lang.swift.decl.var.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4060, + "line": 4083, "symbol": "PingRequest.bodyHasInfoSections", "symbol_kind": "source.lang.swift.decl.var.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4061, + "line": 4084, "symbol": "PingRequest.pingName", "symbol_kind": "source.lang.swift.decl.var.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4065, + "line": 4088, "symbol": "PingRequest.init(documentId:path:body:headers:bodyHasInfoSections:pingName:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4077, + "line": 4100, "symbol": "PingRequest", "symbol_kind": "source.lang.swift.decl.extension", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4111, + "line": 4134, "symbol": "FfiConverterTypePingRequest", "symbol_kind": "source.lang.swift.decl.struct", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4112, + "line": 4135, "symbol": "FfiConverterTypePingRequest.read(from:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4124, + "line": 4147, "symbol": "FfiConverterTypePingRequest.write(_:into:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4135, + "line": 4158, "symbol": "FfiConverterTypePingRequest_lift(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4139, + "line": 4162, "symbol": "FfiConverterTypePingRequest_lower(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4144, + "line": 4167, "symbol": "Rate", "symbol_kind": "source.lang.swift.decl.struct", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4145, + "line": 4168, "symbol": "Rate.numerator", "symbol_kind": "source.lang.swift.decl.var.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4146, + "line": 4169, "symbol": "Rate.denominator", "symbol_kind": "source.lang.swift.decl.var.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4150, + "line": 4173, "symbol": "Rate.init(numerator:denominator:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4158, + "line": 4181, "symbol": "Rate", "symbol_kind": "source.lang.swift.decl.extension", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4176, + "line": 4199, "symbol": "FfiConverterTypeRate", "symbol_kind": "source.lang.swift.decl.struct", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4177, + "line": 4200, "symbol": "FfiConverterTypeRate.read(from:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4185, + "line": 4208, "symbol": "FfiConverterTypeRate.write(_:into:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4192, + "line": 4215, "symbol": "FfiConverterTypeRate_lift(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4196, + "line": 4219, "symbol": "FfiConverterTypeRate_lower(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4201, + "line": 4224, "symbol": "RecordedEvent", "symbol_kind": "source.lang.swift.decl.struct", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4202, + "line": 4225, "symbol": "RecordedEvent.timestamp", "symbol_kind": "source.lang.swift.decl.var.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4203, + "line": 4226, "symbol": "RecordedEvent.category", "symbol_kind": "source.lang.swift.decl.var.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4204, + "line": 4227, "symbol": "RecordedEvent.name", "symbol_kind": "source.lang.swift.decl.var.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4205, + "line": 4228, "symbol": "RecordedEvent.extra", "symbol_kind": "source.lang.swift.decl.var.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4209, + "line": 4232, "symbol": "RecordedEvent.init(timestamp:category:name:extra:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4219, + "line": 4242, "symbol": "RecordedEvent", "symbol_kind": "source.lang.swift.decl.extension", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4245, + "line": 4268, "symbol": "FfiConverterTypeRecordedEvent", "symbol_kind": "source.lang.swift.decl.struct", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4246, + "line": 4269, "symbol": "FfiConverterTypeRecordedEvent.read(from:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4256, + "line": 4279, "symbol": "FfiConverterTypeRecordedEvent.write(_:into:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4265, + "line": 4288, "symbol": "FfiConverterTypeRecordedEvent_lift(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4269, + "line": 4292, "symbol": "FfiConverterTypeRecordedEvent_lower(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4274, + "line": 4297, "symbol": "RecordedExperiment", "symbol_kind": "source.lang.swift.decl.struct", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4275, + "line": 4298, "symbol": "RecordedExperiment.branch", "symbol_kind": "source.lang.swift.decl.var.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4276, + "line": 4299, "symbol": "RecordedExperiment.extra", "symbol_kind": "source.lang.swift.decl.var.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4280, + "line": 4303, "symbol": "RecordedExperiment.init(branch:extra:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4288, + "line": 4311, "symbol": "RecordedExperiment", "symbol_kind": "source.lang.swift.decl.extension", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4306, + "line": 4329, "symbol": "FfiConverterTypeRecordedExperiment", "symbol_kind": "source.lang.swift.decl.struct", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4307, + "line": 4330, "symbol": "FfiConverterTypeRecordedExperiment.read(from:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4315, + "line": 4338, "symbol": "FfiConverterTypeRecordedExperiment.write(_:into:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4322, + "line": 4345, "symbol": "FfiConverterTypeRecordedExperiment_lift(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4326, + "line": 4349, "symbol": "FfiConverterTypeRecordedExperiment_lower(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4331, + "line": 4354, "symbol": "TimerId", "symbol_kind": "source.lang.swift.decl.struct", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4332, + "line": 4355, "symbol": "TimerId.id", "symbol_kind": "source.lang.swift.decl.var.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4336, + "line": 4359, "symbol": "TimerId.init(id:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4343, + "line": 4366, "symbol": "TimerId", "symbol_kind": "source.lang.swift.decl.extension", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4357, + "line": 4380, "symbol": "FfiConverterTypeTimerId", "symbol_kind": "source.lang.swift.decl.struct", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4358, + "line": 4381, "symbol": "FfiConverterTypeTimerId.read(from:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4365, + "line": 4388, "symbol": "FfiConverterTypeTimerId.write(_:into:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4371, + "line": 4394, "symbol": "FfiConverterTypeTimerId_lift(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4375, + "line": 4398, "symbol": "FfiConverterTypeTimerId_lower(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4380, + "line": 4403, "symbol": "CallbackError", "symbol_kind": "source.lang.swift.decl.enum", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4384, + "line": 4407, "symbol": "CallbackError.UnexpectedError(message:)", "symbol_kind": "source.lang.swift.decl.enumelement", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4389, + "line": 4412, "symbol": "FfiConverterTypeCallbackError", "symbol_kind": "source.lang.swift.decl.struct", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4392, + "line": 4415, "symbol": "FfiConverterTypeCallbackError.read(from:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4408, + "line": 4431, "symbol": "FfiConverterTypeCallbackError.write(_:into:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4423, + "line": 4446, "symbol": "CallbackError", "symbol_kind": "source.lang.swift.decl.extension", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4425, + "line": 4448, "symbol": "CallbackError", "symbol_kind": "source.lang.swift.decl.extension", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4430, + "line": 4457, "symbol": "ErrorType", "symbol_kind": "source.lang.swift.decl.enum", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4432, + "line": 4459, "symbol": "ErrorType.invalidValue", "symbol_kind": "source.lang.swift.decl.enumelement", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4433, + "line": 4460, "symbol": "ErrorType.invalidLabel", "symbol_kind": "source.lang.swift.decl.enumelement", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4434, + "line": 4461, "symbol": "ErrorType.invalidState", "symbol_kind": "source.lang.swift.decl.enumelement", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4435, + "line": 4462, "symbol": "ErrorType.invalidOverflow", "symbol_kind": "source.lang.swift.decl.enumelement", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4439, + "line": 4466, "symbol": "FfiConverterTypeErrorType", "symbol_kind": "source.lang.swift.decl.struct", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4442, + "line": 4469, "symbol": "FfiConverterTypeErrorType.read(from:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4458, + "line": 4485, "symbol": "FfiConverterTypeErrorType.write(_:into:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4482, + "line": 4509, "symbol": "FfiConverterTypeErrorType_lift(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4486, + "line": 4513, "symbol": "FfiConverterTypeErrorType_lower(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4492, + "line": 4519, "symbol": "ErrorType", "symbol_kind": "source.lang.swift.decl.extension", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4499, + "line": 4526, "symbol": "HistogramType", "symbol_kind": "source.lang.swift.decl.enum", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4501, + "line": 4528, "symbol": "HistogramType.linear", "symbol_kind": "source.lang.swift.decl.enumelement", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4502, + "line": 4529, "symbol": "HistogramType.exponential", "symbol_kind": "source.lang.swift.decl.enumelement", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4506, + "line": 4533, "symbol": "FfiConverterTypeHistogramType", "symbol_kind": "source.lang.swift.decl.struct", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4509, + "line": 4536, "symbol": "FfiConverterTypeHistogramType.read(from:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4521, + "line": 4548, "symbol": "FfiConverterTypeHistogramType.write(_:into:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4537, + "line": 4564, "symbol": "FfiConverterTypeHistogramType_lift(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4541, + "line": 4568, "symbol": "FfiConverterTypeHistogramType_lower(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4547, + "line": 4574, "symbol": "HistogramType", "symbol_kind": "source.lang.swift.decl.extension", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4554, + "line": 4581, "symbol": "LabeledMetricData", "symbol_kind": "source.lang.swift.decl.enum", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4556, + "line": 4583, "symbol": "LabeledMetricData.common(cmd:)", "symbol_kind": "source.lang.swift.decl.enumelement", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4558, + "line": 4585, "symbol": "LabeledMetricData.customDistribution(cmd:rangeMin:rangeMax:bucketCount:histogramType:)", "symbol_kind": "source.lang.swift.decl.enumelement", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4560, + "line": 4587, "symbol": "LabeledMetricData.memoryDistribution(cmd:unit:)", "symbol_kind": "source.lang.swift.decl.enumelement", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4562, + "line": 4589, "symbol": "LabeledMetricData.timingDistribution(cmd:unit:)", "symbol_kind": "source.lang.swift.decl.enumelement", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4567, + "line": 4594, "symbol": "FfiConverterTypeLabeledMetricData", "symbol_kind": "source.lang.swift.decl.struct", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4570, + "line": 4597, "symbol": "FfiConverterTypeLabeledMetricData.read(from:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4590, + "line": 4617, "symbol": "FfiConverterTypeLabeledMetricData.write(_:into:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4624, + "line": 4651, "symbol": "FfiConverterTypeLabeledMetricData_lift(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4628, + "line": 4655, "symbol": "FfiConverterTypeLabeledMetricData_lower(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4634, + "line": 4661, "symbol": "LabeledMetricData", "symbol_kind": "source.lang.swift.decl.extension", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4641, + "line": 4668, "symbol": "LevelFilter", "symbol_kind": "source.lang.swift.decl.enum", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4643, + "line": 4670, "symbol": "LevelFilter.off", "symbol_kind": "source.lang.swift.decl.enumelement", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4644, + "line": 4671, "symbol": "LevelFilter.error", "symbol_kind": "source.lang.swift.decl.enumelement", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4645, + "line": 4672, "symbol": "LevelFilter.warn", "symbol_kind": "source.lang.swift.decl.enumelement", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4646, + "line": 4673, "symbol": "LevelFilter.info", "symbol_kind": "source.lang.swift.decl.enumelement", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4647, + "line": 4674, "symbol": "LevelFilter.debug", "symbol_kind": "source.lang.swift.decl.enumelement", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4648, + "line": 4675, "symbol": "LevelFilter.trace", "symbol_kind": "source.lang.swift.decl.enumelement", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4652, + "line": 4679, "symbol": "FfiConverterTypeLevelFilter", "symbol_kind": "source.lang.swift.decl.struct", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4655, + "line": 4682, "symbol": "FfiConverterTypeLevelFilter.read(from:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4675, + "line": 4702, "symbol": "FfiConverterTypeLevelFilter.write(_:into:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4707, + "line": 4734, "symbol": "FfiConverterTypeLevelFilter_lift(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4711, + "line": 4738, "symbol": "FfiConverterTypeLevelFilter_lower(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4717, + "line": 4744, "symbol": "LevelFilter", "symbol_kind": "source.lang.swift.decl.extension", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4724, + "line": 4751, "symbol": "Lifetime", "symbol_kind": "source.lang.swift.decl.enum", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4726, + "line": 4753, "symbol": "Lifetime.ping", "symbol_kind": "source.lang.swift.decl.enumelement", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4727, + "line": 4754, "symbol": "Lifetime.application", "symbol_kind": "source.lang.swift.decl.enumelement", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4728, + "line": 4755, "symbol": "Lifetime.user", "symbol_kind": "source.lang.swift.decl.enumelement", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4732, + "line": 4759, "symbol": "FfiConverterTypeLifetime", "symbol_kind": "source.lang.swift.decl.struct", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4735, + "line": 4762, "symbol": "FfiConverterTypeLifetime.read(from:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4749, + "line": 4776, "symbol": "FfiConverterTypeLifetime.write(_:into:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4769, + "line": 4796, "symbol": "FfiConverterTypeLifetime_lift(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4773, + "line": 4800, "symbol": "FfiConverterTypeLifetime_lower(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4779, + "line": 4806, "symbol": "Lifetime", "symbol_kind": "source.lang.swift.decl.extension", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4786, + "line": 4813, "symbol": "MemoryUnit", "symbol_kind": "source.lang.swift.decl.enum", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4788, + "line": 4815, "symbol": "MemoryUnit.byte", "symbol_kind": "source.lang.swift.decl.enumelement", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4789, + "line": 4816, "symbol": "MemoryUnit.kilobyte", "symbol_kind": "source.lang.swift.decl.enumelement", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4790, + "line": 4817, "symbol": "MemoryUnit.megabyte", "symbol_kind": "source.lang.swift.decl.enumelement", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4791, + "line": 4818, "symbol": "MemoryUnit.gigabyte", "symbol_kind": "source.lang.swift.decl.enumelement", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4795, + "line": 4822, "symbol": "FfiConverterTypeMemoryUnit", "symbol_kind": "source.lang.swift.decl.struct", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4798, + "line": 4825, "symbol": "FfiConverterTypeMemoryUnit.read(from:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4814, + "line": 4841, "symbol": "FfiConverterTypeMemoryUnit.write(_:into:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4838, + "line": 4865, "symbol": "FfiConverterTypeMemoryUnit_lift(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4842, + "line": 4869, "symbol": "FfiConverterTypeMemoryUnit_lower(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4848, + "line": 4875, "symbol": "MemoryUnit", "symbol_kind": "source.lang.swift.decl.extension", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4855, + "line": 4882, "symbol": "PingUploadTask", "symbol_kind": "source.lang.swift.decl.enum", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4857, + "line": 4884, "symbol": "PingUploadTask.upload(request:)", "symbol_kind": "source.lang.swift.decl.enumelement", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4859, + "line": 4886, "symbol": "PingUploadTask.wait(time:)", "symbol_kind": "source.lang.swift.decl.enumelement", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4861, + "line": 4888, "symbol": "PingUploadTask.done(unused:)", "symbol_kind": "source.lang.swift.decl.enumelement", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4866, + "line": 4893, "symbol": "FfiConverterTypePingUploadTask", "symbol_kind": "source.lang.swift.decl.struct", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4869, + "line": 4896, "symbol": "FfiConverterTypePingUploadTask.read(from:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4886, + "line": 4913, "symbol": "FfiConverterTypePingUploadTask.write(_:into:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4909, + "line": 4936, "symbol": "FfiConverterTypePingUploadTask_lift(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4913, + "line": 4940, "symbol": "FfiConverterTypePingUploadTask_lower(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4919, + "line": 4946, "symbol": "PingUploadTask", "symbol_kind": "source.lang.swift.decl.extension", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4926, + "line": 4953, "symbol": "TimeUnit", "symbol_kind": "source.lang.swift.decl.enum", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4928, + "line": 4955, "symbol": "TimeUnit.nanosecond", "symbol_kind": "source.lang.swift.decl.enumelement", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4929, + "line": 4956, "symbol": "TimeUnit.microsecond", "symbol_kind": "source.lang.swift.decl.enumelement", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4930, + "line": 4957, "symbol": "TimeUnit.millisecond", "symbol_kind": "source.lang.swift.decl.enumelement", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4931, + "line": 4958, "symbol": "TimeUnit.second", "symbol_kind": "source.lang.swift.decl.enumelement", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4932, + "line": 4959, "symbol": "TimeUnit.minute", "symbol_kind": "source.lang.swift.decl.enumelement", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4933, + "line": 4960, "symbol": "TimeUnit.hour", "symbol_kind": "source.lang.swift.decl.enumelement", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4934, + "line": 4961, "symbol": "TimeUnit.day", "symbol_kind": "source.lang.swift.decl.enumelement", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4938, + "line": 4965, "symbol": "FfiConverterTypeTimeUnit", "symbol_kind": "source.lang.swift.decl.struct", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4941, + "line": 4968, "symbol": "FfiConverterTypeTimeUnit.read(from:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4963, + "line": 4990, "symbol": "FfiConverterTypeTimeUnit.write(_:into:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 4999, + "line": 5026, "symbol": "FfiConverterTypeTimeUnit_lift(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 5003, + "line": 5030, "symbol": "FfiConverterTypeTimeUnit_lower(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 5009, + "line": 5036, "symbol": "TimeUnit", "symbol_kind": "source.lang.swift.decl.extension", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 5016, + "line": 5043, "symbol": "UploadResult", "symbol_kind": "source.lang.swift.decl.enum", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 5018, + "line": 5045, "symbol": "UploadResult.recoverableFailure(unused:)", "symbol_kind": "source.lang.swift.decl.enumelement", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 5020, + "line": 5047, "symbol": "UploadResult.unrecoverableFailure(unused:)", "symbol_kind": "source.lang.swift.decl.enumelement", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 5022, + "line": 5049, "symbol": "UploadResult.httpStatus(code:)", "symbol_kind": "source.lang.swift.decl.enumelement", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 5024, + "line": 5051, "symbol": "UploadResult.done(unused:)", "symbol_kind": "source.lang.swift.decl.enumelement", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 5029, + "line": 5056, "symbol": "FfiConverterTypeUploadResult", "symbol_kind": "source.lang.swift.decl.struct", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 5032, + "line": 5059, "symbol": "FfiConverterTypeUploadResult.read(from:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 5052, + "line": 5079, "symbol": "FfiConverterTypeUploadResult.write(_:into:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 5080, + "line": 5107, "symbol": "FfiConverterTypeUploadResult_lift(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 5084, + "line": 5111, "symbol": "FfiConverterTypeUploadResult_lower(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 5090, + "line": 5117, "symbol": "UploadResult", "symbol_kind": "source.lang.swift.decl.extension", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 5097, + "line": 5124, "symbol": "UploadTaskAction", "symbol_kind": "source.lang.swift.decl.enum", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 5099, + "line": 5126, "symbol": "UploadTaskAction.next", "symbol_kind": "source.lang.swift.decl.enumelement", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 5100, + "line": 5127, "symbol": "UploadTaskAction.end", "symbol_kind": "source.lang.swift.decl.enumelement", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 5104, + "line": 5131, "symbol": "FfiConverterTypeUploadTaskAction", "symbol_kind": "source.lang.swift.decl.struct", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 5107, + "line": 5134, "symbol": "FfiConverterTypeUploadTaskAction.read(from:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 5119, + "line": 5146, "symbol": "FfiConverterTypeUploadTaskAction.write(_:into:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 5135, + "line": 5162, "symbol": "FfiConverterTypeUploadTaskAction_lift(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 5139, + "line": 5166, "symbol": "FfiConverterTypeUploadTaskAction_lower(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 5145, + "line": 5172, "symbol": "UploadTaskAction", "symbol_kind": "source.lang.swift.decl.extension", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 5152, + "line": 5179, "symbol": "GleanEventListener", "symbol_kind": "source.lang.swift.decl.protocol", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 5154, + "line": 5181, "symbol": "GleanEventListener.onEventRecorded(_:)", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 5217, + "line": 5244, "symbol": "FfiConverterCallbackInterfaceGleanEventListener.lift(_:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 5221, + "line": 5248, "symbol": "FfiConverterCallbackInterfaceGleanEventListener.read(from:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 5226, + "line": 5253, "symbol": "FfiConverterCallbackInterfaceGleanEventListener.lower(_:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 5230, + "line": 5257, "symbol": "FfiConverterCallbackInterfaceGleanEventListener.write(_:into:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 5238, + "line": 5265, "symbol": "OnGleanEvents", "symbol_kind": "source.lang.swift.decl.protocol", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 5240, + "line": 5267, "symbol": "OnGleanEvents.initializeFinished()", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 5242, + "line": 5269, "symbol": "OnGleanEvents.triggerUpload()", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 5244, + "line": 5271, "symbol": "OnGleanEvents.startMetricsPingScheduler()", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 5246, + "line": 5273, "symbol": "OnGleanEvents.cancelUploads()", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 5248, + "line": 5275, "symbol": "OnGleanEvents.shutdown()", "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 5394, + "line": 5421, "symbol": "FfiConverterCallbackInterfaceOnGleanEvents.lift(_:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 5398, + "line": 5425, "symbol": "FfiConverterCallbackInterfaceOnGleanEvents.read(from:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 5403, + "line": 5430, "symbol": "FfiConverterCallbackInterfaceOnGleanEvents.lower(_:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 5407, + "line": 5434, "symbol": "FfiConverterCallbackInterfaceOnGleanEvents.write(_:into:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 5955, + "line": 5982, "symbol": "FfiConverterTypeCowString", "symbol_kind": "source.lang.swift.decl.struct", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 5956, + "line": 5983, "symbol": "FfiConverterTypeCowString.read(from:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 5960, + "line": 5987, "symbol": "FfiConverterTypeCowString.write(_:into:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 5964, + "line": 5991, "symbol": "FfiConverterTypeCowString.lift(_:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 5968, + "line": 5995, "symbol": "FfiConverterTypeCowString.lower(_:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 5974, + "line": 6001, "symbol": "FfiConverterTypeCowString_lift(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 5978, + "line": 6005, "symbol": "FfiConverterTypeCowString_lower(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 5988, + "line": 6015, "symbol": "FfiConverterTypeJsonValue", "symbol_kind": "source.lang.swift.decl.struct", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 5989, + "line": 6016, "symbol": "FfiConverterTypeJsonValue.read(from:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 5993, + "line": 6020, "symbol": "FfiConverterTypeJsonValue.write(_:into:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 5997, + "line": 6024, "symbol": "FfiConverterTypeJsonValue.lift(_:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 6001, + "line": 6028, "symbol": "FfiConverterTypeJsonValue.lower(_:)", "symbol_kind": "source.lang.swift.decl.function.method.static", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 6007, + "line": 6034, "symbol": "FfiConverterTypeJsonValue_lift(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 6011, + "line": 6038, "symbol": "FfiConverterTypeJsonValue_lower(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 6014, + "line": 6041, "symbol": "gleanApplyServerKnobsConfig(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 6020, + "line": 6047, "symbol": "gleanEnableLogging()", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 6025, + "line": 6052, "symbol": "gleanEnableLoggingToFd(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 6031, + "line": 6058, "symbol": "gleanGetUploadTask()", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 6037, + "line": 6064, "symbol": "gleanHandleClientActive()", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 6042, + "line": 6069, "symbol": "gleanHandleClientInactive()", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 6047, + "line": 6074, "symbol": "gleanInitialize(_:_:_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 6055, + "line": 6082, "symbol": "gleanInitializeForSubprocess(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 6062, + "line": 6089, "symbol": "gleanPersistPingLifetimeData()", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 6067, + "line": 6094, "symbol": "gleanProcessPingUploadResponse(_:_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 6075, + "line": 6102, "symbol": "gleanRegisterEventListener(_:_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 6082, + "line": 6109, "symbol": "gleanSetDebugViewTag(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 6089, + "line": 6116, "symbol": "gleanSetDirtyFlag(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 6095, + "line": 6122, "symbol": "gleanSetExperimentActive(_:_:_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 6103, + "line": 6130, "symbol": "gleanSetExperimentInactive(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 6109, + "line": 6136, "symbol": "gleanSetExperimentationId(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 6115, + "line": 6142, "symbol": "gleanSetLogPings(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 6121, + "line": 6148, "symbol": "gleanSetSourceTags(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 6128, + "line": 6155, "symbol": "gleanSetTestMode(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 6134, + "line": 6161, "symbol": "gleanSetUploadEnabled(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 6148, + "line": 6175, "symbol": "gleanSubmitPingByName(_:_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 6155, + "line": 6182, "symbol": "gleanSubmitPingByNameSync(_:_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 6163, + "line": 6190, "symbol": "gleanTestDestroyGlean(_:_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 6170, + "line": 6197, "symbol": "gleanTestGetExperimentData(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 6177, + "line": 6204, "symbol": "gleanTestGetExperimentationId()", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented" }, { "file": "/Users/distiller/project/glean-core/ios/Glean/Generated/uniffi/glean.swift", - "line": 6183, + "line": 6210, "symbol": "gleanUnregisterEventListener(_:)", "symbol_kind": "source.lang.swift.decl.function.free", "warning": "undocumented"