glib::value

Struct Value

source
pub struct Value { /* private fields */ }
Expand description

A generic value capable of carrying various types.

Once created the type of the value can’t be changed.

Some types (e.g. String and objects) support None values while others (e.g. numeric types) don’t.

Value does not implement the Send trait, but SendValue can be used instead.

See the module documentation for more details. An opaque structure used to hold different types of values.

The data within the structure has protected scope: it is accessible only to functions within a TypeValueTable structure, or implementations of the g_value_*() API. That is, code portions which implement new fundamental types.

Value users cannot make any assumptions about how data is stored within the 2 element data union, and the g_type member should only be accessed through the G_VALUE_TYPE() macro. An opaque structure used to hold different types of values.

The data within the structure has protected scope: it is accessible only to functions within a TypeValueTable structure, or implementations of the g_value_*() API. That is, code portions which implement new fundamental types.

Value users cannot make any assumptions about how data is stored within the 2 element data union, and the g_type member should only be accessed through the G_VALUE_TYPE() macro.

GLib type: Inline allocated boxed type with stack copy semantics.

Implementations§

source§

impl Value

source

pub fn as_ptr(&self) -> *mut GValue

source

pub unsafe fn from_glib_ptr_borrow<'a>(ptr: *const GValue) -> &'a Self

Borrows the underlying C value.

source

pub unsafe fn from_glib_ptr_borrow_mut<'a>(ptr: *mut GValue) -> &'a mut Self

Borrows the underlying C value mutably.

source§

impl Value

source

pub fn from_type(type_: Type) -> Self

Creates a new Value that is initialized with type_.

§Panics

If type_ can’t be stored in a Value this function panics.

source

pub unsafe fn from_type_unchecked(type_: Type) -> Self

Creates a new Value that is initialized with type_.

§SAFETY

This must be called with a valid type_ that can be stored in Values.

source

pub fn for_value_type<T: ValueType>() -> Self

Creates a new Value that is initialized for a given ValueType.

source

pub fn from_static_str(s: &'static GStr) -> Self

Creates a new String-typed Value from a 'static string.

source

pub fn from_interned_str(s: &'static GStr) -> Self

Available on crate feature v2_66 only.

Creates a new String-typed Value from a 'static string that is also assumed to be interned.

source

pub fn get<'a, T>( &'a self, ) -> Result<T, <<T as FromValue<'_>>::Checker as ValueTypeChecker>::Error>
where T: FromValue<'a>,

Tries to get a value of type T.

Returns Ok if the type is correct.

source

pub fn get_owned<T>( &self, ) -> Result<T, <<T as FromValue<'_>>::Checker as ValueTypeChecker>::Error>
where T: for<'b> FromValue<'b> + 'static,

Tries to get a value of an owned type T.

source

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

Returns true if the type of the value corresponds to T or is a sub-type of T.

source

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

Returns true if the type of the value corresponds to type_ or is a sub-type of type_.

source

pub fn type_(&self) -> Type

Returns the type of the value.

source

pub fn type_transformable(src: Type, dst: Type) -> bool

Returns whether Values of type src can be transformed to type dst. Check whether transform() is able to transform values of type src_type into values of type dest_type. Note that for the types to be transformable, they must be compatible or a transformation function must be registered.

§src_type

Source type.

§dest_type

Target type.

§Returns

true if the transformation is possible, false otherwise. way. On Unix, this is guaranteed to be in the same format waitpid() returns, and on Windows it is guaranteed to be the result of GetExitCodeProcess().

Prior to the introduction of this function in GLib 2.34, interpreting @wait_status required use of platform-specific APIs, which is problematic for software using GLib as a cross-platform layer.

Additionally, many programs simply want to determine whether or not the child exited successfully, and either propagate a #GError or print a message to standard error. In that common case, this function can be used. Note that the error message in @error will contain human-readable information about the wait status.

The @domain and @code of @error have special semantics in the case where the process has an “exit code”, as opposed to being killed by a signal. On Unix, this happens if WIFEXITED() would be true of @wait_status. On Windows, it is always the case.

The special semantics are that the actual exit code will be the code set in @error, and the domain will be G_SPAWN_EXIT_ERROR. This allows you to differentiate between different exit codes.

If the process was terminated by some means other than an exit status (for example if it was killed by a signal), the domain will be G_SPAWN_ERROR and the code will be G_SPAWN_ERROR_FAILED.

This function just offers convenience; you can of course also check the available platform via a macro such as G_OS_UNIX, and use WIFEXITED() and WEXITSTATUS() on @wait_status directly. Do not attempt to scan or parse the error message string; it may be translated and/or change in future versions of GLib.

Prior to version 2.70, g_spawn_check_exit_status() provides the same functionality, although under a misleading name.

§wait_status

A platform-specific wait status as returned from g_spawn_sync()

§Returns

true if child exited successfully, false otherwise (and @error will be set) Check whether transform() is able to transform values of type src_type into values of type dest_type. Note that for the types to be transformable, they must be compatible or a transformation function must be registered.

§src_type

Source type.

§dest_type

Target type.

§Returns

true if the transformation is possible, false otherwise. way. On Unix, this is guaranteed to be in the same format waitpid() returns, and on Windows it is guaranteed to be the result of GetExitCodeProcess().

Prior to the introduction of this function in GLib 2.34, interpreting @wait_status required use of platform-specific APIs, which is problematic for software using GLib as a cross-platform layer.

Additionally, many programs simply want to determine whether or not the child exited successfully, and either propagate a #GError or print a message to standard error. In that common case, this function can be used. Note that the error message in @error will contain human-readable information about the wait status.

The @domain and @code of @error have special semantics in the case where the process has an “exit code”, as opposed to being killed by a signal. On Unix, this happens if WIFEXITED() would be true of @wait_status. On Windows, it is always the case.

The special semantics are that the actual exit code will be the code set in @error, and the domain will be G_SPAWN_EXIT_ERROR. This allows you to differentiate between different exit codes.

If the process was terminated by some means other than an exit status (for example if it was killed by a signal), the domain will be G_SPAWN_ERROR and the code will be G_SPAWN_ERROR_FAILED.

This function just offers convenience; you can of course also check the available platform via a macro such as G_OS_UNIX, and use WIFEXITED() and WEXITSTATUS() on @wait_status directly. Do not attempt to scan or parse the error message string; it may be translated and/or change in future versions of GLib.

Prior to version 2.70, g_spawn_check_exit_status() provides the same functionality, although under a misleading name.

§wait_status

A platform-specific wait status as returned from g_spawn_sync()

§Returns

true if child exited successfully, false otherwise (and @error will be set)

source

pub fn transform<T: ValueType>(&self) -> Result<Value, BoolError>

Tries to transform the value into a value of the target type Tries to cast the contents of self into a type appropriate to store in dest_value, e.g. to transform a G_TYPE_INT value into a G_TYPE_FLOAT value. Performing transformations between value types might incur precision lossage. Especially transformations into strings might reveal seemingly arbitrary results and shouldn’t be relied upon for production code (such as rcfile value or object property serialization).

§dest_value

Target value.

§Returns

Whether a transformation rule was found and could be applied. Upon failing transformations, dest_value is left untouched. Tries to cast the contents of self into a type appropriate to store in dest_value, e.g. to transform a G_TYPE_INT value into a G_TYPE_FLOAT value. Performing transformations between value types might incur precision lossage. Especially transformations into strings might reveal seemingly arbitrary results and shouldn’t be relied upon for production code (such as rcfile value or object property serialization).

§dest_value

Target value.

§Returns

Whether a transformation rule was found and could be applied. Upon failing transformations, dest_value is left untouched.

source

pub fn transform_with_type(&self, type_: Type) -> Result<Value, BoolError>

Tries to transform the value into a value of the target type

source

pub fn into_raw(self) -> GValue

Consumes Value and returns the corresponding GValue.

source

pub fn try_into_send_value<T: Send + StaticType>( self, ) -> Result<SendValue, Self>

Converts a Value into a SendValue. This fails if self does not store a value of type T. It is required for T to be Send to call this function.

source

pub unsafe fn into_send_value(self) -> SendValue

Converts a Value into a SendValue.

§Safety

The type of the value contained in self must be Send.

Trait Implementations§

source§

impl Clone for Value

source§

fn clone(&self) -> Self

Copies the inline boxed type by value with the type-specific copy function.

1.6.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, f: &mut Formatter<'_>) -> Result<(), Error>

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

impl Drop for Value

source§

fn drop(&mut self)

Executes the destructor for this type. Read more
source§

impl Extend<Value> for ValueArray

source§

fn extend<T: IntoIterator<Item = Value>>(&mut self, iter: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬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
source§

impl<'a, T: ?Sized + ToValue> From<&'a T> for Value

source§

fn from(value: &'a T) -> Self

Converts to this type from the input type.
source§

impl From<*mut c_void> for Value

source§

fn from(v: Pointer) -> Self

Converts to this type from the input type.
source§

impl From<BindingFlags> for Value

source§

fn from(v: BindingFlags) -> Self

Converts to this type from the input type.
source§

impl From<Box<str>> for Value

source§

fn from(s: Box<str>) -> Self

Converts to this type from the input type.
source§

impl From<BoxedValue> for Value

source§

fn from(v: BoxedValue) -> Self

Converts to this type from the input type.
source§

impl From<ByteArray> for Value

source§

fn from(s: ByteArray) -> Self

Converts to this type from the input type.
source§

impl From<Bytes> for Value

source§

fn from(s: Bytes) -> Self

Converts to this type from the input type.
source§

impl From<Checksum> for Value

source§

fn from(o: Checksum) -> Self

Converts to this type from the input type.
source§

impl From<Closure> for Value

source§

fn from(s: Closure) -> Self

Converts to this type from the input type.
source§

impl From<ControlFlow> for Value

source§

fn from(v: ControlFlow) -> Self

Converts to this type from the input type.
source§

impl From<DateTime> for Value

source§

fn from(s: DateTime) -> Self

Converts to this type from the input type.
source§

impl From<Error> for Value

source§

fn from(o: Error) -> Self

Converts to this type from the input type.
source§

impl From<GString> for Value

source§

fn from(s: GString) -> Self

Converts to this type from the input type.
source§

impl From<ILong> for Value

source§

fn from(v: ILong) -> Self

Converts to this type from the input type.
source§

impl From<IOCondition> for Value

source§

fn from(v: IOCondition) -> Self

Converts to this type from the input type.
source§

impl From<KeyFile> for Value

source§

fn from(s: KeyFile) -> Self

Converts to this type from the input type.
source§

impl From<MainContext> for Value

source§

fn from(s: MainContext) -> Self

Converts to this type from the input type.
source§

impl From<MainLoop> for Value

source§

fn from(s: MainLoop) -> Self

Converts to this type from the input type.
source§

impl From<MarkupParseContext> for Value

source§

fn from(s: MarkupParseContext) -> Self

Converts to this type from the input type.
source§

impl From<MatchInfo<'static>> for Value

source§

fn from(s: MatchInfo<'static>) -> Self

Converts to this type from the input type.
source§

impl From<NonNull<c_void>> for Value

source§

fn from(v: NonNull<Pointee>) -> Self

Converts to this type from the input type.
source§

impl From<NonZero<i32>> for Value

source§

fn from(v: NonZeroI32) -> Self

Converts to this type from the input type.
source§

impl From<NonZero<i64>> for Value

source§

fn from(v: NonZeroI64) -> Self

Converts to this type from the input type.
source§

impl From<NonZero<i8>> for Value

source§

fn from(v: NonZeroI8) -> Self

Converts to this type from the input type.
source§

impl From<NonZero<u32>> for Value

source§

fn from(v: NonZeroU32) -> Self

Converts to this type from the input type.
source§

impl From<NonZero<u64>> for Value

source§

fn from(v: NonZeroU64) -> Self

Converts to this type from the input type.
source§

impl From<NonZero<u8>> for Value

source§

fn from(v: NonZeroU8) -> Self

Converts to this type from the input type.
source§

impl From<NormalizeMode> for Value

source§

fn from(v: NormalizeMode) -> Self

Converts to this type from the input type.
source§

impl<T: Into<Value> + ToValueOptional> From<Option<T>> for Value

source§

fn from(t: Option<T>) -> Self

Converts to this type from the input type.
source§

impl From<PathBuf> for Value

source§

fn from(s: PathBuf) -> Self

Converts to this type from the input type.
source§

impl From<Propagation> for Value

source§

fn from(v: Propagation) -> Self

Converts to this type from the input type.
source§

impl From<Regex> for Value

source§

fn from(s: Regex) -> Self

Converts to this type from the input type.
source§

impl From<SendValue> for Value

source§

fn from(value: SendValue) -> Self

Converts to this type from the input type.
source§

impl From<Source> for Value

source§

fn from(s: Source) -> Self

Converts to this type from the input type.
source§

impl From<StrV> for Value

source§

fn from(s: StrV) -> Self

Converts to this type from the input type.
source§

impl From<String> for Value

source§

fn from(s: String) -> Self

Converts to this type from the input type.
source§

impl From<TimeZone> for Value

source§

fn from(s: TimeZone) -> Self

Converts to this type from the input type.
source§

impl From<ULong> for Value

source§

fn from(v: ULong) -> Self

Converts to this type from the input type.
source§

impl From<UnicodeBreakType> for Value

source§

fn from(v: UnicodeBreakType) -> Self

Converts to this type from the input type.
source§

impl From<UnicodeScript> for Value

source§

fn from(v: UnicodeScript) -> Self

Converts to this type from the input type.
source§

impl From<UnicodeType> for Value

source§

fn from(v: UnicodeType) -> Self

Converts to this type from the input type.
source§

impl From<Uri> for Value

Available on crate feature v2_66 only.
source§

fn from(s: Uri) -> Self

Converts to this type from the input type.
source§

impl From<ValueArray> for Value

source§

fn from(o: ValueArray) -> Self

Converts to this type from the input type.
source§

impl From<VariantDict> for Value

source§

fn from(s: VariantDict) -> Self

Converts to this type from the input type.
source§

impl From<Vec<GString>> for Value

source§

fn from(v: Vec<GString>) -> Self

Converts to this type from the input type.
source§

impl From<Vec<String>> for Value

source§

fn from(s: Vec<String>) -> Self

Converts to this type from the input type.
source§

impl From<bool> for Value

source§

fn from(v: bool) -> Self

Converts to this type from the input type.
source§

impl From<char> for Value

source§

fn from(v: char) -> Self

Converts to this type from the input type.
source§

impl From<f32> for Value

source§

fn from(v: f32) -> Self

Converts to this type from the input type.
source§

impl From<f64> for Value

source§

fn from(v: f64) -> Self

Converts to this type from the input type.
source§

impl From<i32> for Value

source§

fn from(v: i32) -> Self

Converts to this type from the input type.
source§

impl From<i64> for Value

source§

fn from(v: i64) -> Self

Converts to this type from the input type.
source§

impl From<i8> for Value

source§

fn from(v: i8) -> Self

Converts to this type from the input type.
source§

impl From<u32> for Value

source§

fn from(v: u32) -> Self

Converts to this type from the input type.
source§

impl From<u64> for Value

source§

fn from(v: u64) -> Self

Converts to this type from the input type.
source§

impl From<u8> for Value

source§

fn from(v: u8) -> Self

Converts to this type from the input type.
source§

impl FromIterator<Value> for ValueArray

source§

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

Creates a value from an iterator. Read more
source§

impl<'a> FromValue<'a> for &'a Value

source§

type Checker = NopChecker

Value type checker.
source§

unsafe fn from_value(value: &'a Value) -> Self

Get the contained value from a Value. Read more
source§

impl<'a> FromValue<'a> for Value

source§

type Checker = NopChecker

Value type checker.
source§

unsafe fn from_value(value: &'a Value) -> Self

Get the contained value from a Value. Read more
source§

impl<'a> ToValue for &'a Value

source§

fn to_value(&self) -> Value

Convert a value to a Value.
source§

fn value_type(&self) -> Type

Returns the type identifier of self. Read more
source§

impl ToValue for Value

source§

fn to_value(&self) -> Value

Convert a value to a Value.
source§

fn value_type(&self) -> Type

Returns the type identifier of self. Read more

Auto Trait Implementations§

§

impl Freeze for Value

§

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
source§

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

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GList> for T

source§

impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GPtrArray> for T

source§

impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GSList> for T

source§

impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GList> for T

source§

impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GPtrArray> for T

source§

impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GSList> for T

source§

impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GList> for T

source§

impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GPtrArray> for T

source§

impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GSList> for T

source§

impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GList> for T

source§

impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GPtrArray> for T

source§

impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GSList> for T

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> IntoClosureReturnValue for T
where T: Into<Value>,

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.