Struct glib::variant::Variant

source ·
#[repr(transparent)]
pub struct Variant { /* private fields */ }
Expand description

A generic immutable value capable of carrying various types.

See the module documentation for more details.

Implementations§

source§

impl Variant

source

pub fn type_(&self) -> &VariantTy

Returns the type of the value.

source

pub fn is<T: StaticVariantType>(&self) -> bool

Returns true if the type of the value corresponds to T.

source

pub fn is_type(&self, type_: &VariantTy) -> bool

Returns true if the type of the value corresponds to type_.

This is equivalent to self.type_().is_subtype_of(type_).

source

pub fn classify(&self) -> VariantClass

Returns the classification of the variant.

source

pub fn get<T: FromVariant>(&self) -> Option<T>

Tries to extract a value of type T.

Returns Some if T matches the variant’s type.

source

pub fn try_get<T: FromVariant>(&self) -> Result<T, VariantTypeMismatchError>

Tries to extract a value of type T.

source

pub fn from_variant(value: &Variant) -> Self

Boxes value.

source

pub fn as_variant(&self) -> Option<Variant>

Unboxes self.

Returns Some if self contains a Variant.

source

pub fn child_value(&self, index: usize) -> Variant

Reads a child item out of a container Variant instance.

Panics
  • if self is not a container type.
  • if given index is larger than number of children.
source

pub fn try_child_value(&self, index: usize) -> Option<Variant>

Try to read a child item out of a container Variant instance.

It returns None if self is not a container type or if the given index is larger than number of children.

source

pub fn try_child_get<T: StaticVariantType + FromVariant>( &self, index: usize ) -> Result<Option<T>, VariantTypeMismatchError>

Try to read a child item out of a container Variant instance.

It returns Ok(None) if self is not a container type or if the given index is larger than number of children. An error is thrown if the type does not match.

source

pub fn child_get<T: StaticVariantType + FromVariant>(&self, index: usize) -> T

Read a child item out of a container Variant instance.

Panics
  • if self is not a container type.
  • if given index is larger than number of children.
  • if the expected variant type does not match
source

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

Tries to extract a &str.

Returns Some if the variant has a string type (s, o or g type strings).

source

pub fn fixed_array<T: FixedSizeVariantType>( &self ) -> Result<&[T], VariantTypeMismatchError>

Tries to extract a &[T] from a variant of array type with a suitable element type.

Returns an error if the type is wrong.

source

pub fn array_from_iter<T: StaticVariantType, I: IntoIterator<Item = Variant>>( children: I ) -> Self

Creates a new Variant array from children.

Panics

This function panics if not all variants are of type T.

source

pub fn array_from_iter_with_type<T: AsRef<Variant>, I: IntoIterator<Item = T>>( type_: &VariantTy, children: I ) -> Self

Creates a new Variant array from children with the specified type.

Panics

This function panics if not all variants are of type type_.

source

pub fn array_from_fixed_array<T: FixedSizeVariantType>(array: &[T]) -> Self

Creates a new Variant array from a fixed array.

source

pub fn tuple_from_iter( children: impl IntoIterator<Item = impl AsRef<Variant>> ) -> Self

Creates a new Variant tuple from children.

source

pub fn from_dict_entry(key: &Variant, value: &Variant) -> Self

Creates a new dictionary entry Variant.

DictEntry should be preferred over this when the types are known statically.

source

pub fn from_maybe<T: StaticVariantType>(child: Option<&Variant>) -> Self

Creates a new maybe Variant.

source

pub fn from_some(child: &Variant) -> Self

Creates a new maybe Variant from a child.

source

pub fn from_none(type_: &VariantTy) -> Self

Creates a new maybe Variant with Nothing.

source

pub fn as_maybe(&self) -> Option<Variant>

Extract the value of a maybe Variant.

Returns the child value, or None if the value is Nothing.

Panics

Panics if compiled with debug_assertions and the variant is not maybe-typed.

source

pub fn print(&self, type_annotate: bool) -> GString

Pretty-print the contents of this variant in a human-readable form.

A variant can be recreated from this output via Variant::parse.

source

pub fn parse(type_: Option<&VariantTy>, text: &str) -> Result<Self, Error>

Parses a GVariant from the text representation produced by print().

source

pub fn from_bytes<T: StaticVariantType>(bytes: &Bytes) -> Self

Constructs a new serialized-mode GVariant instance.

source

pub unsafe fn from_bytes_trusted<T: StaticVariantType>(bytes: &Bytes) -> Self

Constructs a new serialized-mode GVariant instance.

This is the same as from_bytes, except that checks on the passed data are skipped.

You should not use this function on data from external sources.

Safety

Since the data is not validated, this is potentially dangerous if called on bytes which are not guaranteed to have come from serialising another Variant. The caller is responsible for ensuring bad data is not passed in.

source

pub fn from_data<T: StaticVariantType, A: AsRef<[u8]>>(data: A) -> Self

Constructs a new serialized-mode GVariant instance.

source

pub unsafe fn from_data_trusted<T: StaticVariantType, A: AsRef<[u8]>>( data: A ) -> Self

Constructs a new serialized-mode GVariant instance.

This is the same as from_data, except that checks on the passed data are skipped.

You should not use this function on data from external sources.

Safety

Since the data is not validated, this is potentially dangerous if called on bytes which are not guaranteed to have come from serialising another Variant. The caller is responsible for ensuring bad data is not passed in.

source

pub fn from_bytes_with_type(bytes: &Bytes, type_: &VariantTy) -> Self

Constructs a new serialized-mode GVariant instance with a given type.

source

pub unsafe fn from_bytes_with_type_trusted( bytes: &Bytes, type_: &VariantTy ) -> Self

Constructs a new serialized-mode GVariant instance with a given type.

This is the same as from_bytes, except that checks on the passed data are skipped.

You should not use this function on data from external sources.

Safety

Since the data is not validated, this is potentially dangerous if called on bytes which are not guaranteed to have come from serialising another Variant. The caller is responsible for ensuring bad data is not passed in.

source

pub fn from_data_with_type<A: AsRef<[u8]>>(data: A, type_: &VariantTy) -> Self

Constructs a new serialized-mode GVariant instance with a given type.

source

pub unsafe fn from_data_with_type_trusted<A: AsRef<[u8]>>( data: A, type_: &VariantTy ) -> Self

Constructs a new serialized-mode GVariant instance with a given type.

This is the same as from_data, except that checks on the passed data are skipped.

You should not use this function on data from external sources.

Safety

Since the data is not validated, this is potentially dangerous if called on bytes which are not guaranteed to have come from serialising another Variant. The caller is responsible for ensuring bad data is not passed in.

source

pub fn data_as_bytes(&self) -> Bytes

Returns the serialized form of a GVariant instance.

source

pub fn data(&self) -> &[u8]

Returns the serialized form of a GVariant instance.

source

pub fn size(&self) -> usize

Returns the size of serialized form of a GVariant instance.

source

pub fn store(&self, data: &mut [u8]) -> Result<usize, BoolError>

Stores the serialized form of a GVariant instance into the given slice.

The slice needs to be big enough.

source

pub fn normal_form(&self) -> Self

Returns a copy of the variant in normal form.

source

pub fn byteswap(&self) -> Self

Returns a copy of the variant in the opposite endianness.

source

pub fn n_children(&self) -> usize

Determines the number of children in a container GVariant instance.

source

pub fn iter(&self) -> VariantIter

Create an iterator over items in the variant.

Note that this heap allocates a variant for each element, which can be particularly expensive for large arrays.

source

pub fn array_iter_str( &self ) -> Result<VariantStrIter<'_>, VariantTypeMismatchError>

Create an iterator over borrowed strings from a GVariant of type as (array of string).

This will fail if the variant is not an array of with the expected child type.

A benefit of this API over Self::iter() is that it minimizes allocation, and provides strongly typed access.

let strs = &["foo", "bar"];
let strs_variant: glib::Variant = strs.to_variant();
for s in strs_variant.array_iter_str()? {
    println!("{}", s);
}
source

pub fn is_container(&self) -> bool

Return whether this Variant is a container type.

source

pub fn is_normal_form(&self) -> bool

Return whether this Variant is in normal form.

source

pub fn is_object_path(string: &str) -> bool

Return whether input string is a valid VariantClass::ObjectPath.

source

pub fn is_signature(string: &str) -> bool

Return whether input string is a valid VariantClass::Signature.

Trait Implementations§

source§

impl AsRef<Variant> for Variant

source§

fn as_ref(&self) -> &Self

Converts this type into a shared reference of the (usually inferred) input type.
source§

impl Clone for Variant

source§

fn clone(&self) -> Self

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 Variant

source§

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

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

impl Display for Variant

source§

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

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

impl From<Variant> for VariantDict

source§

fn from(other: Variant) -> Self

Converts to this type from the input type.
source§

impl<T: ToVariant + StaticVariantType> FromIterator<T> for Variant

source§

fn from_iter<I: IntoIterator<Item = T>>(iter: I) -> Self

Creates a value from an iterator. Read more
source§

impl FromStr for Variant

§

type Err = Error

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

fn from_str(s: &str) -> Result<Self, Self::Err>

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

impl FromVariant for Variant

source§

fn from_variant(variant: &Variant) -> Option<Self>

Tries to extract a value. Read more
source§

impl Hash for Variant

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<Variant> for Variant

source§

fn eq(&self, other: &Self) -> 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 PartialOrd<Variant> for Variant

source§

fn partial_cmp(&self, other: &Self) -> 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 <= operator. 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 >= operator. Read more
source§

impl StaticType for Variant

source§

fn static_type() -> Type

Returns the type identifier of Self.
source§

impl StaticVariantType for Variant

source§

fn static_variant_type() -> Cow<'static, VariantTy>

Returns the VariantType corresponding to Self.
source§

impl ToVariant for Variant

source§

fn to_variant(&self) -> Variant

Returns a Variant clone of self.
source§

impl Eq for Variant

source§

impl Send for Variant

source§

impl Sync for Variant

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

const: unstable · source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GList> for Twhere T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,

source§

impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GPtrArray> for Twhere T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,

source§

impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GSList> for Twhere T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,

source§

impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GList> for Twhere T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,

source§

impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GPtrArray> for Twhere T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,

source§

impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GSList> for Twhere T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,

source§

impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GList> for Twhere T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,

source§

impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GPtrArray> for Twhere T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,

source§

impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GSList> for Twhere T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,

source§

impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GList> for Twhere T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,

source§

impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GPtrArray> for Twhere T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,

source§

impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GSList> for Twhere T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,

source§

impl<T, U> Into<U> for Twhere U: From<T>,

const: unstable · 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> StaticTypeExt for Twhere T: StaticType,

source§

fn ensure_type()

Ensures that the type has been registered with the type system.
source§

impl<T> ToClosureReturnValue for Twhere T: ToValue,

source§

impl<T> ToOwned for Twhere 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> ToSendValue for Twhere T: Send + ToValue + ?Sized,

source§

fn to_send_value(&self) -> SendValue

Returns a SendValue clone of self.
source§

impl<T> ToString for Twhere 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 Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

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

Performs the conversion.
source§

impl<T> TryFromClosureReturnValue for Twhere T: for<'a> FromValue<'a> + StaticType + 'static,

source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

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

The type returned in the event of a conversion error.
const: unstable · source§

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

Performs the conversion.
source§

impl<'a, T, C> FromValueOptional<'a> for Twhere T: FromValue<'a, Checker = C>, C: ValueTypeChecker<Error = ValueTypeMismatchOrNoneError>,