Expand description
Value
binding and helper traits.
The type of a Value
is dynamic in that it generally
isn’t known at compile time but once created a Value
can’t change its
type.
SendValue
is a version of Value
that can only store types that implement Send
and as such implements Send
itself. It
dereferences to Value
so it can be used everywhere Value
references are accepted.
Supported types are bool
, i8
, u8
, i32
, u32
, i64
, u64
, f32
,
f64
, String
and objects (T: IsA<Object>
).
§Examples
use glib::prelude::*; // or `use gtk::prelude::*;`
use glib::Value;
// Value implement From<&i32>, From<&str> and From<Option<&str>>.
// Another option is the `ToValue` trait.
let mut num = 10.to_value();
let mut hello = Value::from("Hello!");
let none: Option<&str> = None;
let str_none = none.to_value();
// `is` tests the type of the value.
assert!(num.is::<i32>());
assert!(hello.is::<String>());
// `get` tries to get an optional value of the specified type
// and returns an `Err` if the type doesn't match.
assert_eq!(num.get(), Ok(10));
assert!(num.get::<String>().is_err());
assert_eq!(hello.get(), Ok(String::from("Hello!")));
assert_eq!(hello.get::<String>(), Ok(String::from("Hello!")));
assert_eq!(str_none.get::<Option<String>>(), Ok(None));
Modules§
- private 🔒
Macros§
Structs§
- Generic
Value
type checker for types. - Generic
Value
type checker for optional types. - A version of
Value
for storingSend
types, that implements Send itself. - A generic value capable of carrying various types.
- Wrapped
Value
type checker for optional types.
Enums§
Traits§
- Trait to retrieve the contained value from a
Value
. - Trait for types that implement
FromValue
and are Optional. - Converts to
SendValue
. - Trait to convert a value to a
Value
. - Trait to convert an
Option
to aValue
for optional types. - A type that can be stored in
Value
s. - Trait for
Value
type checkers. - A type that can be stored in
Value
s and is optional.
Functions§
- clear_
value 🔒 ⚠ - copy_
into_ 🔒 ⚠value - copy_
value 🔒 ⚠ - free_
value 🔒 ⚠ - init_
value 🔒 ⚠