Skip to main content

Sample

Struct Sample 

Source
pub struct Sample<'a> {
    pub location_ids: Record<&'a [u64], 1, NO_OPT_ZERO>,
    pub values: Record<&'a [i64], 2, NO_OPT_ZERO>,
    pub labels: &'a [Record<Label, 3, NO_OPT_ZERO>],
}
Expand description

Each Sample records values encountered in some program context. The program context is typically a stack trace, perhaps augmented with auxiliary information like the thread-id, some indicator of a higher level request being handled, etc.

It borrows its data but requires it to be a slice. An iterator wouldn’t work well because we have to walk over the fields twice: one to calculate the length, and one to encode it.

Fields§

§location_ids: Record<&'a [u64], 1, NO_OPT_ZERO>

The ids recorded here correspond to a Profile.location.id. The leaf is at location_id[0].

§values: Record<&'a [i64], 2, NO_OPT_ZERO>

The type and unit of each value is defined by the corresponding entry in Profile.sample_type. All samples must have the same number of values, the same as the length of Profile.sample_type. When aggregating multiple samples into a single sample, the result has a list of values that is the element-wise sum of the original lists.

§labels: &'a [Record<Label, 3, NO_OPT_ZERO>]

NOTE: While possible, having multiple values for the same label key is strongly discouraged and should never be used. Most tools (e.g. pprof) do not have good (or any) support for multi-value labels. And an even more discouraged case is having a string label and a numeric label of the same name on a sample. Again, possible to express, but should not be used.

Trait Implementations§

Source§

impl<'a> Clone for Sample<'a>

Source§

fn clone(&self) -> Sample<'a>

Returns a duplicate 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<'a> Debug for Sample<'a>

Source§

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

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

impl<'a> Default for Sample<'a>

Source§

fn default() -> Sample<'a>

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

impl<'a> PartialEq for Sample<'a>

Source§

fn eq(&self, other: &Sample<'a>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

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

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Value for Sample<'_>

§Safety

The Default implementation will return all zero-representations.

Source§

const WIRE_TYPE: WireType = WireType::LengthDelimited

The wire type this value uses.
Source§

fn proto_len(&self) -> u64

The number of bytes it takes to encode this value. Do not include the number of bytes it takes to encode the length-prefix as a varint. For example, using this snippet of the reference: Read more
Source§

fn encode<W: Write>(&self, writer: &mut W) -> Result<()>

Encode the value to the in-wire protobuf format. For length-delimited types, do not include the length-prefix; see Value::proto_len for more details. Read more
Source§

impl<'a> Copy for Sample<'a>

Source§

impl<'a> Eq for Sample<'a>

Source§

impl<'a> StructuralPartialEq for Sample<'a>

Auto Trait Implementations§

§

impl<'a> Freeze for Sample<'a>

§

impl<'a> RefUnwindSafe for Sample<'a>

§

impl<'a> Send for Sample<'a>

§

impl<'a> Sync for Sample<'a>

§

impl<'a> Unpin for Sample<'a>

§

impl<'a> UnsafeUnpin for Sample<'a>

§

impl<'a> UnwindSafe for Sample<'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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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.

Source§

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

Source§

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>,

Source§

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>,

Source§

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.