2017-07-14 23:30:16 +00:00
<!DOCTYPE html>
< html lang = "en" >
< head >
< meta charset = "utf-8" >
< meta name = "viewport" content = "width=device-width, initial-scale=1.0" >
< meta name = "generator" content = "rustdoc" >
< meta name = "description" content = "API documentation for the Rust `value` mod in crate `glib`." >
< meta name = "keywords" content = "rust, rustlang, rust-lang, value" >
< title > glib::value - Rust< / title >
< link rel = "stylesheet" type = "text/css" href = "../../normalize.css" >
< link rel = "stylesheet" type = "text/css" href = "../../rustdoc.css" >
< link rel = "stylesheet" type = "text/css" href = "../../main.css" >
< / head >
< body class = "rustdoc mod" >
<!-- [if lte IE 8]>
< div class = "warning" >
This old browser is unsupported and will most likely display funky
things.
< / div >
<![endif]-->
< nav class = "sidebar" >
< p class = 'location' > Module value< / p > < div class = "block items" > < ul > < li > < a href = "#structs" > Structs< / a > < / li > < li > < a href = "#traits" > Traits< / a > < / li > < / ul > < / div > < p class = 'location' > < a href = '../index.html' > glib< / a > < / p > < script > window . sidebarCurrent = { name : 'value' , ty : 'mod' , relpath : '../' } ; < / script > < script defer src = "../sidebar-items.js" > < / script >
< / nav >
< nav class = "sub" >
< form class = "search-form js-only" >
< div class = "search-container" >
< input class = "search-input" name = "search"
autocomplete="off"
placeholder="Click or press ‘ S’ to search, ‘ ?’ for more options…"
type="search">
< / div >
< / form >
< / nav >
< section id = 'main' class = "content" >
< h1 class = 'fqn' > < span class = 'in-band' > Module < a href = '../index.html' > glib< / a > ::< wbr > < a class = "mod" href = '' > value< / a > < / span > < span class = 'out-of-band' > < span id = 'render-detail' >
< a id = "toggle-all-docs" href = "javascript:void(0)" title = "collapse all docs" >
[< span class = 'inner' > − < / span > ]
< / a >
2017-07-16 21:37:37 +00:00
< / span > < a class = 'srclink' href = '../../src/glib/value.rs.html#5-567' title = 'goto source code' > [src]< / a > < / span > < / h1 >
2017-07-14 23:30:16 +00:00
< div class = 'docblock' > < p > < code > Value< / code > binding and helper traits.< / p >
< p > The type of a < a href = "struct.Value.html" > < code > Value< / code > < / a > is dynamic in that it generally
isn' t known at compile time but once created a < code > Value< / code > can' t change its
type.< / p >
< p > < a href = "struct.TypedValue.html" > < code > TypedValue< / code > < / a > has a statically known type and
dereferences to < code > Value< / code > so it can be used everywhere < code > Value< / code > references are
accepted.< / p >
< p > Supported types are < code > bool< / code > , < code > i8< / code > , < code > u8< / code > , < code > i32< / code > , < code > u32< / code > , < code > i64< / code > , < code > u64< / code > , < code > f32< / code > ,
< code > f64< / code > , < code > String< / code > and objects (< code > T: IsA< Object> < / code > ).< / p >
< h1 id = 'examples' class = 'section-header' > < a href = '#examples' > Examples< / a > < / h1 >
< pre class = "rust rust-example-rendered" >
< span class = "kw" > use< / span > < span class = "ident" > glib< / span > ::< span class = "ident" > prelude< / span > ::< span class = "kw-2" > *< / span > ; < span class = "comment" > // or `use gtk::prelude::*;`< / span >
< span class = "kw" > use< / span > < span class = "ident" > glib< / span > ::{< span class = "ident" > TypedValue< / span > , < span class = "ident" > Value< / span > };
< span class = "comment" > // Value and TypedValue implement From< & i32> , From< & str> < / span >
< span class = "comment" > // and From< Option< & str> > . Another option is the `ToValue` trait.< / span >
< span class = "kw" > let< / span > < span class = "kw-2" > mut< / span > < span class = "ident" > num< / span > < span class = "op" > =< / span > < span class = "number" > 10< / span > .< span class = "ident" > to_value< / span > ();
< span class = "kw" > let< / span > < span class = "kw-2" > mut< / span > < span class = "ident" > hello< / span > < span class = "op" > =< / span > < span class = "ident" > Value< / span > ::< span class = "ident" > from< / span > (< span class = "string" > " Hello!" < / span > );
< span class = "kw" > let< / span > < span class = "ident" > none< / span > : < span class = "prelude-ty" > Option< / span > < span class = "op" > < < / span > < span class = "kw-2" > & < / span > < span class = "ident" > str< / span > < span class = "op" > > < / span > < span class = "op" > =< / span > < span class = "prelude-val" > None< / span > ;
< span class = "kw" > let< / span > < span class = "ident" > str_none< / span > < span class = "op" > =< / span > < span class = "ident" > Value< / span > ::< span class = "ident" > from< / span > (< span class = "ident" > none< / span > .< span class = "ident" > clone< / span > ());
< span class = "kw" > let< / span > < span class = "ident" > typed_str_none< / span > < span class = "op" > =< / span > < span class = "ident" > TypedValue< / span > ::< span class = "ident" > from< / span > (< span class = "ident" > none< / span > );
< span class = "comment" > // `is` tests the type of the value.< / span >
< span class = "macro" > assert< / span > < span class = "macro" > !< / span > (< span class = "ident" > num< / span > .< span class = "ident" > is< / span > ::< span class = "op" > < < / span > < span class = "ident" > i32< / span > < span class = "op" > > < / span > ());
< span class = "macro" > assert< / span > < span class = "macro" > !< / span > (< span class = "ident" > hello< / span > .< span class = "ident" > is< / span > ::< span class = "op" > < < / span > < span class = "ident" > String< / span > < span class = "op" > > < / span > ());
< span class = "comment" > // `get` tries to get a value of specific type and returns None< / span >
< span class = "comment" > // if the type doesn' t match or the value is None.< / span >
< span class = "macro" > assert_eq< / span > < span class = "macro" > !< / span > (< span class = "ident" > num< / span > .< span class = "ident" > get< / span > (), < span class = "prelude-val" > Some< / span > (< span class = "number" > 10< / span > ));
< span class = "macro" > assert_eq< / span > < span class = "macro" > !< / span > (< span class = "ident" > num< / span > .< span class = "ident" > get< / span > ::< span class = "op" > < < / span > < span class = "ident" > String< / span > < span class = "op" > > < / span > (), < span class = "prelude-val" > None< / span > );
< span class = "macro" > assert_eq< / span > < span class = "macro" > !< / span > (< span class = "ident" > hello< / span > .< span class = "ident" > get< / span > (), < span class = "prelude-val" > Some< / span > (< span class = "ident" > String< / span > ::< span class = "ident" > from< / span > (< span class = "string" > " Hello!" < / span > )));
< span class = "macro" > assert_eq< / span > < span class = "macro" > !< / span > (< span class = "ident" > hello< / span > .< span class = "ident" > get< / span > ::< span class = "op" > < < / span > < span class = "ident" > String< / span > < span class = "op" > > < / span > (), < span class = "prelude-val" > Some< / span > (< span class = "ident" > String< / span > ::< span class = "ident" > from< / span > (< span class = "string" > " Hello!" < / span > )));
< span class = "macro" > assert_eq< / span > < span class = "macro" > !< / span > (< span class = "ident" > str_none< / span > .< span class = "ident" > get< / span > ::< span class = "op" > < < / span > < span class = "ident" > String< / span > < span class = "op" > > < / span > (), < span class = "prelude-val" > None< / span > );
< span class = "comment" > // `typed` tries to convert a `Value` to `TypedValue`.< / span >
< span class = "kw" > let< / span > < span class = "kw-2" > mut< / span > < span class = "ident" > typed_num< / span > < span class = "op" > =< / span > < span class = "ident" > num< / span > .< span class = "ident" > downcast< / span > ::< span class = "op" > < < / span > < span class = "ident" > i32< / span > < span class = "op" > > < / span > ().< span class = "ident" > unwrap< / span > ();
< span class = "kw" > let< / span > < span class = "kw-2" > mut< / span > < span class = "ident" > typed_hello< / span > < span class = "op" > =< / span > < span class = "ident" > hello< / span > .< span class = "ident" > downcast< / span > ::< span class = "op" > < < / span > < span class = "ident" > String< / span > < span class = "op" > > < / span > ().< span class = "ident" > unwrap< / span > ();
< span class = "comment" > // `str_none` is not an `i32`< / span >
< span class = "macro" > assert< / span > < span class = "macro" > !< / span > (< span class = "ident" > str_none< / span > .< span class = "ident" > downcast< / span > ::< span class = "op" > < < / span > < span class = "ident" > i32< / span > < span class = "op" > > < / span > ().< span class = "ident" > is_err< / span > ());
< span class = "comment" > // `get`< / span >
< span class = "macro" > assert< / span > < span class = "macro" > !< / span > (< span class = "ident" > typed_hello< / span > .< span class = "ident" > get< / span > ().< span class = "ident" > unwrap< / span > () < span class = "op" > ==< / span > < span class = "string" > " Hello!" < / span > );
< span class = "macro" > assert< / span > < span class = "macro" > !< / span > (< span class = "ident" > typed_str_none< / span > .< span class = "ident" > get< / span > () < span class = "op" > ==< / span > < span class = "prelude-val" > None< / span > );
< span class = "comment" > // Numeric types can' t have value `None`, `get` always returns `Some`.< / span >
< span class = "comment" > // Such types have `get_some`, which avoids unnecessary `unwrap`ping.< / span >
< span class = "macro" > assert_eq< / span > < span class = "macro" > !< / span > (< span class = "ident" > typed_num< / span > .< span class = "ident" > get< / span > ().< span class = "ident" > unwrap< / span > (), < span class = "number" > 10< / span > );
< span class = "macro" > assert_eq< / span > < span class = "macro" > !< / span > (< span class = "ident" > typed_num< / span > .< span class = "ident" > get_some< / span > (), < span class = "number" > 10< / span > );
< span class = "comment" > // `set_none` sets the value to `None` if the type supports it.< / span >
< span class = "ident" > typed_hello< / span > .< span class = "ident" > set_none< / span > ();
< span class = "macro" > assert< / span > < span class = "macro" > !< / span > (< span class = "ident" > typed_hello< / span > .< span class = "ident" > get< / span > ().< span class = "ident" > is_none< / span > ());
< span class = "comment" > // `set` takes an optional reference for types that support `None`.< / span >
< span class = "ident" > typed_hello< / span > .< span class = "ident" > set< / span > (< span class = "prelude-val" > Some< / span > (< span class = "string" > " Hello again!" < / span > ));
< span class = "macro" > assert< / span > < span class = "macro" > !< / span > (< span class = "ident" > typed_hello< / span > .< span class = "ident" > get< / span > ().< span class = "ident" > unwrap< / span > () < span class = "op" > ==< / span > < span class = "string" > " Hello again!" < / span > );
< span class = "comment" > // `set_some` is the only setter for types that don' t support `None`.< / span >
< span class = "ident" > typed_num< / span > .< span class = "ident" > set_some< / span > (< span class = "kw-2" > & < / span > < span class = "number" > 20< / span > );
< span class = "macro" > assert_eq< / span > < span class = "macro" > !< / span > (< span class = "ident" > typed_num< / span > .< span class = "ident" > get_some< / span > (), < span class = "number" > 20< / span > );< / pre >
< / div > < h2 id = 'structs' class = 'section-header' > < a href = "#structs" > Structs< / a > < / h2 >
< table >
< tr class = ' module-item' >
< td > < a class = "struct" href = "struct.TypedValue.html"
title='struct glib::value::TypedValue'>TypedValue< / a > < / td >
< td class = 'docblock-short' >
< p > A statically typed < a href = "struct.Value.html" > < code > Value< / code > < / a > .< / p >
< / td >
< / tr >
< tr class = ' module-item' >
< td > < a class = "struct" href = "struct.Value.html"
title='struct glib::value::Value'>Value< / a > < / td >
< td class = 'docblock-short' >
< p > A generic value capable of carrying various types.< / p >
< / td >
< / tr >
< tr class = ' module-item' >
< td > < a class = "struct" href = "struct.ValueArray.html"
title='struct glib::value::ValueArray'>ValueArray< / a > < / td >
< td class = 'docblock-short' >
< / td >
< / tr > < / table > < h2 id = 'traits' class = 'section-header' > < a href = "#traits" > Traits< / a > < / h2 >
< table >
< tr class = ' module-item' >
< td > < a class = "trait" href = "trait.FromValue.html"
title='trait glib::value::FromValue'>FromValue< / a > < / td >
< td class = 'docblock-short' >
< p > Extracts a value.< / p >
< / td >
< / tr >
< tr class = ' module-item' >
< td > < a class = "trait" href = "trait.FromValueOptional.html"
title='trait glib::value::FromValueOptional'>FromValueOptional< / a > < / td >
< td class = 'docblock-short' >
< p > Extracts a value.< / p >
< / td >
< / tr >
< tr class = ' module-item' >
< td > < a class = "trait" href = "trait.SetValue.html"
title='trait glib::value::SetValue'>SetValue< / a > < / td >
< td class = 'docblock-short' >
< p > Sets a value.< / p >
< / td >
< / tr >
< tr class = ' module-item' >
< td > < a class = "trait" href = "trait.SetValueOptional.html"
title='trait glib::value::SetValueOptional'>SetValueOptional< / a > < / td >
< td class = 'docblock-short' >
< p > Sets a value.< / p >
< / td >
< / tr >
< tr class = ' module-item' >
< td > < a class = "trait" href = "trait.ToValue.html"
title='trait glib::value::ToValue'>ToValue< / a > < / td >
< td class = 'docblock-short' >
< p > Converts to < code > Value< / code > .< / p >
< / td >
< / tr > < / table > < / section >
< section id = 'search' class = "content hidden" > < / section >
< section class = "footer" > < / section >
< aside id = "help" class = "hidden" >
< div >
< h1 class = "hidden" > Help< / h1 >
< div class = "shortcuts" >
< h2 > Keyboard Shortcuts< / h2 >
< dl >
< dt > ?< / dt >
< dd > Show this help dialog< / dd >
< dt > S< / dt >
< dd > Focus the search field< / dd >
< dt > ⇤ < / dt >
< dd > Move up in search results< / dd >
< dt > ⇥ < / dt >
< dd > Move down in search results< / dd >
< dt > ⏎ < / dt >
< dd > Go to active search result< / dd >
< dt > +< / dt >
< dd > Collapse/expand all sections< / dd >
< / dl >
< / div >
< div class = "infos" >
< h2 > Search Tricks< / h2 >
< p >
Prefix searches with a type followed by a colon (e.g.
< code > fn:< / code > ) to restrict the search to a given type.
< / p >
< p >
Accepted types are: < code > fn< / code > , < code > mod< / code > ,
< code > struct< / code > , < code > enum< / code > ,
< code > trait< / code > , < code > type< / code > , < code > macro< / code > ,
and < code > const< / code > .
< / p >
< p >
Search functions by type signature (e.g.
< code > vec -> usize< / code > or < code > * -> vec< / code > )
< / p >
< / div >
< / div >
< / aside >
< script >
window.rootPath = "../../";
window.currentCrate = "glib";
< / script >
< script src = "../../main.js" > < / script >
< script defer src = "../../search-index.js" > < / script >
< / body >
< / html >