diff --git a/docs/libgir/library/enum.Type.html b/docs/libgir/library/enum.Type.html index 340d2045b..b82b6f388 100644 --- a/docs/libgir/library/enum.Type.html +++ b/docs/libgir/library/enum.Type.html @@ -34,7 +34,7 @@
source

pub fn get_inner_type<'a>(&'a self, env: &'a Env) -> Option<(&'a Type, u16)>

source

pub fn is_function(&self) -> bool

source

pub fn is_class(&self) -> bool

source

pub fn is_interface(&self) -> bool

source

pub fn is_final_type(&self) -> bool

source

pub fn is_fundamental(&self) -> bool

source

pub fn is_abstract(&self) -> bool

source

pub fn is_enumeration(&self) -> bool

source

pub fn is_bitfield(&self) -> bool

source§

impl Type

source

pub fn visit_functions_mut<V: FunctionsMutVisitor>( &mut self, visitor: &mut V -) -> bool

Trait Implementations§

source§

impl Debug for Type

source§

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

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

impl Display for Type

source§

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

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

impl IsExternal for Type

source§

fn is_external(&self, lib: &Library) -> bool

source§

impl IsIncomplete for Type

source§

fn is_incomplete(&self, lib: &Library) -> bool

source§

impl PartialEq for Type

source§

fn eq(&self, other: &Type) -> bool

This method tests for self and other values to be equal, and is used +) -> bool

Trait Implementations§

source§

impl Debug for Type

source§

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

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

impl Display for Type

source§

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

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

impl IsExternal for Type

source§

fn is_external(&self, lib: &Library) -> bool

source§

impl IsIncomplete for Type

source§

fn is_incomplete(&self, lib: &Library) -> bool

source§

impl PartialEq for Type

source§

fn eq(&self, other: &Type) -> 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 Eq for Type

source§

impl StructuralEq for Type

source§

impl StructuralPartialEq for Type

Auto Trait Implementations§

§

impl RefUnwindSafe for Type

§

impl Send for Type

§

impl Sync for Type

§

impl Unpin for Type

§

impl UnwindSafe for Type

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 diff --git a/docs/search-index.js b/docs/search-index.js index 117e06cbc..d8a17df59 100644 --- a/docs/search-index.js +++ b/docs/search-index.js @@ -1,6 +1,6 @@ var searchIndex = JSON.parse('{\ "gir":{"doc":"","t":"NNIEKLLFLLFFFLLL","n":["CheckGirFile","Config","OptionStr","RunKind","as_str_ref","borrow","borrow_mut","build_config","from","into","main","print_usage","run_check","try_from","try_into","type_id"],"q":[[0,"gir"],[16,"core::option"],[17,"alloc::string"],[18,"core::result"],[19,"getopts"],[20,"core::any"]],"d":["","","","","","","","","Returns the argument unchanged.","Calls U::from(self).","","","","","",""],"i":[3,3,0,0,9,3,3,0,3,3,0,0,0,3,3,3],"f":[0,0,0,0,[-1,[[2,[1]]],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[],[[5,[3,4]]]],[-1,-1,[]],[-1,-2,[],[]],[[],[[5,[6,4]]]],[[1,7],6],[1,[[5,[6,4]]]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,8,[]]],"c":[],"p":[[15,"str"],[4,"Option",16],[4,"RunKind",0],[3,"String",17],[4,"Result",18],[15,"tuple"],[3,"Options",19],[3,"TypeId",20],[8,"OptionStr",0]],"b":[]},\ -"libgir":{"doc":"","t":"DNNDCNNEAMCMLLLLLLLMCLLFMMLMMMLLLLMMMMLLALLLLLLLMMMLLLLLLLMAMLMMLMMLMCLMLMMMMCLMLMLLLLLLLLLLLLAMMDCLLAAAAAAMALMMAALLLLLLAMMLLAAAMAALFAAMAAAAMAAFAAAAAAAAALALLANDEDDNNDLLMMLLLLLLLLLLMMMMLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLMMLLLLLLLLLLLLLLLLLLLLLMMLFFFGDFLLMMMLLMLLMMLMMMMMMLLLMLFDLLLLLFLLLLLDFLLMMLLMLMLLMLMNENNNNNNLLLLLLLLLLLLLLLLLLMMDLLLLLMMLMFMLLLLMMFFDLLLLLMMLMFMLLLLMMDNNDDDNNNNNNDEFLLLLLLLLLLLLLMMMLLLLLLLLLLLLLMMLLLLLLLLLLLLLLMMMMLLLLLLMLMMMMMMMMLLLLLLLMMMLLLLLLMMLLLLLLMMLLLLLLMMMMMMMMMMMMMMMMMMMDDDFMMMMLLLLLLMMMMMLLLLLMMMMMLMMMMFFMFLLLLLLMMMMMLLLLFMMLMMMMMMMMMMMMLLMMLLMLLLLLLLLLMMMMDLLLLLLLMMLLLLMDDDLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLDLLMMLLMLLMLMMLLMMLLLMMMRDRDGLLLLMLLLLMMLLLMLMMFMMMLLLLLLMNNNNNNDENMLLLLMMMMMFLLLLLLLLMLLLLLLMMLFMMLFLLMMLLMMMLMMMLMLLLLLLMMNNDENNNNENNFLLLLLLFLLLLLLLLLLLLLLLLLLLLLLLLLLMMLLLLLLLLLLLFDFLLMMLLMMMFLMMMMMLLMLMMDMLLMMMLLMLLMMLMFLLLLNNENLLLLLLLLLLLLNNNNNNELLLLLLLLLLLLLLLLLLLDFMMLLLLMLLLLMMLLLLNNNNGDDENLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNNENLLLLLLLLLLLLLLLLLLLDMFLLMMMLLMLMMMLLLMDGLLLLLLLLLLLNNNNNDENDNNDENFLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFMLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLFMMFFDDLLLLLLLLLLLLLLLLLLLLLLLLFLLLLLLLNDNDDDENFLLLLLLLLLLMMLLLLLLLLLLMLMLLLLLLLLLLLLMMLLLLLLMMMLMLMMMLLLLLMMMLLLLLMLLLLLMMMLLLLLDGFLLMMLLMMLLMLMMMMMMLLLFLMMMNNNNNNELLLLLLLLLLLLLLLLMMMIIIIIIKKKKKKFFDNNNENDNNNNNNDNNEDNNDNNDNEDNNNNNDNNNENNRRNNDNNNNNNDNDNNRDDNDNNNNNNDNNDEENDNNDNNNNNNNDNEENDNNNNNNNNNNDNNNNNLLLLLMMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLMMMLMLLLLLLLLLLMMMMMMMMMMLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMLLLLMMMMMMMMLLLLLLMMMLMMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMLLLLLLLLMLMLLLLLLLLLMLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMLLLMLMMMMMMLLLLLLLLLLMLLMMMMLMLMLLMMMMLMMMMMMMMMMMMLLLLLLLLLLLLLLLLLLLMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMLMLMMMMMMMMMMMMMMMMLLMFF","n":["Config","DisplayNotBound","Doc","Env","Library","Normal","Sys","WorkMode","analysis","analysis","analysis_run","auto_path","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","check_disable_format","class_hierarchy","class_hierarchy_run","clone","clone_into","codegen_generate","concurrency","config","default","deprecate_by_min_version","disable_format","doc_target_path","eq","equivalent","equivalent","equivalent","external_docs_url","external_libraries","extra_versions","feature_dependencies","filter_version","find_ext_library","fmt","fmt","fmt","fmt","from","from","from","from_str","generate_safety_asserts","girs_dirs","girs_version","into","into","into","is_generate_rust_files","is_normal","is_too_low_version","is_totally_deprecated","lib_version_overrides","library","library","library_full_name","library_name","library_version","main_sys_crate_name","make_backup","min_cfg_version","min_required_version","namespaces","namespaces_run","new","objects","resolve_type_ids","show_statistics","single_version_file","split_build_rs","symbols","symbols_run","sys_crate_import","target_path","to_owned","trust_return_value_nullability","try_from","try_from","try_from","try_into","try_into","try_into","type_","type_id","type_id","type_id","type_status","type_status_sys","update_version","use_gi_docgen","work_mode","Analysis","Parameter","borrow","borrow_mut","bounds","c_type","child_properties","class_builder","class_hierarchy","constants","constants","conversion_type","default","enum_imports","enumerations","enums","ffi_type","find_enum_by_function","find_flag_by_function","find_global_function","find_object_by_function","find_object_by_virtual_method","find_record_by_function","flags","flags","flags_imports","fmt","from","function_parameters","functions","general","global_functions","imports","info_base","into","is_gpointer","namespaces","object","objects","out_parameters","properties","record","record_type","records","ref_mode","return_value","run","rust_type","safety_assertion_mode","signals","signatures","special_functions","supertypes","symbols","trampoline_parameters","trampolines","try_from","try_from_glib","try_into","type_id","types","AsRef","Bound","BoundType","Bounds","CallbackInfo","IsA","NoWrapper","PropertyBound","add_for_parameter","add_parameter","alias","alias","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","bound_name","bound_type","callback_modified","callback_type","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","default","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","error_parameters","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","get","get_parameter_bound","get_to_glib_extra","has_alias","into","into","into","into","into","is_empty","iter","iter_lifetimes","need_isa","parameter_name","success_parameters","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_for","type_id","type_id","type_id","type_id","type_id","type_str","type_str","update_imports","implements_c_type","is_mut_ptr","rustify_pointers","ChildProperties","ChildProperty","analyze","borrow","borrow_mut","bounds","child_name","child_type","clone","clone_into","doc_hidden","fmt","from","get_out_ref_mode","getter_name","into","name","nullable","prop_name","set_in_ref_mode","set_params","to_glib_extra","to_owned","try_from","try_into","typ","type_id","analyze","Info","borrow","borrow_mut","fmt","from","into","run","subtypes","supertypes","try_from","try_into","type_id","Info","analyze","borrow","borrow_mut","cfg_condition","deprecated_version","fmt","from","glib_name","into","name","try_from","try_into","typ","type_id","version","Borrow","ConversionType","Direct","Option","Pointer","Result","Scalar","Unknown","borrow","borrow_mut","can_use_to_generate","clone","clone_into","default","eq","equivalent","equivalent","equivalent","fmt","from","into","of","to_owned","try_from","try_into","type_id","err_type","ok_type","Info","borrow","borrow_mut","default","fmt","from","full_name","functions","into","name","new","specials","try_from","try_into","type_","type_id","type_id","visibility","ffi_type","used_ffi_type","Info","borrow","borrow_mut","default","fmt","from","full_name","functions","into","name","new","specials","try_from","try_into","type_","type_id","type_id","visibility","CParameter","IntoRaw","Length","Parameter","Parameters","RustParameter","ToGlibBorrow","ToGlibDirect","ToGlibPointer","ToGlibScalar","ToGlibUnknown","ToSome","Transformation","TransformationType","analyze","analyze_return","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","c_parameters","c_type","caller_allocates","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","default","destroy_index","direction","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from_parameter","from_return_value","ind_c","ind_c","ind_rust","instance_parameter","into","into","into","into","into","into","is_error","is_to_glib","lib_par","move_","name","name","nullable","ref_mode","rust_parameters","scope","set_to_glib_extra","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","transfer","transformation_type","transformations","try_from","try_from","try_from","try_from","try_from","try_from","try_from_glib","try_from_glib","try_into","try_into","try_into","try_into","try_into","try_into","typ","typ","type_id","type_id","type_id","type_id","type_id","type_id","user_data_index","array_length_name","array_length_type","array_name","explicit_target_type","in_trait","instance_parameter","move_","name","name","name","name","needs_into","nullable","nullable","pointer_cast","ref_mode","to_glib_extra","transfer","AsyncFuture","AsyncTrampoline","Info","analyze","assertion","assertion","async","async_future","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","bound_name","bounds","callback_type","callbacks","cfg_condition","clone","clone","clone_into","clone_into","codegen_name","commented","deprecated_version","destroys","doc_hidden","doc_ignore_parameters","doc_link","doc_struct_name","doc_trait_name","error_parameters","ffi_ret","find_function","find_index_to_ignore","finish_func_name","finish_function_name","fmt","fmt","fmt","from","from","from","func_name","generate_doc","glib_name","has_error_parameter","hidden","into","into","into","is_async_finish","is_carray_with_direct_elements","is_method","is_method","is_special","kind","name","name","name","new_name","not_version","ns_id","output_params","outs","parameters","remove_params","ret","should_be_doc_linked","should_docs_be_generated","status","success_parameters","to_owned","to_owned","trampoline","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","type_name","unsafe_","version","visibility","StatusedTypeId","borrow","borrow_mut","clone","clone_into","fmt","from","into","name","status","to_owned","try_from","try_into","type_id","type_id","ImportConditions","Imports","ImportsWithDefault","add","add_defined","add_used_type","add_used_type_with_version","add_used_types","add_with_constraint","add_with_version","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","cmp","compare","constraints","default","default","deref","deref_mut","drop","eq","equivalent","equivalent","equivalent","fmt","fmt","from","from","from","into","into","into","iter","new","partial_cmp","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","version","with_defaults","with_defined","InfoBase","borrow","borrow_mut","cfg_condition","concurrency","constructors","default","deprecated_version","fmt","from","full_name","functions","functions","imports","into","methods","name","specials","try_from","try_into","type_id","type_id","version","visibility","INTERNAL","Info","MAIN","Namespace","NsId","borrow","borrow","borrow_mut","borrow_mut","crate_name","fmt","fmt","from","from","glib_ns_id","higher_crate_name","index","into","into","is_glib_crate","main","name","package_names","run","shared_libs","symbol_prefixes","sys_crate_name","try_from","try_from","try_into","try_into","type_id","type_id","versions","Builder","ClassExt","ClassExtManual","Ext","ExtManual","Impl","Info","LocationInObject","VirtualExt","base","borrow","borrow","borrow_mut","borrow_mut","builder_postprocess","builder_properties","c_class_type","c_type","child_properties","class","clone","clone_into","default","deref","eq","equivalent","equivalent","equivalent","final_type","fmt","fmt","from","from","function_location","generate_doc_link_info","generate_trait","get_type","has_action_signals","has_builder_properties","has_constructors","has_functions","has_signals","interface","into","into","is_fundamental","is_interface","need_generate_inherent","need_generate_trait","notify_signals","properties","ref_fn","should_generate_impl_block","signals","signatures","supertypes","to_owned","trait_name","try_from","try_from","try_into","try_into","type_id","type_id","unref_fn","virtual_methods","CheckError","Combined","Info","Mode","None","Normal","Optional","ReturnResult","ThrowFunctionReturnStrategy","Throws","Void","analyze","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","can_as_return","clone","clone","clone_into","clone_into","default","default","default","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","fmt","fmt","fmt","from","from","from","into","into","into","is_empty","iter","mode","params","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","use_function_return_for_result","Property","analyze","borrow","borrow_mut","bounds","deprecated_version","fmt","from","func_name","func_name_alias","get_out_ref_mode","get_property_ref_modes","into","is_get","name","nullable","set_bound","set_in_ref_mode","try_from","try_into","typ","type_id","var_name","version","Info","base","borrow","borrow_mut","boxed_inline","clear_function_expression","copy_into_function_expression","default","deref","derives","fmt","from","glib_get_type","init_function_expression","into","is_boxed","new","try_from","try_into","type_","type_id","AutoBoxed","Boxed","RecordType","Refcounted","borrow","borrow_mut","eq","equivalent","equivalent","equivalent","from","into","of","try_from","try_into","type_id","ByRef","ByRefConst","ByRefFake","ByRefImmut","ByRefMut","None","RefMode","borrow","borrow_mut","clone","clone_into","eq","equivalent","equivalent","equivalent","fmt","from","from_str","into","is_ref","of","to_owned","try_from","try_into","type_id","without_unneeded_mut","Info","analyze","base_tid","bool_return_is_error","borrow","borrow_mut","clone","clone_into","commented","default","fmt","from","into","nullable_return_is_error","parameter","to_owned","try_from","try_into","type_id","Err","Ignored","Mismatch","Ok","Result","RustType","RustTypeBuilder","TypeError","Unimplemented","alter_type","as_str","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","builder","callback_parameters_config","clone","clone","clone_into","clone_into","concurrency","default","direction","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","fmt","fmt","from","from","from","from","from","into","into","into","into_used_types","nullable","ref_mode","scope","to_owned","to_owned","try_build","try_build_param","try_from","try_from","try_from","try_from_glib","try_into","try_into","try_into","try_new","type_id","type_id","type_id","used_types","InMainThread","None","NotInitialized","SafetyAssertionMode","Skip","borrow","borrow_mut","clone","clone_into","default","eq","equivalent","equivalent","equivalent","fmt","from","from_str","into","is_none","of","to_owned","try_from","try_into","type_id","Info","action_emit_name","analyze","borrow","borrow_mut","connect_name","deprecated_version","doc_hidden","fmt","from","generate_doc","into","is_detailed","signal_name","trampoline","try_from","try_into","type_id","version","Signature","Signatures","borrow","borrow_mut","fmt","from","has_for_property","has_in_deps","into","new","try_from","try_into","type_id","Compare","Copy","Display","Equal","Free","FunctionInfo","FunctionType","Hash","Infos","Ref","StaticStringify","TraitInfo","Type","Unref","analyze_imports","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","cmp","cmp","compare","compare","default","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","extract","first_parameter_mut","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from_str","functions","glib_name","has_trait","into","into","into","into","into","partial_cmp","partial_cmp","to_owned","to_owned","to_owned","to_owned","traits","traits_mut","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_","type_id","type_id","type_id","type_id","type_id","unhide","version","version","analyze","dependencies","Info","Symbol","borrow","borrow","borrow_mut","borrow_mut","by_c_name","by_c_name_mut","by_tid","clone","clone_into","crate_name","default","fmt","fmt","from","from","full_rust_name","into","into","is_rust_prelude","make_trait","make_trait_method","name","owner_name","parent","run","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","Borrow","CParameter","None","Parameters","RustParameter","Transformation","TransformationType","TreePath","analyze","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","c_parameters","c_type","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","conversion_type","default","direction","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from_str","get","ind_c","ind_rust","into","into","into","into","into","is_real_gpointer","name","name","name","new","nullable","prepare_transformation","ref_mode","ref_mode","rust_parameters","to_owned","to_owned","to_owned","to_owned","to_owned","transfer","transformation","transformations","try_from","try_from","try_from","try_from","try_from","try_from_glib","try_into","try_into","try_into","try_into","try_into","typ","typ","typ","type_id","type_id","type_id","type_id","type_id","Trampoline","Trampolines","analyze","borrow","borrow_mut","bound_name","bounds","clone","clone_into","concurrency","destroy_index","fmt","from","inhibit","into","is_notify","name","nullable","parameters","ret","scope","to_owned","try_from","try_into","type_error","type_id","type_name","user_data_index","version","Default","NotImplemented","Option","OptionMandatory","Result","ResultInfallible","TryFromGlib","borrow","borrow_mut","clone","clone_into","default","fmt","from","from_parameter","from_return_value","from_type_defaults","into","or_type_defaults","to_owned","try_from","try_into","type_id","err_type","ok_type","ok_type","DerivesCopy","ImplementsDebug","IsExternal","IsIncomplete","IsPtr","IsVolatile","derives_copy","implements_debug","is_external","is_incomplete","is_ptr","is_volatile","check_fmt","format","Alias","Alias","Array","Async","Basic","Basic","Bitfield","Bitfield","Bool","Boolean","CArray","Call","Char","Class","Class","ClassMethod","Concurrency","Constant","Constructor","Container","Custom","Custom","Double","Enumeration","Enumeration","ErrorDomain","Field","Filename","FixedArray","Float","Forever","Full","Function","Function","Function","Function","FunctionKind","Global","HashTable","INTERNAL_NAMESPACE","INTERNAL_NAMESPACE_NAME","In","InOut","Infallible","Int","Int16","Int32","Int64","Int8","IntPtr","Interface","Interface","Library","List","Long","MAIN_NAMESPACE","Mandatory","Member","Method","Namespace","None","None","None","None","None","Notified","Nullable","OsString","Out","Parameter","ParameterDirection","ParameterScope","Pointer","Property","PtrArray","Quark","Record","Record","Return","SList","SSize","Send","SendSync","Short","Signal","Size","Transfer","Type","Type","TypeId","UChar","UInt","UInt16","UInt32","UInt64","UInt8","UIntPtr","ULong","UShort","UniChar","Union","Union","Unsupported","Utf8","VarArgs","VirtualMethod","add_constant","add_function","add_glib_priority","add_namespace","add_type","array_length","array_length","bits","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","c_array","c_class_type","c_class_type","c_identifier","c_identifier","c_identifier","c_identifier","c_includes","c_type","c_type","c_type","c_type","c_type","c_type","c_type","c_type","c_type","c_type","caller_allocates","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","closure","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","compare","compare","compare","compare","compare","compare","compare","compare","compare","compare","constants","construct","construct_only","container","conversion_type","default","default","default","default","default","default","default","default","default","default","deprecated_version","deprecated_version","deprecated_version","deprecated_version","deprecated_version","deprecated_version","deprecated_version","deprecated_version","deprecated_version","deprecated_version","deref","deref","deref","deref_mut","derives_copy","derives_copy","derives_copy","derives_copy","derives_copy","derives_copy","derives_copy","derives_copy","derives_copy","destroy","direction","disguised","doc","doc","doc","doc","doc","doc","doc","doc","doc","doc","doc","doc","doc","doc","doc","doc_deprecated","doc_deprecated","doc_deprecated","doc_deprecated","doc_deprecated","doc_deprecated","doc_deprecated","doc_deprecated","doc_deprecated","doc_deprecated","doc_deprecated","doc_deprecated","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","error_domain","fields","fields","fields","final_type","find_c_array","find_namespace","find_or_stub_type","find_type","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_str","from_str","from_str","from_str","from_str","full_name","function","functions","functions","functions","functions","functions","functions","functions","functions","get_deprecated_version","get_glib_name","get_inner_type","get_name","glib_get_type","glib_get_type","glib_get_type","glib_get_type","glib_get_type","glib_get_type","glib_name_index","gtype_struct_for","has_copy","has_destroy","has_free","has_ref","has_unref","hash","id","identifier_prefixes","implements","implements_debug","index","index","instance_parameter","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","is_abstract","is_abstract","is_action","is_async","is_basic","is_basic_type","is_basic_type","is_bitfield","is_call","is_class","is_crate","is_detailed","is_enumeration","is_error","is_external","is_external","is_external","is_external","is_external","is_final_type","is_forever","is_function","is_fundamental","is_fundamental","is_glib_crate","is_in","is_incomplete","is_incomplete","is_incomplete","is_incomplete","is_incomplete","is_incomplete","is_incomplete","is_incomplete","is_incomplete","is_interface","is_none","is_out","is_ptr","is_ptr","is_volatile","kind","members","members","name","name","name","name","name","name","name","name","name","name","name","name","name","name","name","name","namespace","namespace_mut","namespace_types","namespaces","new","ns_id","nullable","package_names","parameters","parameters","parent","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","pointer","postprocessing","preprocessing","prerequisites","private","properties","properties","read_file","readable","record","ref_fn","register_version","requires_conversion","ret","ret","scope","shared_library","show_non_bound_types","signals","signals","status","symbol_prefix","symbol_prefix","symbol_prefix","symbol_prefix","symbol_prefix","symbol_prefix","symbol_prefixes","target_c_type","throws","tid_bool","tid_c_bool","tid_filename","tid_none","tid_os_string","tid_uint32","tid_utf8","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","transfer","transfer","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","typ","typ","typ","typ","typ","type_","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_mut","type_struct","type_struct","types","types","union","unref_fn","value","value","version","version","version","version","version","version","version","version","version","version","versions","virtual_methods","virtual_methods","visit_functions_mut","visit_functions_mut","writable","apply_config","check_function_real_version"],"q":[[0,"libgir"],[97,"libgir::analysis"],[158,"libgir::analysis::bounds"],[253,"libgir::analysis::c_type"],[256,"libgir::analysis::child_properties"],[283,"libgir::analysis::class_builder"],[284,"libgir::analysis::class_hierarchy"],[296,"libgir::analysis::constants"],[312,"libgir::analysis::conversion_type"],[338,"libgir::analysis::conversion_type::ConversionType"],[340,"libgir::analysis::enums"],[358,"libgir::analysis::ffi_type"],[360,"libgir::analysis::flags"],[378,"libgir::analysis::function_parameters"],[491,"libgir::analysis::function_parameters::TransformationType"],[509,"libgir::analysis::functions"],[598,"libgir::analysis::general"],[613,"libgir::analysis::imports"],[670,"libgir::analysis::info_base"],[694,"libgir::analysis::namespaces"],[728,"libgir::analysis::object"],[794,"libgir::analysis::out_parameters"],[853,"libgir::analysis::properties"],[877,"libgir::analysis::record"],[898,"libgir::analysis::record_type"],[914,"libgir::analysis::ref_mode"],[940,"libgir::analysis::return_value"],[959,"libgir::analysis::rust_type"],[1023,"libgir::analysis::safety_assertion_mode"],[1047,"libgir::analysis::signals"],[1066,"libgir::analysis::signatures"],[1079,"libgir::analysis::special_functions"],[1173,"libgir::analysis::supertypes"],[1175,"libgir::analysis::symbols"],[1209,"libgir::analysis::trampoline_parameters"],[1299,"libgir::analysis::trampolines"],[1328,"libgir::analysis::try_from_glib"],[1351,"libgir::analysis::try_from_glib::TryFromGlib"],[1354,"libgir::analysis::types"],[1366,"libgir::fmt"],[1368,"libgir::library"],[2137,"libgir::update_version"],[2139,"core::option"],[2140,"core::fmt"],[2141,"core::fmt"],[2142,"alloc::string"],[2143,"core::convert"],[2144,"core::any"],[2145,"core::ops::function"],[2146,"core::marker"],[2147,"core::slice::iter"],[2148,"alloc::vec"],[2149,"core::iter::traits::iterator"],[2150,"alloc::boxed"],[2151,"core::borrow"],[2152,"core::iter::traits::collect"],[2153,"core::cmp"],[2154,"alloc::vec::into_iter"],[2155,"alloc::borrow"],[2156,"core::ops::function"],[2157,"std::path"],[2158,"core::hash"],[2159,"core::convert"]],"d":["","","","","","","","","","","","Path where files generated in normal and sys mode","","","","","","","","","","","","","","","","","","","","","","","An url that will be inserted into the docs as link that …","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","Helper to get the ffi crate import","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","","","","","","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Bound does not have an alias when param: impl type_str is …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","","Calls U::from(self).","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Calls U::from(self).","","","","","","","","","","","","","","Returns the argument unchanged.","","Calls U::from(self).","","","","","","","","","Coded without conversion.","Type implementing TryFromGlib<Error=GlibNoneError>.","Coded with from_glib_xxx.","Type implementing TryFromGlib where Err is neither …","Coded with from_glib.","","","","","","","","","","","","","Returns the argument unchanged.","Calls U::from(self).","","","","","","","","","","","","","Returns the argument unchanged.","","","Calls U::from(self).","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Index of the destroy notification parameter associated …","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Index of the user data parameter associated with the …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Whether the function can’t be generated","","","","","","","","","","","","","Given async function name tries to guess the name of …","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","Whether the function is hidden (an implementation detail) …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","In order to generate docs links we need to know in which …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Calls U::from(self).","","","","","","","","","Provides assistance in generating use declarations.","","Declares that name should be available through its last …","Declares that name is defined in scope","Declares that name should be available through its full …","Declares that name should be available through its full …","","Declares that name should be available through its last …","Declares that name should be available through its last …","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","TODO: return iterator","","","","Returns the argument unchanged.","","","","","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","The location of an item within the object","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the location of the function within this object","Generate doc name based on function location within this …","","","","","","","","","Calls U::from(self).","Calls U::from(self).","","","","","","","Specific to fundamental types","Whether we should generate an impl block for this object …","","","","","","","","","","","","Specific to fundamental types","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","","","","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","","Calls U::from(self).","","","","","","","Boxed record that use g_boxed_copy, g_boxed_free. Must …","Boxed record with custom copy/free functions","","Referencecounted record","","","","","","","Returns the argument unchanged.","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","Calls U::from(self).","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Calls U::from(self).","","","","","","","Contains the error value","","","Contains the success value","","A RustType definition and its associated types to be used.","","","","","","","","","","","","Create a RustTypeBuilder which allows specifying additional","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","Try building the RustType with no specific additional …","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","Calls U::from(self).","","","","","","","","","","","","","","","","Returns the argument unchanged.","","Calls U::from(self).","","","","","","","","","","","","","Returns the argument unchanged.","","","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","Calls U::from(self).","Calls U::from(self).","","Convert this symbol into a trait","Convert this into a method of a trait","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","Calls U::from(self).","","","","","","","","","","","","This field is used to give the type name when generating …","It’s used to group callbacks","","","","","","","","","","","","","","","Returns the argument unchanged.","","","","Calls U::from(self).","","","","","","","","","Checks if given type derives Copy trait.","Checks if given type implements Debug trait.","Checks if type is external aka opaque type.","Checks if given type is incomplete, i.e., its size is …","Checks if given type is some kind of pointer.","Checks if given type has volatile qualifier.","","","","","","","Check if cargo fmt available","Run cargo fmt on path","","","","Used for the duration of the asynchronous call.","","","","","","","","Used only for the duration of the call.","","","","","","","","","","","","","","","","","","","Forever scope","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Parameter is not of callback type.","","","Used until notified with associated destroy notify …","","","","","","Annotation describing lifetime requirements / guarantees …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","C headers, relative to include directories provided by …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Index of the user data parameter associated with the …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Index of the destroy notification parameter associated …","","A ‘disguised’ record is one where the c:type is a …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","If the type is an Alias containing a basic, it’ll return …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Types from a single namespace in alphabetical order.","","","","","","","","","","","","","","","","","","","A ‘pointer’ record is one where the c:type is a …","","","","","","","","","","Specific to fundamental types","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"i":[0,3,3,0,0,3,3,0,0,4,0,1,1,3,4,1,3,4,1,4,0,3,3,0,1,4,3,1,1,1,3,3,3,3,1,1,1,1,1,1,0,1,3,4,1,3,4,3,1,1,1,1,3,4,3,3,4,4,1,0,4,1,1,1,4,1,1,1,4,0,1,1,1,1,1,1,4,0,4,1,3,1,1,3,4,1,3,4,4,1,3,4,4,4,0,1,1,0,0,20,20,0,0,0,0,0,0,20,0,20,20,20,0,0,20,20,20,20,20,20,0,20,20,20,20,0,0,0,20,0,0,20,0,0,0,20,0,0,0,0,20,0,0,0,0,0,0,0,0,0,0,0,0,20,0,20,20,0,33,0,0,0,0,33,33,0,28,28,34,35,33,34,28,32,35,33,34,28,32,35,32,34,34,32,33,34,28,32,35,33,34,28,32,35,28,33,34,33,33,33,34,34,34,32,33,34,28,32,35,33,34,28,32,35,35,28,28,33,33,34,28,32,35,28,28,28,33,34,32,33,34,28,32,35,33,34,28,32,35,33,34,28,32,35,28,33,34,28,32,35,34,35,28,0,0,0,0,0,0,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,0,0,44,44,44,44,44,0,44,44,44,44,44,0,0,47,47,47,47,47,47,47,47,47,47,47,47,47,47,50,0,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,127,127,0,21,21,21,21,21,21,21,21,21,0,21,21,21,21,21,21,21,0,0,0,25,25,25,25,25,25,25,25,25,0,25,25,25,25,25,25,25,0,58,58,0,0,0,58,58,58,58,58,58,0,0,0,55,56,57,30,58,59,55,56,57,30,58,59,55,55,30,30,56,57,30,58,59,55,56,57,30,58,59,55,55,30,30,56,57,30,58,59,55,56,57,30,58,59,55,56,56,57,59,59,30,56,57,30,58,59,55,30,58,56,30,57,30,30,30,55,30,58,56,57,30,58,59,55,30,59,55,56,57,30,58,59,55,56,30,56,57,30,58,59,55,57,30,56,57,30,58,59,55,30,128,128,128,129,129,129,129,130,131,129,132,131,131,129,129,129,129,129,0,0,0,0,62,22,22,22,61,62,22,61,62,22,61,22,61,22,22,61,62,61,62,22,22,22,22,22,22,22,22,22,62,61,0,0,61,0,61,62,22,61,62,22,22,22,22,61,22,61,62,22,22,0,61,62,22,22,61,62,22,22,22,22,61,22,22,22,22,22,22,22,62,61,62,22,61,62,22,61,62,22,61,62,22,22,22,22,22,0,65,65,65,65,65,65,65,65,65,65,65,65,65,65,0,0,0,38,38,38,38,38,38,38,68,38,66,68,38,66,38,66,38,66,66,66,66,38,66,68,68,68,66,66,66,66,38,66,68,38,66,68,38,66,38,38,66,38,66,68,38,66,68,38,66,68,38,66,66,38,38,0,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,0,0,0,0,0,7,71,7,71,7,7,71,7,71,71,7,71,7,71,71,71,7,7,0,7,7,7,7,71,7,71,7,71,7,72,72,72,72,72,72,0,0,72,26,72,26,72,26,26,26,26,26,26,0,72,72,26,26,72,72,72,72,26,72,26,72,26,26,26,26,26,26,0,26,26,26,0,72,26,26,26,26,26,26,26,26,26,26,26,26,72,26,72,26,72,26,72,26,26,26,76,77,0,0,77,77,77,76,0,77,76,0,76,77,75,76,77,75,0,76,77,76,77,76,77,75,76,77,76,76,76,77,77,77,76,77,75,76,77,75,76,77,75,75,75,75,75,76,77,76,77,75,76,77,75,76,77,75,0,0,0,42,42,42,42,42,42,42,42,42,0,42,42,42,42,42,42,42,42,42,42,42,42,0,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,0,27,27,27,27,82,82,0,82,82,82,82,82,82,82,82,82,82,82,82,82,79,79,79,79,79,79,0,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,0,0,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,52,87,87,52,0,0,0,0,87,84,84,86,87,84,86,87,84,84,86,87,84,87,84,86,84,86,87,84,87,87,87,84,84,84,87,84,86,87,84,84,84,86,87,84,84,86,86,86,87,84,86,86,86,87,84,86,86,87,84,84,86,87,84,84,92,92,92,0,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,0,78,0,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,0,0,94,94,94,94,94,94,94,94,94,94,94,96,96,96,96,96,0,0,96,0,96,98,0,0,96,0,96,97,98,99,95,96,97,98,99,95,96,97,98,99,96,97,98,99,96,98,96,98,95,96,98,96,96,96,98,98,98,0,97,96,97,98,99,95,96,97,98,99,95,96,95,97,95,96,97,98,99,95,96,98,96,97,98,99,95,95,96,97,98,99,95,96,97,98,99,95,99,96,97,98,99,95,0,97,99,0,0,0,0,102,101,102,101,101,101,101,102,102,102,102,102,101,102,101,102,102,101,102,102,102,102,102,102,0,102,102,101,102,101,102,101,107,0,107,0,0,0,0,107,0,104,105,106,103,107,104,105,106,103,107,103,105,104,105,106,103,107,104,105,106,103,107,106,103,104,104,105,106,103,107,104,105,106,103,107,107,103,106,106,104,105,106,103,107,105,104,105,106,103,104,103,104,106,103,104,105,106,103,107,106,106,103,104,105,106,103,107,104,104,105,106,103,107,104,105,106,104,105,106,103,107,0,0,0,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,0,109,109,109,109,91,91,91,91,91,91,0,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,133,133,134,0,0,0,0,0,0,135,136,137,138,139,140,0,0,0,18,18,90,0,18,0,18,115,115,18,90,115,0,18,114,0,0,114,108,0,18,115,0,18,0,0,115,18,115,90,108,0,114,124,18,0,114,18,0,0,83,83,0,115,115,115,115,115,115,0,18,0,18,115,0,0,0,114,0,108,83,90,31,115,90,0,115,83,0,0,0,115,0,18,124,0,18,83,18,115,31,31,115,0,115,0,0,115,0,115,115,115,115,115,115,115,115,115,115,0,18,115,115,115,114,16,16,16,16,16,121,54,121,108,83,90,80,112,113,114,31,115,17,116,48,123,124,51,53,81,121,117,41,54,29,93,118,119,120,18,122,16,108,83,90,80,112,113,114,31,115,17,116,48,123,124,51,53,81,121,117,41,54,29,93,118,119,120,18,122,16,18,118,119,116,48,123,29,122,48,51,53,81,121,117,41,54,118,119,54,108,83,90,80,112,113,114,31,115,17,54,108,83,90,80,112,113,114,31,115,17,54,54,17,116,51,53,81,117,29,118,119,120,17,116,51,53,81,117,29,118,119,120,122,41,41,18,120,83,90,31,17,81,121,117,118,119,122,48,123,51,53,81,41,29,93,118,119,80,112,113,80,115,17,116,81,121,117,29,119,18,54,54,81,116,48,123,51,53,81,121,117,41,54,29,93,118,119,122,116,48,123,51,53,81,41,29,93,118,119,122,108,83,90,80,112,113,114,31,115,17,116,51,53,81,117,29,118,119,120,18,108,108,108,83,83,83,90,90,90,80,80,80,112,112,112,113,113,113,114,114,114,31,31,31,115,115,115,17,17,17,116,116,116,51,51,51,53,53,53,81,81,81,117,117,117,29,29,29,118,118,118,119,119,119,120,120,120,18,18,18,51,81,117,119,119,18,16,16,16,108,83,90,80,112,113,114,31,115,17,116,48,123,124,51,53,81,121,117,41,54,29,93,118,119,120,18,18,122,16,108,83,90,80,112,113,114,31,115,17,116,48,123,124,51,53,81,121,117,41,54,29,93,118,119,120,18,122,16,108,83,90,114,31,17,18,18,51,53,81,117,118,119,122,18,18,18,18,51,53,81,117,118,119,122,81,81,81,81,81,81,17,17,122,119,121,122,16,54,108,83,90,80,112,113,114,31,115,17,116,48,123,124,51,53,81,121,117,41,54,29,93,118,119,120,18,122,16,18,119,93,90,18,17,18,18,90,18,16,93,18,54,116,81,117,119,18,18,90,18,18,119,16,83,115,17,116,81,121,117,29,119,18,18,90,83,116,121,121,29,51,53,116,48,123,51,53,81,121,117,41,54,29,93,118,119,120,122,16,16,16,16,16,17,54,122,29,93,119,17,116,51,53,81,117,29,118,119,120,81,16,16,118,121,118,119,16,41,18,119,16,115,29,93,54,122,16,118,119,123,51,53,81,117,118,119,122,116,29,17,17,17,17,17,17,17,108,83,90,80,112,113,114,31,115,17,54,18,41,54,108,83,90,80,112,113,114,31,115,17,116,48,123,124,51,53,81,121,117,41,54,29,93,118,119,120,18,122,16,108,83,90,80,112,113,114,31,115,17,116,48,123,124,51,53,81,121,117,41,54,29,93,118,119,120,18,122,16,116,48,121,41,54,16,108,83,90,80,112,113,114,31,115,17,116,48,123,124,51,53,81,121,117,41,54,29,93,118,119,120,18,122,16,16,118,119,16,122,18,119,48,123,48,123,51,53,81,41,29,93,118,119,122,118,119,18,122,41,0,0],"f":[0,0,0,0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[1,2],0,0,[3,3],[[-1,-2],2,[],[]],[4,2],0,0,[[],3],0,0,0,[[3,3],5],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],0,0,0,0,[[1,[6,[0]]],[[6,[0]]]],[[1,7],[[6,[0]]]],0,[[1,8],9],[[3,8],9],[[4,8],9],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[10,[[11,[3]]]],0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[3,5],[3,5],[[4,[6,[12]],[6,[0]]],5],[[4,[6,[12]],[6,[0]]],5],0,0,0,[1,13],0,0,[4,10],0,0,[[1,4,[6,[12]]],[[6,[0]]]],0,0,[[-1,-2,[14,[13]],-1,-1,-1,-1,5,5,5],[[11,[1,13]]],[[15,[[6,[10]]]]],[[15,[[6,[3]]]]]],0,[[1,16],2],0,0,0,0,0,[[4,17],13],0,[-1,-2,[],[]],0,[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[[4,17],18],[-1,19,[]],[-1,19,[]],[-1,19,[]],0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,0,[[],20],0,0,0,0,[[20,4,-1,-2],[[6,[[2,[21,22]]]]],[23,24],[23,24]],[[20,4,-1,-2],[[6,[[2,[25,22]]]]],[23,24],[23,24]],[[20,4,-1],[[6,[22]]],[23,24]],[[20,4,-1,-2],[[6,[[2,[26,22]]]]],[23,24],[23,24]],[[20,4,-1,-2],[[6,[[2,[26,22]]]]],[23,24],[23,24]],[[20,4,-1,-2],[[6,[[2,[27,22]]]]],[23,24],[23,24]],0,0,0,[[20,8],9],[-1,-1,[]],0,0,0,0,0,0,[-1,-2,[],[]],[10,5],0,0,0,0,0,0,0,0,0,0,[4,2],0,0,0,0,0,0,0,0,0,[-1,[[11,[-2]]],[],[]],0,[-1,[[11,[-2]]],[],[]],[-1,19,[]],0,0,0,0,0,0,0,0,0,[[28,4,29,30,5,31,[14,[0]]],[[2,[[6,[13]],[6,[32]]]]]],[[28,10,10,33,5],2],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,[33,33],[34,34],[28,28],[32,32],[35,35],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[],28],[[33,33],5],[[34,34],5],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],0,[[33,8],9],[[34,8],9],[[28,8],9],[[32,8],9],[[35,8],9],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[4,17],[[6,[35]]]],[[28,10],[[6,[34]]]],[[33,5,5,5],13],[33,5],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[28,5],[28,[[36,[34]]]],[28,[[36,[37]]]],[33,5],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[[4,17],[[6,[33]]]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],0,0,[[28,38],2],[[4,17,10],5],[10,5],[10,[[2,[13,13]]]],0,0,[[4,[6,[0]],17,38],39],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,[40,40],[[-1,-2],2,[],[]],0,[[40,8],9],[-1,-1,[]],0,0,[-1,-2,[],[]],0,0,0,0,0,0,[-1,-2,[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],0,[-1,19,[]],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[[44,8],9],[-1,-1,[]],[-1,-2,[],[]],[16,44],[[44,17],[[46,[45]]]],[[44,17],[[14,[17]]]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,19,[]],0,0,[-1,-2,[],[]],[-1,-2,[],[]],0,0,[[47,8],9],[-1,-1,[]],0,[-1,-2,[],[]],0,[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],0,[-1,19,[]],0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[50,5],[50,50],[[-1,-2],2,[],[]],[[],50],[[50,50],5],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[50,8],9],[-1,-1,[]],[-1,-2,[],[]],[[4,17],50],[-1,-2,[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,19,[]],0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[[],21],[[21,8],9],[-1,-1,[]],0,0,[-1,-2,[],[]],0,0,0,[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[[21,16],51],[-1,19,[]],0,0,[[4,17,10],52],[[4,17,10],[[6,[13]]]],0,[-1,-2,[],[]],[-1,-2,[],[]],[[],25],[[25,8],9],[-1,-1,[]],0,0,[-1,-2,[],[]],0,0,0,[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[[25,16],53],[-1,19,[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[4,[14,[54]],[14,[0]],5,5,5],55],[[55,4,[6,[56]]],2],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,[56,56],[57,57],[30,30],[58,58],[59,59],[55,55],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[],55],0,0,[[56,8],9],[[57,8],9],[[30,8],9],[[58,8],9],[[59,8],9],[[55,8],9],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[4,54,[14,[0]]],56],[[4,54,[14,[0]]],56],0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[58,5],0,0,0,0,0,0,0,0,[[58,10],2],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],0,0,[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],0,0,[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,[61,61],[62,62],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[22,10],0,0,0,0,0,[[22,[6,[10]],[6,[10]],5],13],0,0,0,0,[[4,10],[[6,[29]]]],[[-1,[6,[54]]],[[6,[63]]],64],0,[10,13],[[61,8],9],[[62,8],9],[[22,8],9],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[22,4],5],[[4,17],5],0,0,[22,5],0,0,0,0,0,0,0,0,0,0,0,0,[[22,4],5],[[22,4],5],0,0,[-1,-2,[],[]],[-1,-2,[],[]],0,[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[65,65],[[-1,-2],2,[],[]],[[65,8],9],[-1,-1,[]],[-1,-2,[],[]],0,0,[-1,-2,[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,19,[]],0,0,0,0,[[38,10],2],[[38,10],2],[[38,10],2],[[38,10,[6,[0]]],2],[[38,[14,[13]]],2],[[38,10,[6,[0]],[6,[10]]],2],[[38,10,[6,[0]]],2],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[38,38],[66,66],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[66,66],67],[[-1,-2],67,[],[]],0,[[],38],[[],66],[68],[68],[68,2],[[66,66],5],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[38,8],9],[[66,8],9],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[38,[[69,[[2,[13,66]]]]]],[16,38],[[66,66],[[6,[67]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],0,[[38,[6,[0]],[6,[13]]],68],[[16,10],38],0,[-1,-2,[],[]],[-1,-2,[],[]],0,0,[70,[[43,[22]]]],[[],70],0,[[70,8],9],[-1,-1,[]],0,[70,[[43,[22]]]],0,0,[-1,-2,[],[]],[70,[[43,[22]]]],0,0,[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,19,[]],0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[[7,8],9],[[71,8],9],[-1,-1,[]],[-1,-1,[]],0,0,[[71,12],7],[-1,-2,[],[]],[-1,-2,[],[]],0,[71,7],0,0,[16,71],0,0,0,[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,19,[]],[-1,19,[]],0,0,0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,[72,72],[[-1,-2],2,[],[]],[[],26],[26,70],[[72,72],5],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],0,[[72,8],9],[[26,8],9],[-1,-1,[]],[-1,-1,[]],[[26,22],72],[[26,22],[[2,[[73,[10]],[73,[10]]]]]],0,0,[26,5],[[[14,[[2,[[43,[42]],17]]]]],5],0,0,[26,5],0,[-1,-2,[],[]],[-1,-2,[],[]],0,0,[26,5],[26,5],0,0,0,[26,5],0,0,0,[-1,-2,[],[]],0,[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,19,[]],[-1,19,[]],0,0,0,0,0,0,0,0,0,0,0,0,0,[[4,29,[14,[30]],74,[14,[0]]],[[2,[75,5]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[4,54],5],[76,76],[77,77],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[],76],[[],77],[[],75],[[76,76],5],[[77,77],5],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[76,8],9],[[77,8],9],[[75,8],9],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[75,5],[75,[[36,[56]]]],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[[4,17,10,[14,[0]]],5],0,0,[-1,-2,[],[]],[-1,-2,[],[]],0,0,[[42,8],9],[-1,-1,[]],0,0,0,[[4,41],[[2,[79,79,80]]]],[-1,-2,[],[]],0,0,0,0,0,[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],0,[-1,19,[]],0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,[[],27],[27,70],0,[[27,8],9],[-1,-1,[]],0,0,[-1,-2,[],[]],0,0,[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[[27,16],81],[-1,19,[]],0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[[82,82],5],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[-1,-1,[]],[-1,-2,[],[]],[81,82],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,19,[]],0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[79,79],[[-1,-2],2,[],[]],[[79,79],5],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[79,8],9],[-1,-1,[]],[10,[[11,[79]]]],[-1,-2,[],[]],[79,5],[[4,17,83],79],[-1,-2,[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,19,[]],[[4,54,5,5],79],0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[74,74],[[-1,-2],2,[],[]],0,[[],74],[[74,8],9],[-1,-1,[]],[-1,-2,[],[]],0,0,[-1,-2,[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,19,[]],0,0,0,0,0,0,0,0,0,[[84,-1],84,85],[84,10],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[4,17],86],[[86,[14,[0]]],86],[87,87],[84,84],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[86,31],86],[[],84],[[86,83],86],[[87,87],5],[[84,84],5],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[87,8],9],[[84,8],9],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[88,-1,[]],[-1,84,89],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[84,[[43,[13]]]],[[86,80],86],[[86,79],86],[[86,90],86],[-1,-2,[],[]],[-1,-2,[],[]],[86,52],[86,52],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[[86,91],86],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[[4,17],52],[-1,19,[]],[-1,19,[]],[-1,19,[]],[84,[[43,[13]]]],0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[92,92],[[-1,-2],2,[],[]],[[],92],[[92,92],5],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[92,8],9],[-1,-1,[]],[10,[[11,[92,13]]]],[-1,-2,[],[]],[92,5],[[4,5,55],92],[-1,-2,[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,19,[]],0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,[[78,8],9],[-1,-1,[]],0,[-1,-2,[],[]],0,0,0,[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,19,[]],0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[[94,8],9],[-1,-1,[]],[[4,10,5,17,60,[14,[17]]],[[2,[5,[6,[0]]]]]],[[94,4,10,[14,[17]]],[[2,[5,[6,[0]]]]]],[-1,-2,[],[]],[29,94],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,19,[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[95,38],2],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[96,96],[97,97],[98,98],[99,99],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[96,96],67],[[98,98],67],[[-1,-2],67,[],[]],[[-1,-2],67,[],[]],[[],95],[[96,96],5],[[98,98],5],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],0,0,[[96,8],9],[[97,8],9],[[98,8],9],[[99,8],9],[[95,8],9],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[10,[[11,[96]]]],[95,[[100,[13,99]]]],0,[[95,96],5],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[96,96],[[6,[67]]]],[[98,98],[[6,[67]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[95,[[100,[96,97]]]],[95,[[100,[96,97]]]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],0,[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[[[14,[22]],95,96],2],0,0,[[4,17,[6,[0]],38,5],[[43,[65]]]],[[4,17],[[43,[17]]]],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[101,10],[[6,[102]]]],[[101,10],[[6,[102]]]],[[101,17],[[6,[102]]]],[102,102],[[-1,-2],2,[],[]],[102,[[6,[10]]]],[[],102],[[102,8],9],[[101,8],9],[-1,-1,[]],[-1,-1,[]],[102,13],[-1,-2,[],[]],[-1,-2,[],[]],[102,5],[[102,10],2],[[102,10],2],[102,10],[102,[[6,[10]]]],[102,13],[[16,71],101],[-1,-2,[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,19,[]],[-1,19,[]],0,0,0,0,0,0,0,0,[[4,[14,[54]],17,[14,[0]],[6,[[43,[0]]]]],103],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,[104,104],[105,105],[106,106],[103,103],[107,107],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],0,[[],103],0,[[104,8],9],[[105,8],9],[[106,8],9],[[103,8],9],[[107,8],9],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[10,[[11,[107]]]],[[103,63],[[6,[106]]]],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[105,4],5],0,0,0,[63,103],0,[[103,4,17,13,13,83,108,80,79,50],106],0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],0,[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],0,0,0,[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],0,0,[109,109],[[-1,-2],2,[],[]],0,0,[[109,8],9],[-1,-1,[]],0,[-1,-2,[],[]],0,0,0,0,0,0,[-1,-2,[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[[4,54],[[6,[10]]]],[-1,19,[]],0,0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[91,91],[[-1,-2],2,[],[]],[[],91],[[91,8],9],[-1,-1,[]],[[4,17,[14,[0]]],91],[[4,17,[14,[0]]],91],[[4,17],91],[-1,-2,[],[]],[[91,4,17],[[73,[91]]]],[-1,-2,[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,19,[]],0,0,0,0,0,0,0,0,0,[[-1,16],5,[]],[[-1,16],5,[]],[[-1,16],5,[]],[[-1,16],5,[]],[-1,5,[]],[-1,5,[]],[[],5],[110,2],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[16,111,48],2],[[16,111,29],2],[[16,3],2],[[16,10],111],[[16,111,10,18],17],0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[16,17,[6,[111]],[6,[13]]],17],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[108,108],[83,83],[90,90],[80,80],[112,112],[113,113],[114,114],[31,31],[115,115],[17,17],[54,54],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],0,[[17,17],67],[[116,116],67],[[51,51],67],[[53,53],67],[[81,81],67],[[117,117],67],[[29,29],67],[[118,118],67],[[119,119],67],[[120,120],67],[[-1,-2],67,[],[]],[[-1,-2],67,[],[]],[[-1,-2],67,[],[]],[[-1,-2],67,[],[]],[[-1,-2],67,[],[]],[[-1,-2],67,[],[]],[[-1,-2],67,[],[]],[[-1,-2],67,[],[]],[[-1,-2],67,[],[]],[[-1,-2],67,[],[]],0,0,0,[[16,10,[43,[17]]],[[6,[17]]]],0,[[],83],[[],90],[[],31],[[],17],[[],81],[[],121],[[],117],[[],118],[[],119],[[],122],0,0,0,0,0,0,0,0,0,0,[80,5],[112,5],[113,5],[80,5],[[-1,16],5,[]],[[-1,16],5,[]],[[-1,16],5,[]],[[-1,16],5,[]],[[-1,16],5,[]],[[-1,16],5,[]],[[-1,16],5,[]],[[-1,16],5,[]],[[-1,16],5,[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[108,108],5],[[83,83],5],[[90,90],5],[[80,80],5],[[112,112],5],[[113,113],5],[[114,114],5],[[31,31],5],[[115,115],5],[[17,17],5],[[116,116],5],[[51,51],5],[[53,53],5],[[81,81],5],[[117,117],5],[[29,29],5],[[118,118],5],[[119,119],5],[[120,120],5],[[18,18],5],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],0,0,0,0,0,[[16,17,[6,[111]]],17],[[16,10],[[6,[111]]]],[[16,111,10],17],[[16,111,10],[[6,[17]]]],[[108,8],9],[[83,8],9],[[90,8],9],[[80,8],9],[[112,8],9],[[113,8],9],[[114,8],9],[[31,8],9],[[115,8],9],[[17,8],9],[[116,8],9],[[48,8],9],[[123,8],9],[[124,8],9],[[51,8],9],[[53,8],9],[[81,8],9],[[121,8],9],[[117,8],9],[[41,8],9],[[54,8],9],[[29,8],9],[[93,8],9],[[118,8],9],[[119,8],9],[[120,8],9],[[18,8],9],[[18,8],9],[[122,8],9],[[16,8],9],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[10,[[11,[108,13]]]],[10,[[11,[83,13]]]],[10,[[11,[90,13]]]],[10,[[11,[114,13]]]],[10,[[11,[31,13]]]],[[17,16],13],[[16,29],17],[18,[[14,[29]]]],0,0,0,0,0,0,0,[18,[[6,[0]]]],[18,[[6,[10]]]],[[18,4],[[6,[[2,[18,111]]]]]],[18,13],0,0,0,0,0,0,0,0,[81,5],[81,5],[81,5],[81,5],[81,5],[[17,-1],2,125],0,0,0,[[121,16],5],0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[18,5],0,0,[90,5],[18,5],[[17,4],5],[[18,4],5],[18,5],[90,5],[18,5],[[16,10],5],0,[18,5],0,[[116,16],5],[[81,16],5],[[117,16],5],[[119,16],5],[[18,16],5],[18,5],[90,5],[18,5],[18,5],0,[16,5],[83,5],[[115,16],5],[[17,16],5],[[116,16],5],[[81,16],5],[[121,16],5],[[117,16],5],[[29,16],5],[[119,16],5],[[18,16],5],[18,5],[90,5],[83,5],[116,5],[121,5],[121,5],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[16,111],122],[[16,111],122],[[16,111],[[46,[45]]]],0,[10,16],0,0,0,0,0,0,[[17,17],[[6,[67]]]],[[116,116],[[6,[67]]]],[[51,51],[[6,[67]]]],[[53,53],[[6,[67]]]],[[81,81],[[6,[67]]]],[[117,117],[[6,[67]]]],[[29,29],[[6,[67]]]],[[118,118],[[6,[67]]]],[[119,119],[[6,[67]]]],[[120,120],[[6,[67]]]],0,[[16,1],2],[[16,3],2],0,0,0,0,[[16,[14,[-1]],[43,[13]]],[[11,[2,13]]],[[126,[110]]]],0,[[16,81,111],17],0,0,[115,5],0,0,0,0,[[16,4],2],0,0,0,0,0,0,0,0,0,0,0,0,[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,13,[]],0,0,[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],0,0,0,0,0,[[16,17],18],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[[16,17],18],0,0,[16,[[46,[45]]]],0,[[16,117,111],17],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[18,-1],5,0],[[122,-1],5,0],0,[[16,1],2],[16,2]],"c":[],"p":[[3,"Config",0],[15,"tuple"],[4,"WorkMode",0],[3,"Env",0],[15,"bool"],[4,"Option",2139],[3,"Namespace",694],[3,"Formatter",2140],[6,"Result",2140],[15,"str"],[4,"Result",2141],[6,"NsId",694],[3,"String",2142],[15,"slice"],[8,"Into",2143],[3,"Library",1368],[3,"TypeId",1368],[4,"Type",1368],[3,"TypeId",2144],[3,"Analysis",97],[3,"Info",340],[3,"Info",509],[8,"Fn",2145],[8,"Copy",2146],[3,"Info",360],[3,"Info",728],[3,"Info",877],[3,"Bounds",158],[3,"Function",1368],[3,"CParameter",378],[4,"Concurrency",1368],[3,"CallbackInfo",158],[4,"BoundType",158],[3,"Bound",158],[3,"PropertyBound",158],[3,"Iter",2147],[15,"char"],[3,"Imports",613],[6,"ChildProperties",256],[3,"ChildProperty",256],[3,"Property",1368],[3,"Property",853],[3,"Vec",2148],[3,"Info",284],[8,"Iterator",2149],[3,"Box",2150],[3,"Info",296],[3,"Constant",1368],[8,"Borrow",2151],[4,"ConversionType",312],[3,"Enumeration",1368],[6,"Result",959],[3,"Bitfield",1368],[3,"Parameter",1368],[3,"Parameters",378],[3,"Parameter",378],[3,"RustParameter",378],[4,"TransformationType",378],[3,"Transformation",378],[6,"Signatures",1066],[3,"AsyncTrampoline",509],[3,"AsyncFuture",509],[15,"usize"],[8,"IntoIterator",2152],[3,"StatusedTypeId",598],[3,"ImportConditions",613],[4,"Ordering",2153],[3,"ImportsWithDefault",613],[3,"IntoIter",2154],[3,"InfoBase",670],[3,"Info",694],[4,"LocationInObject",728],[4,"Cow",2155],[3,"Info",940],[3,"Info",794],[4,"ThrowFunctionReturnStrategy",794],[4,"Mode",794],[3,"Info",1047],[4,"RefMode",914],[3,"Nullable",1368],[3,"Record",1368],[4,"RecordType",898],[4,"ParameterDirection",1368],[3,"RustType",959],[8,"FnOnce",2145],[3,"RustTypeBuilder",959],[4,"TypeError",959],[15,"never"],[8,"ToString",2142],[4,"ParameterScope",1368],[4,"TryFromGlib",1328],[4,"SafetyAssertionMode",1023],[3,"Signal",1368],[3,"Signature",1066],[3,"Infos",1079],[4,"Type",1079],[3,"TraitInfo",1079],[4,"FunctionType",1079],[3,"FunctionInfo",1079],[3,"BTreeMap",2156],[3,"Info",1175],[3,"Symbol",1175],[3,"Parameters",1209],[3,"RustParameter",1209],[3,"CParameter",1209],[3,"Transformation",1209],[4,"TransformationType",1209],[4,"Transfer",1368],[3,"Trampoline",1299],[3,"Path",2157],[15,"u16"],[3,"Mandatory",1368],[3,"Infallible",1368],[4,"FunctionKind",1368],[4,"Basic",1368],[3,"Alias",1368],[3,"Union",1368],[3,"Interface",1368],[3,"Class",1368],[3,"Custom",1368],[3,"Field",1368],[3,"Namespace",1368],[3,"Member",1368],[4,"ErrorDomain",1368],[8,"Hasher",2158],[8,"AsRef",2143],[13,"Result",338],[13,"Length",491],[13,"ToGlibPointer",491],[13,"ToGlibDirect",491],[13,"ToGlibScalar",491],[13,"ToGlibUnknown",491],[13,"Result",1351],[13,"ResultInfallible",1351],[8,"DerivesCopy",1354],[8,"ImplementsDebug",1354],[8,"IsExternal",1354],[8,"IsIncomplete",1354],[8,"IsPtr",1354],[8,"IsVolatile",1354]],"b":[[1785,"impl-Display-for-Type"],[1786,"impl-Debug-for-Type"]]}\ +"libgir":{"doc":"","t":"DNNDCNNEAMCMLLLLLLLMCLLFMMLMMMLLLLMMMMLLALLLLLLLMMMLLLLLLLMAMLMMLMMLMCLMLMMMMCLMLMLLLLLLLLLLLLAMMDCLLAAAAAAMALMMAALLLLLLAMMLLAAAMAALFAAMAAAAMAAFAAAAAAAAALALLANDEDDNNDLLMMLLLLLLLLLLMMMMLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLMMLLLLLLLLLLLLLLLLLLLLLMMLFFFGDFLLMMMLLMLLMMLMMMMMMLLLMLFDLLLLLFLLLLLDFLLMMLLMLMLLMLMNENNNNNNLLLLLLLLLLLLLLLLLLMMDLLLLLMMLMFMLLLLMMFFDLLLLLMMLMFMLLLLMMDNNDDDNNNNNNDEFLLLLLLLLLLLLLMMMLLLLLLLLLLLLLMMLLLLLLLLLLLLLLMMMMLLLLLLMLMMMMMMMMLLLLLLLMMMLLLLLLMMLLLLLLMMLLLLLLMMMMMMMMMMMMMMMMMMMDDDFMMMMLLLLLLMMMMMLLLLLMMMMMLMMMMFFMFLLLLLLMMMMMLLLLFMMLMMMMMMMMMMMMLLMMLLMLLLLLLLLLMMMMDLLLLLLLMMLLLLMDDDLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLDLLMMLLMLLMLMMLLMMLLLMMMRDRDGLLLLMLLLLMMLLLMLMMFMMMLLLLLLMNNNNNNDENMLLLLMMMMMFLLLLLLLLMLLLLLLMMLFMMLFLLMMLLMMMLMMMLMLLLLLLMMNNDENNNNENNFLLLLLLFLLLLLLLLLLLLLLLLLLLLLLLLLLMMLLLLLLLLLLLFDFLLMMLLMMMFLMMMMMLLMLMMDMLLMMMLLMLLMMLMFLLLLNNENLLLLLLLLLLLLNNNNNNELLLLLLLLLLLLLLLLLLLDFMMLLLLMLLLLMMLLLLNNNNGDDENLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNNENLLLLLLLLLLLLLLLLLLLDMFLLMMMLLMLMMMLLLMDGLLLLLLLLLLLNNNNNDENDNNDENFLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFMLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLFMMFFDDLLLLLLLLLLLLLLLLLLLLLLLLFLLLLLLLNDNDDDENFLLLLLLLLLLMMLLLLLLLLLLMLMLLLLLLLLLLLLMMLLLLLLMMMLMLMMMLLLLLMMMLLLLLMLLLLLMMMLLLLLDGFLLMMLLMMLLMLMMMMMMLLLFLMMMNNNNNNELLLLLLLLLLLLLLLLMMMIIIIIIKKKKKKFFDNNNENDNNNNNNDNNEDNNDNNDNEDNNNNNDNNNENNRRNNDNNNNNNDNDNNRDDNDNNNNNNDNNDEENDNNDNNNNNNNDNEENDNNNNNNNNNNDNNNNNLLLLLMMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLMMMLMLLLLLLLLLLMMMMMMMMMMLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMLLLLMMMMMMMMLLLLLLMMMLMMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMLLLLLLLLMLMLLLLLLLLLMLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMLLLMLMMMMMMLLLLLLLLLLMLLMMMMLMLMLLMMMMLMMMMMMMMMMMMLLLLLLLLLLLLLLLLLLLMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMLMLMMMMMMMMMMMMMMMMLLMFF","n":["Config","DisplayNotBound","Doc","Env","Library","Normal","Sys","WorkMode","analysis","analysis","analysis_run","auto_path","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","check_disable_format","class_hierarchy","class_hierarchy_run","clone","clone_into","codegen_generate","concurrency","config","default","deprecate_by_min_version","disable_format","doc_target_path","eq","equivalent","equivalent","equivalent","external_docs_url","external_libraries","extra_versions","feature_dependencies","filter_version","find_ext_library","fmt","fmt","fmt","fmt","from","from","from","from_str","generate_safety_asserts","girs_dirs","girs_version","into","into","into","is_generate_rust_files","is_normal","is_too_low_version","is_totally_deprecated","lib_version_overrides","library","library","library_full_name","library_name","library_version","main_sys_crate_name","make_backup","min_cfg_version","min_required_version","namespaces","namespaces_run","new","objects","resolve_type_ids","show_statistics","single_version_file","split_build_rs","symbols","symbols_run","sys_crate_import","target_path","to_owned","trust_return_value_nullability","try_from","try_from","try_from","try_into","try_into","try_into","type_","type_id","type_id","type_id","type_status","type_status_sys","update_version","use_gi_docgen","work_mode","Analysis","Parameter","borrow","borrow_mut","bounds","c_type","child_properties","class_builder","class_hierarchy","constants","constants","conversion_type","default","enum_imports","enumerations","enums","ffi_type","find_enum_by_function","find_flag_by_function","find_global_function","find_object_by_function","find_object_by_virtual_method","find_record_by_function","flags","flags","flags_imports","fmt","from","function_parameters","functions","general","global_functions","imports","info_base","into","is_gpointer","namespaces","object","objects","out_parameters","properties","record","record_type","records","ref_mode","return_value","run","rust_type","safety_assertion_mode","signals","signatures","special_functions","supertypes","symbols","trampoline_parameters","trampolines","try_from","try_from_glib","try_into","type_id","types","AsRef","Bound","BoundType","Bounds","CallbackInfo","IsA","NoWrapper","PropertyBound","add_for_parameter","add_parameter","alias","alias","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","bound_name","bound_type","callback_modified","callback_type","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","default","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","error_parameters","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","get","get_parameter_bound","get_to_glib_extra","has_alias","into","into","into","into","into","is_empty","iter","iter_lifetimes","need_isa","parameter_name","success_parameters","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_for","type_id","type_id","type_id","type_id","type_id","type_str","type_str","update_imports","implements_c_type","is_mut_ptr","rustify_pointers","ChildProperties","ChildProperty","analyze","borrow","borrow_mut","bounds","child_name","child_type","clone","clone_into","doc_hidden","fmt","from","get_out_ref_mode","getter_name","into","name","nullable","prop_name","set_in_ref_mode","set_params","to_glib_extra","to_owned","try_from","try_into","typ","type_id","analyze","Info","borrow","borrow_mut","fmt","from","into","run","subtypes","supertypes","try_from","try_into","type_id","Info","analyze","borrow","borrow_mut","cfg_condition","deprecated_version","fmt","from","glib_name","into","name","try_from","try_into","typ","type_id","version","Borrow","ConversionType","Direct","Option","Pointer","Result","Scalar","Unknown","borrow","borrow_mut","can_use_to_generate","clone","clone_into","default","eq","equivalent","equivalent","equivalent","fmt","from","into","of","to_owned","try_from","try_into","type_id","err_type","ok_type","Info","borrow","borrow_mut","default","fmt","from","full_name","functions","into","name","new","specials","try_from","try_into","type_","type_id","type_id","visibility","ffi_type","used_ffi_type","Info","borrow","borrow_mut","default","fmt","from","full_name","functions","into","name","new","specials","try_from","try_into","type_","type_id","type_id","visibility","CParameter","IntoRaw","Length","Parameter","Parameters","RustParameter","ToGlibBorrow","ToGlibDirect","ToGlibPointer","ToGlibScalar","ToGlibUnknown","ToSome","Transformation","TransformationType","analyze","analyze_return","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","c_parameters","c_type","caller_allocates","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","default","destroy_index","direction","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from_parameter","from_return_value","ind_c","ind_c","ind_rust","instance_parameter","into","into","into","into","into","into","is_error","is_to_glib","lib_par","move_","name","name","nullable","ref_mode","rust_parameters","scope","set_to_glib_extra","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","transfer","transformation_type","transformations","try_from","try_from","try_from","try_from","try_from","try_from","try_from_glib","try_from_glib","try_into","try_into","try_into","try_into","try_into","try_into","typ","typ","type_id","type_id","type_id","type_id","type_id","type_id","user_data_index","array_length_name","array_length_type","array_name","explicit_target_type","in_trait","instance_parameter","move_","name","name","name","name","needs_into","nullable","nullable","pointer_cast","ref_mode","to_glib_extra","transfer","AsyncFuture","AsyncTrampoline","Info","analyze","assertion","assertion","async","async_future","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","bound_name","bounds","callback_type","callbacks","cfg_condition","clone","clone","clone_into","clone_into","codegen_name","commented","deprecated_version","destroys","doc_hidden","doc_ignore_parameters","doc_link","doc_struct_name","doc_trait_name","error_parameters","ffi_ret","find_function","find_index_to_ignore","finish_func_name","finish_function_name","fmt","fmt","fmt","from","from","from","func_name","generate_doc","glib_name","has_error_parameter","hidden","into","into","into","is_async_finish","is_carray_with_direct_elements","is_method","is_method","is_special","kind","name","name","name","new_name","not_version","ns_id","output_params","outs","parameters","remove_params","ret","should_be_doc_linked","should_docs_be_generated","status","success_parameters","to_owned","to_owned","trampoline","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","type_name","unsafe_","version","visibility","StatusedTypeId","borrow","borrow_mut","clone","clone_into","fmt","from","into","name","status","to_owned","try_from","try_into","type_id","type_id","ImportConditions","Imports","ImportsWithDefault","add","add_defined","add_used_type","add_used_type_with_version","add_used_types","add_with_constraint","add_with_version","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","cmp","compare","constraints","default","default","deref","deref_mut","drop","eq","equivalent","equivalent","equivalent","fmt","fmt","from","from","from","into","into","into","iter","new","partial_cmp","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","version","with_defaults","with_defined","InfoBase","borrow","borrow_mut","cfg_condition","concurrency","constructors","default","deprecated_version","fmt","from","full_name","functions","functions","imports","into","methods","name","specials","try_from","try_into","type_id","type_id","version","visibility","INTERNAL","Info","MAIN","Namespace","NsId","borrow","borrow","borrow_mut","borrow_mut","crate_name","fmt","fmt","from","from","glib_ns_id","higher_crate_name","index","into","into","is_glib_crate","main","name","package_names","run","shared_libs","symbol_prefixes","sys_crate_name","try_from","try_from","try_into","try_into","type_id","type_id","versions","Builder","ClassExt","ClassExtManual","Ext","ExtManual","Impl","Info","LocationInObject","VirtualExt","base","borrow","borrow","borrow_mut","borrow_mut","builder_postprocess","builder_properties","c_class_type","c_type","child_properties","class","clone","clone_into","default","deref","eq","equivalent","equivalent","equivalent","final_type","fmt","fmt","from","from","function_location","generate_doc_link_info","generate_trait","get_type","has_action_signals","has_builder_properties","has_constructors","has_functions","has_signals","interface","into","into","is_fundamental","is_interface","need_generate_inherent","need_generate_trait","notify_signals","properties","ref_fn","should_generate_impl_block","signals","signatures","supertypes","to_owned","trait_name","try_from","try_from","try_into","try_into","type_id","type_id","unref_fn","virtual_methods","CheckError","Combined","Info","Mode","None","Normal","Optional","ReturnResult","ThrowFunctionReturnStrategy","Throws","Void","analyze","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","can_as_return","clone","clone","clone_into","clone_into","default","default","default","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","fmt","fmt","fmt","from","from","from","into","into","into","is_empty","iter","mode","params","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","use_function_return_for_result","Property","analyze","borrow","borrow_mut","bounds","deprecated_version","fmt","from","func_name","func_name_alias","get_out_ref_mode","get_property_ref_modes","into","is_get","name","nullable","set_bound","set_in_ref_mode","try_from","try_into","typ","type_id","var_name","version","Info","base","borrow","borrow_mut","boxed_inline","clear_function_expression","copy_into_function_expression","default","deref","derives","fmt","from","glib_get_type","init_function_expression","into","is_boxed","new","try_from","try_into","type_","type_id","AutoBoxed","Boxed","RecordType","Refcounted","borrow","borrow_mut","eq","equivalent","equivalent","equivalent","from","into","of","try_from","try_into","type_id","ByRef","ByRefConst","ByRefFake","ByRefImmut","ByRefMut","None","RefMode","borrow","borrow_mut","clone","clone_into","eq","equivalent","equivalent","equivalent","fmt","from","from_str","into","is_ref","of","to_owned","try_from","try_into","type_id","without_unneeded_mut","Info","analyze","base_tid","bool_return_is_error","borrow","borrow_mut","clone","clone_into","commented","default","fmt","from","into","nullable_return_is_error","parameter","to_owned","try_from","try_into","type_id","Err","Ignored","Mismatch","Ok","Result","RustType","RustTypeBuilder","TypeError","Unimplemented","alter_type","as_str","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","builder","callback_parameters_config","clone","clone","clone_into","clone_into","concurrency","default","direction","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","fmt","fmt","from","from","from","from","from","into","into","into","into_used_types","nullable","ref_mode","scope","to_owned","to_owned","try_build","try_build_param","try_from","try_from","try_from","try_from_glib","try_into","try_into","try_into","try_new","type_id","type_id","type_id","used_types","InMainThread","None","NotInitialized","SafetyAssertionMode","Skip","borrow","borrow_mut","clone","clone_into","default","eq","equivalent","equivalent","equivalent","fmt","from","from_str","into","is_none","of","to_owned","try_from","try_into","type_id","Info","action_emit_name","analyze","borrow","borrow_mut","connect_name","deprecated_version","doc_hidden","fmt","from","generate_doc","into","is_detailed","signal_name","trampoline","try_from","try_into","type_id","version","Signature","Signatures","borrow","borrow_mut","fmt","from","has_for_property","has_in_deps","into","new","try_from","try_into","type_id","Compare","Copy","Display","Equal","Free","FunctionInfo","FunctionType","Hash","Infos","Ref","StaticStringify","TraitInfo","Type","Unref","analyze_imports","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","cmp","cmp","compare","compare","default","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","extract","first_parameter_mut","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from_str","functions","glib_name","has_trait","into","into","into","into","into","partial_cmp","partial_cmp","to_owned","to_owned","to_owned","to_owned","traits","traits_mut","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_","type_id","type_id","type_id","type_id","type_id","unhide","version","version","analyze","dependencies","Info","Symbol","borrow","borrow","borrow_mut","borrow_mut","by_c_name","by_c_name_mut","by_tid","clone","clone_into","crate_name","default","fmt","fmt","from","from","full_rust_name","into","into","is_rust_prelude","make_trait","make_trait_method","name","owner_name","parent","run","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","Borrow","CParameter","None","Parameters","RustParameter","Transformation","TransformationType","TreePath","analyze","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","c_parameters","c_type","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","conversion_type","default","direction","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from_str","get","ind_c","ind_rust","into","into","into","into","into","is_real_gpointer","name","name","name","new","nullable","prepare_transformation","ref_mode","ref_mode","rust_parameters","to_owned","to_owned","to_owned","to_owned","to_owned","transfer","transformation","transformations","try_from","try_from","try_from","try_from","try_from","try_from_glib","try_into","try_into","try_into","try_into","try_into","typ","typ","typ","type_id","type_id","type_id","type_id","type_id","Trampoline","Trampolines","analyze","borrow","borrow_mut","bound_name","bounds","clone","clone_into","concurrency","destroy_index","fmt","from","inhibit","into","is_notify","name","nullable","parameters","ret","scope","to_owned","try_from","try_into","type_error","type_id","type_name","user_data_index","version","Default","NotImplemented","Option","OptionMandatory","Result","ResultInfallible","TryFromGlib","borrow","borrow_mut","clone","clone_into","default","fmt","from","from_parameter","from_return_value","from_type_defaults","into","or_type_defaults","to_owned","try_from","try_into","type_id","err_type","ok_type","ok_type","DerivesCopy","ImplementsDebug","IsExternal","IsIncomplete","IsPtr","IsVolatile","derives_copy","implements_debug","is_external","is_incomplete","is_ptr","is_volatile","check_fmt","format","Alias","Alias","Array","Async","Basic","Basic","Bitfield","Bitfield","Bool","Boolean","CArray","Call","Char","Class","Class","ClassMethod","Concurrency","Constant","Constructor","Container","Custom","Custom","Double","Enumeration","Enumeration","ErrorDomain","Field","Filename","FixedArray","Float","Forever","Full","Function","Function","Function","Function","FunctionKind","Global","HashTable","INTERNAL_NAMESPACE","INTERNAL_NAMESPACE_NAME","In","InOut","Infallible","Int","Int16","Int32","Int64","Int8","IntPtr","Interface","Interface","Library","List","Long","MAIN_NAMESPACE","Mandatory","Member","Method","Namespace","None","None","None","None","None","Notified","Nullable","OsString","Out","Parameter","ParameterDirection","ParameterScope","Pointer","Property","PtrArray","Quark","Record","Record","Return","SList","SSize","Send","SendSync","Short","Signal","Size","Transfer","Type","Type","TypeId","UChar","UInt","UInt16","UInt32","UInt64","UInt8","UIntPtr","ULong","UShort","UniChar","Union","Union","Unsupported","Utf8","VarArgs","VirtualMethod","add_constant","add_function","add_glib_priority","add_namespace","add_type","array_length","array_length","bits","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","c_array","c_class_type","c_class_type","c_identifier","c_identifier","c_identifier","c_identifier","c_includes","c_type","c_type","c_type","c_type","c_type","c_type","c_type","c_type","c_type","c_type","caller_allocates","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","closure","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","compare","compare","compare","compare","compare","compare","compare","compare","compare","compare","constants","construct","construct_only","container","conversion_type","default","default","default","default","default","default","default","default","default","default","deprecated_version","deprecated_version","deprecated_version","deprecated_version","deprecated_version","deprecated_version","deprecated_version","deprecated_version","deprecated_version","deprecated_version","deref","deref","deref","deref_mut","derives_copy","derives_copy","derives_copy","derives_copy","derives_copy","derives_copy","derives_copy","derives_copy","derives_copy","destroy","direction","disguised","doc","doc","doc","doc","doc","doc","doc","doc","doc","doc","doc","doc","doc","doc","doc","doc_deprecated","doc_deprecated","doc_deprecated","doc_deprecated","doc_deprecated","doc_deprecated","doc_deprecated","doc_deprecated","doc_deprecated","doc_deprecated","doc_deprecated","doc_deprecated","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","error_domain","fields","fields","fields","final_type","find_c_array","find_namespace","find_or_stub_type","find_type","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_str","from_str","from_str","from_str","from_str","full_name","function","functions","functions","functions","functions","functions","functions","functions","functions","get_deprecated_version","get_glib_name","get_inner_type","get_name","glib_get_type","glib_get_type","glib_get_type","glib_get_type","glib_get_type","glib_get_type","glib_name_index","gtype_struct_for","has_copy","has_destroy","has_free","has_ref","has_unref","hash","id","identifier_prefixes","implements","implements_debug","index","index","instance_parameter","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","is_abstract","is_abstract","is_action","is_async","is_basic","is_basic_type","is_basic_type","is_bitfield","is_call","is_class","is_crate","is_detailed","is_enumeration","is_error","is_external","is_external","is_external","is_external","is_external","is_final_type","is_forever","is_function","is_fundamental","is_fundamental","is_glib_crate","is_in","is_incomplete","is_incomplete","is_incomplete","is_incomplete","is_incomplete","is_incomplete","is_incomplete","is_incomplete","is_incomplete","is_interface","is_none","is_out","is_ptr","is_ptr","is_volatile","kind","members","members","name","name","name","name","name","name","name","name","name","name","name","name","name","name","name","name","namespace","namespace_mut","namespace_types","namespaces","new","ns_id","nullable","package_names","parameters","parameters","parent","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","pointer","postprocessing","preprocessing","prerequisites","private","properties","properties","read_file","readable","record","ref_fn","register_version","requires_conversion","ret","ret","scope","shared_library","show_non_bound_types","signals","signals","status","symbol_prefix","symbol_prefix","symbol_prefix","symbol_prefix","symbol_prefix","symbol_prefix","symbol_prefixes","target_c_type","throws","tid_bool","tid_c_bool","tid_filename","tid_none","tid_os_string","tid_uint32","tid_utf8","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","transfer","transfer","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","typ","typ","typ","typ","typ","type_","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_mut","type_struct","type_struct","types","types","union","unref_fn","value","value","version","version","version","version","version","version","version","version","version","version","versions","virtual_methods","virtual_methods","visit_functions_mut","visit_functions_mut","writable","apply_config","check_function_real_version"],"q":[[0,"libgir"],[97,"libgir::analysis"],[158,"libgir::analysis::bounds"],[253,"libgir::analysis::c_type"],[256,"libgir::analysis::child_properties"],[283,"libgir::analysis::class_builder"],[284,"libgir::analysis::class_hierarchy"],[296,"libgir::analysis::constants"],[312,"libgir::analysis::conversion_type"],[338,"libgir::analysis::conversion_type::ConversionType"],[340,"libgir::analysis::enums"],[358,"libgir::analysis::ffi_type"],[360,"libgir::analysis::flags"],[378,"libgir::analysis::function_parameters"],[491,"libgir::analysis::function_parameters::TransformationType"],[509,"libgir::analysis::functions"],[598,"libgir::analysis::general"],[613,"libgir::analysis::imports"],[670,"libgir::analysis::info_base"],[694,"libgir::analysis::namespaces"],[728,"libgir::analysis::object"],[794,"libgir::analysis::out_parameters"],[853,"libgir::analysis::properties"],[877,"libgir::analysis::record"],[898,"libgir::analysis::record_type"],[914,"libgir::analysis::ref_mode"],[940,"libgir::analysis::return_value"],[959,"libgir::analysis::rust_type"],[1023,"libgir::analysis::safety_assertion_mode"],[1047,"libgir::analysis::signals"],[1066,"libgir::analysis::signatures"],[1079,"libgir::analysis::special_functions"],[1173,"libgir::analysis::supertypes"],[1175,"libgir::analysis::symbols"],[1209,"libgir::analysis::trampoline_parameters"],[1299,"libgir::analysis::trampolines"],[1328,"libgir::analysis::try_from_glib"],[1351,"libgir::analysis::try_from_glib::TryFromGlib"],[1354,"libgir::analysis::types"],[1366,"libgir::fmt"],[1368,"libgir::library"],[2137,"libgir::update_version"],[2139,"core::option"],[2140,"core::fmt"],[2141,"core::fmt"],[2142,"alloc::string"],[2143,"core::convert"],[2144,"core::any"],[2145,"core::ops::function"],[2146,"core::marker"],[2147,"core::slice::iter"],[2148,"alloc::vec"],[2149,"core::iter::traits::iterator"],[2150,"alloc::boxed"],[2151,"core::borrow"],[2152,"core::iter::traits::collect"],[2153,"core::cmp"],[2154,"alloc::vec::into_iter"],[2155,"alloc::borrow"],[2156,"core::ops::function"],[2157,"std::path"],[2158,"core::hash"],[2159,"core::convert"]],"d":["","","","","","","","","","","","Path where files generated in normal and sys mode","","","","","","","","","","","","","","","","","","","","","","","An url that will be inserted into the docs as link that …","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","Helper to get the ffi crate import","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","","","","","","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Bound does not have an alias when param: impl type_str is …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","","Calls U::from(self).","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Calls U::from(self).","","","","","","","","","","","","","","Returns the argument unchanged.","","Calls U::from(self).","","","","","","","","","Coded without conversion.","Type implementing TryFromGlib<Error=GlibNoneError>.","Coded with from_glib_xxx.","Type implementing TryFromGlib where Err is neither …","Coded with from_glib.","","","","","","","","","","","","","Returns the argument unchanged.","Calls U::from(self).","","","","","","","","","","","","","Returns the argument unchanged.","","","Calls U::from(self).","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Index of the destroy notification parameter associated …","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Index of the user data parameter associated with the …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Whether the function can’t be generated","","","","","","","","","","","","","Given async function name tries to guess the name of …","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","Whether the function is hidden (an implementation detail) …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","In order to generate docs links we need to know in which …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Calls U::from(self).","","","","","","","","","Provides assistance in generating use declarations.","","Declares that name should be available through its last …","Declares that name is defined in scope","Declares that name should be available through its full …","Declares that name should be available through its full …","","Declares that name should be available through its last …","Declares that name should be available through its last …","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","TODO: return iterator","","","","Returns the argument unchanged.","","","","","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","The location of an item within the object","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the location of the function within this object","Generate doc name based on function location within this …","","","","","","","","","Calls U::from(self).","Calls U::from(self).","","","","","","","Specific to fundamental types","Whether we should generate an impl block for this object …","","","","","","","","","","","","Specific to fundamental types","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","","","","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","","Calls U::from(self).","","","","","","","Boxed record that use g_boxed_copy, g_boxed_free. Must …","Boxed record with custom copy/free functions","","Referencecounted record","","","","","","","Returns the argument unchanged.","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","Calls U::from(self).","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Calls U::from(self).","","","","","","","Contains the error value","","","Contains the success value","","A RustType definition and its associated types to be used.","","","","","","","","","","","","Create a RustTypeBuilder which allows specifying additional","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","Try building the RustType with no specific additional …","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","Calls U::from(self).","","","","","","","","","","","","","","","","Returns the argument unchanged.","","Calls U::from(self).","","","","","","","","","","","","","Returns the argument unchanged.","","","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","Calls U::from(self).","Calls U::from(self).","","Convert this symbol into a trait","Convert this into a method of a trait","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","Calls U::from(self).","","","","","","","","","","","","This field is used to give the type name when generating …","It’s used to group callbacks","","","","","","","","","","","","","","","Returns the argument unchanged.","","","","Calls U::from(self).","","","","","","","","","Checks if given type derives Copy trait.","Checks if given type implements Debug trait.","Checks if type is external aka opaque type.","Checks if given type is incomplete, i.e., its size is …","Checks if given type is some kind of pointer.","Checks if given type has volatile qualifier.","","","","","","","Check if cargo fmt available","Run cargo fmt on path","","","","Used for the duration of the asynchronous call.","","","","","","","","Used only for the duration of the call.","","","","","","","","","","","","","","","","","","","Forever scope","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Parameter is not of callback type.","","","Used until notified with associated destroy notify …","","","","","","Annotation describing lifetime requirements / guarantees …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","C headers, relative to include directories provided by …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Index of the user data parameter associated with the …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Index of the destroy notification parameter associated …","","A ‘disguised’ record is one where the c:type is a …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","If the type is an Alias containing a basic, it’ll return …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Types from a single namespace in alphabetical order.","","","","","","","","","","","","","","","","","","","A ‘pointer’ record is one where the c:type is a …","","","","","","","","","","Specific to fundamental types","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"i":[0,3,3,0,0,3,3,0,0,4,0,1,1,3,4,1,3,4,1,4,0,3,3,0,1,4,3,1,1,1,3,3,3,3,1,1,1,1,1,1,0,1,3,4,1,3,4,3,1,1,1,1,3,4,3,3,4,4,1,0,4,1,1,1,4,1,1,1,4,0,1,1,1,1,1,1,4,0,4,1,3,1,1,3,4,1,3,4,4,1,3,4,4,4,0,1,1,0,0,20,20,0,0,0,0,0,0,20,0,20,20,20,0,0,20,20,20,20,20,20,0,20,20,20,20,0,0,0,20,0,0,20,0,0,0,20,0,0,0,0,20,0,0,0,0,0,0,0,0,0,0,0,0,20,0,20,20,0,33,0,0,0,0,33,33,0,28,28,34,35,33,34,28,32,35,33,34,28,32,35,32,34,34,32,33,34,28,32,35,33,34,28,32,35,28,33,34,33,33,33,34,34,34,32,33,34,28,32,35,33,34,28,32,35,35,28,28,33,33,34,28,32,35,28,28,28,33,34,32,33,34,28,32,35,33,34,28,32,35,33,34,28,32,35,28,33,34,28,32,35,34,35,28,0,0,0,0,0,0,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,0,0,44,44,44,44,44,0,44,44,44,44,44,0,0,47,47,47,47,47,47,47,47,47,47,47,47,47,47,50,0,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,127,127,0,21,21,21,21,21,21,21,21,21,0,21,21,21,21,21,21,21,0,0,0,25,25,25,25,25,25,25,25,25,0,25,25,25,25,25,25,25,0,58,58,0,0,0,58,58,58,58,58,58,0,0,0,55,56,57,30,58,59,55,56,57,30,58,59,55,55,30,30,56,57,30,58,59,55,56,57,30,58,59,55,55,30,30,56,57,30,58,59,55,56,57,30,58,59,55,56,56,57,59,59,30,56,57,30,58,59,55,30,58,56,30,57,30,30,30,55,30,58,56,57,30,58,59,55,30,59,55,56,57,30,58,59,55,56,30,56,57,30,58,59,55,57,30,56,57,30,58,59,55,30,128,128,128,129,129,129,129,130,131,129,132,131,131,129,129,129,129,129,0,0,0,0,62,22,22,22,61,62,22,61,62,22,61,22,61,22,22,61,62,61,62,22,22,22,22,22,22,22,22,22,62,61,0,0,61,0,61,62,22,61,62,22,22,22,22,61,22,61,62,22,22,0,61,62,22,22,61,62,22,22,22,22,61,22,22,22,22,22,22,22,62,61,62,22,61,62,22,61,62,22,61,62,22,22,22,22,22,0,65,65,65,65,65,65,65,65,65,65,65,65,65,65,0,0,0,38,38,38,38,38,38,38,68,38,66,68,38,66,38,66,38,66,66,66,66,38,66,68,68,68,66,66,66,66,38,66,68,38,66,68,38,66,38,38,66,38,66,68,38,66,68,38,66,68,38,66,66,38,38,0,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,0,0,0,0,0,7,71,7,71,7,7,71,7,71,71,7,71,7,71,71,71,7,7,0,7,7,7,7,71,7,71,7,71,7,72,72,72,72,72,72,0,0,72,26,72,26,72,26,26,26,26,26,26,0,72,72,26,26,72,72,72,72,26,72,26,72,26,26,26,26,26,26,0,26,26,26,0,72,26,26,26,26,26,26,26,26,26,26,26,26,72,26,72,26,72,26,72,26,26,26,76,77,0,0,77,77,77,76,0,77,76,0,76,77,75,76,77,75,0,76,77,76,77,76,77,75,76,77,76,76,76,77,77,77,76,77,75,76,77,75,76,77,75,75,75,75,75,76,77,76,77,75,76,77,75,76,77,75,0,0,0,42,42,42,42,42,42,42,42,42,0,42,42,42,42,42,42,42,42,42,42,42,42,0,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,0,27,27,27,27,82,82,0,82,82,82,82,82,82,82,82,82,82,82,82,82,79,79,79,79,79,79,0,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,0,0,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,52,87,87,52,0,0,0,0,87,84,84,86,87,84,86,87,84,84,86,87,84,87,84,86,84,86,87,84,87,87,87,84,84,84,87,84,86,87,84,84,84,86,87,84,84,86,86,86,87,84,86,86,86,87,84,86,86,87,84,84,86,87,84,84,92,92,92,0,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,0,78,0,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,0,0,94,94,94,94,94,94,94,94,94,94,94,96,96,96,96,96,0,0,96,0,96,98,0,0,96,0,96,97,98,99,95,96,97,98,99,95,96,97,98,99,96,97,98,99,96,98,96,98,95,96,98,96,96,96,98,98,98,0,97,96,97,98,99,95,96,97,98,99,95,96,95,97,95,96,97,98,99,95,96,98,96,97,98,99,95,95,96,97,98,99,95,96,97,98,99,95,99,96,97,98,99,95,0,97,99,0,0,0,0,102,101,102,101,101,101,101,102,102,102,102,102,101,102,101,102,102,101,102,102,102,102,102,102,0,102,102,101,102,101,102,101,107,0,107,0,0,0,0,107,0,104,105,106,103,107,104,105,106,103,107,103,105,104,105,106,103,107,104,105,106,103,107,106,103,104,104,105,106,103,107,104,105,106,103,107,107,103,106,106,104,105,106,103,107,105,104,105,106,103,104,103,104,106,103,104,105,106,103,107,106,106,103,104,105,106,103,107,104,104,105,106,103,107,104,105,106,104,105,106,103,107,0,0,0,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,0,109,109,109,109,91,91,91,91,91,91,0,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,133,133,134,0,0,0,0,0,0,135,136,137,138,139,140,0,0,0,18,18,90,0,18,0,18,115,115,18,90,115,0,18,114,0,0,114,108,0,18,115,0,18,0,0,115,18,115,90,108,0,114,124,18,0,114,18,0,0,83,83,0,115,115,115,115,115,115,0,18,0,18,115,0,0,0,114,0,108,83,90,31,115,90,0,115,83,0,0,0,115,0,18,124,0,18,83,18,115,31,31,115,0,115,0,0,115,0,115,115,115,115,115,115,115,115,115,115,0,18,115,115,115,114,16,16,16,16,16,121,54,121,108,83,90,80,112,113,114,31,115,17,116,48,123,124,51,53,81,121,117,41,54,29,93,118,119,120,18,122,16,108,83,90,80,112,113,114,31,115,17,116,48,123,124,51,53,81,121,117,41,54,29,93,118,119,120,18,122,16,18,118,119,116,48,123,29,122,48,51,53,81,121,117,41,54,118,119,54,108,83,90,80,112,113,114,31,115,17,54,108,83,90,80,112,113,114,31,115,17,54,54,17,116,51,53,81,117,29,118,119,120,17,116,51,53,81,117,29,118,119,120,122,41,41,18,120,83,90,31,17,81,121,117,118,119,122,48,123,51,53,81,41,29,93,118,119,80,112,113,80,115,17,116,81,121,117,29,119,18,54,54,81,116,48,123,51,53,81,121,117,41,54,29,93,118,119,122,116,48,123,51,53,81,41,29,93,118,119,122,108,83,90,80,112,113,114,31,115,17,116,51,53,81,117,29,118,119,120,18,108,108,108,83,83,83,90,90,90,80,80,80,112,112,112,113,113,113,114,114,114,31,31,31,115,115,115,17,17,17,116,116,116,51,51,51,53,53,53,81,81,81,117,117,117,29,29,29,118,118,118,119,119,119,120,120,120,18,18,18,51,81,117,119,119,18,16,16,16,108,83,90,80,112,113,114,31,115,17,116,48,123,124,51,53,81,121,117,41,54,29,93,118,119,120,18,18,122,16,108,83,90,80,112,113,114,31,115,17,116,48,123,124,51,53,81,121,117,41,54,29,93,118,119,120,18,122,16,108,83,90,114,31,17,18,18,51,53,81,117,118,119,122,18,18,18,18,51,53,81,117,118,119,122,81,81,81,81,81,81,17,17,122,119,121,122,16,54,108,83,90,80,112,113,114,31,115,17,116,48,123,124,51,53,81,121,117,41,54,29,93,118,119,120,18,122,16,18,119,93,90,18,17,18,18,90,18,16,93,18,54,116,81,117,119,18,18,90,18,18,119,16,83,115,17,116,81,121,117,29,119,18,18,90,83,116,121,121,29,51,53,116,48,123,51,53,81,121,117,41,54,29,93,118,119,120,122,16,16,16,16,16,17,54,122,29,93,119,17,116,51,53,81,117,29,118,119,120,81,16,16,118,121,118,119,16,41,18,119,16,115,29,93,54,122,16,118,119,123,51,53,81,117,118,119,122,116,29,17,17,17,17,17,17,17,108,83,90,80,112,113,114,31,115,17,54,18,41,54,108,83,90,80,112,113,114,31,115,17,116,48,123,124,51,53,81,121,117,41,54,29,93,118,119,120,18,122,16,108,83,90,80,112,113,114,31,115,17,116,48,123,124,51,53,81,121,117,41,54,29,93,118,119,120,18,122,16,116,48,121,41,54,16,108,83,90,80,112,113,114,31,115,17,116,48,123,124,51,53,81,121,117,41,54,29,93,118,119,120,18,122,16,16,118,119,16,122,18,119,48,123,48,123,51,53,81,41,29,93,118,119,122,118,119,18,122,41,0,0],"f":[0,0,0,0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[1,2],0,0,[3,3],[[-1,-2],2,[],[]],[4,2],0,0,[[],3],0,0,0,[[3,3],5],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],0,0,0,0,[[1,[6,[0]]],[[6,[0]]]],[[1,7],[[6,[0]]]],0,[[1,8],9],[[3,8],9],[[4,8],9],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[10,[[11,[3]]]],0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[3,5],[3,5],[[4,[6,[12]],[6,[0]]],5],[[4,[6,[12]],[6,[0]]],5],0,0,0,[1,13],0,0,[4,10],0,0,[[1,4,[6,[12]]],[[6,[0]]]],0,0,[[-1,-2,[14,[13]],-1,-1,-1,-1,5,5,5],[[11,[1,13]]],[[15,[[6,[10]]]]],[[15,[[6,[3]]]]]],0,[[1,16],2],0,0,0,0,0,[[4,17],13],0,[-1,-2,[],[]],0,[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[[4,17],18],[-1,19,[]],[-1,19,[]],[-1,19,[]],0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,0,[[],20],0,0,0,0,[[20,4,-1,-2],[[6,[[2,[21,22]]]]],[23,24],[23,24]],[[20,4,-1,-2],[[6,[[2,[25,22]]]]],[23,24],[23,24]],[[20,4,-1],[[6,[22]]],[23,24]],[[20,4,-1,-2],[[6,[[2,[26,22]]]]],[23,24],[23,24]],[[20,4,-1,-2],[[6,[[2,[26,22]]]]],[23,24],[23,24]],[[20,4,-1,-2],[[6,[[2,[27,22]]]]],[23,24],[23,24]],0,0,0,[[20,8],9],[-1,-1,[]],0,0,0,0,0,0,[-1,-2,[],[]],[10,5],0,0,0,0,0,0,0,0,0,0,[4,2],0,0,0,0,0,0,0,0,0,[-1,[[11,[-2]]],[],[]],0,[-1,[[11,[-2]]],[],[]],[-1,19,[]],0,0,0,0,0,0,0,0,0,[[28,4,29,30,5,31,[14,[0]]],[[2,[[6,[13]],[6,[32]]]]]],[[28,10,10,33,5],2],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,[33,33],[34,34],[28,28],[32,32],[35,35],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[],28],[[33,33],5],[[34,34],5],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],0,[[33,8],9],[[34,8],9],[[28,8],9],[[32,8],9],[[35,8],9],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[4,17],[[6,[35]]]],[[28,10],[[6,[34]]]],[[33,5,5,5],13],[33,5],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[28,5],[28,[[36,[34]]]],[28,[[36,[37]]]],[33,5],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[[4,17],[[6,[33]]]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],0,0,[[28,38],2],[[4,17,10],5],[10,5],[10,[[2,[13,13]]]],0,0,[[4,[6,[0]],17,38],39],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,[40,40],[[-1,-2],2,[],[]],0,[[40,8],9],[-1,-1,[]],0,0,[-1,-2,[],[]],0,0,0,0,0,0,[-1,-2,[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],0,[-1,19,[]],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[[44,8],9],[-1,-1,[]],[-1,-2,[],[]],[16,44],[[44,17],[[46,[45]]]],[[44,17],[[14,[17]]]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,19,[]],0,0,[-1,-2,[],[]],[-1,-2,[],[]],0,0,[[47,8],9],[-1,-1,[]],0,[-1,-2,[],[]],0,[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],0,[-1,19,[]],0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[50,5],[50,50],[[-1,-2],2,[],[]],[[],50],[[50,50],5],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[50,8],9],[-1,-1,[]],[-1,-2,[],[]],[[4,17],50],[-1,-2,[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,19,[]],0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[[],21],[[21,8],9],[-1,-1,[]],0,0,[-1,-2,[],[]],0,0,0,[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[[21,16],51],[-1,19,[]],0,0,[[4,17,10],52],[[4,17,10],[[6,[13]]]],0,[-1,-2,[],[]],[-1,-2,[],[]],[[],25],[[25,8],9],[-1,-1,[]],0,0,[-1,-2,[],[]],0,0,0,[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[[25,16],53],[-1,19,[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[4,[14,[54]],[14,[0]],5,5,5],55],[[55,4,[6,[56]]],2],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,[56,56],[57,57],[30,30],[58,58],[59,59],[55,55],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[],55],0,0,[[56,8],9],[[57,8],9],[[30,8],9],[[58,8],9],[[59,8],9],[[55,8],9],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[4,54,[14,[0]]],56],[[4,54,[14,[0]]],56],0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[58,5],0,0,0,0,0,0,0,0,[[58,10],2],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],0,0,[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],0,0,[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,[61,61],[62,62],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[22,10],0,0,0,0,0,[[22,[6,[10]],[6,[10]],5],13],0,0,0,0,[[4,10],[[6,[29]]]],[[-1,[6,[54]]],[[6,[63]]],64],0,[10,13],[[61,8],9],[[62,8],9],[[22,8],9],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[22,4],5],[[4,17],5],0,0,[22,5],0,0,0,0,0,0,0,0,0,0,0,0,[[22,4],5],[[22,4],5],0,0,[-1,-2,[],[]],[-1,-2,[],[]],0,[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[65,65],[[-1,-2],2,[],[]],[[65,8],9],[-1,-1,[]],[-1,-2,[],[]],0,0,[-1,-2,[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,19,[]],0,0,0,0,[[38,10],2],[[38,10],2],[[38,10],2],[[38,10,[6,[0]]],2],[[38,[14,[13]]],2],[[38,10,[6,[0]],[6,[10]]],2],[[38,10,[6,[0]]],2],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[38,38],[66,66],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[66,66],67],[[-1,-2],67,[],[]],0,[[],38],[[],66],[68],[68],[68,2],[[66,66],5],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[38,8],9],[[66,8],9],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[38,[[69,[[2,[13,66]]]]]],[16,38],[[66,66],[[6,[67]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],0,[[38,[6,[0]],[6,[13]]],68],[[16,10],38],0,[-1,-2,[],[]],[-1,-2,[],[]],0,0,[70,[[43,[22]]]],[[],70],0,[[70,8],9],[-1,-1,[]],0,[70,[[43,[22]]]],0,0,[-1,-2,[],[]],[70,[[43,[22]]]],0,0,[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,19,[]],0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[[7,8],9],[[71,8],9],[-1,-1,[]],[-1,-1,[]],0,0,[[71,12],7],[-1,-2,[],[]],[-1,-2,[],[]],0,[71,7],0,0,[16,71],0,0,0,[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,19,[]],[-1,19,[]],0,0,0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,[72,72],[[-1,-2],2,[],[]],[[],26],[26,70],[[72,72],5],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],0,[[72,8],9],[[26,8],9],[-1,-1,[]],[-1,-1,[]],[[26,22],72],[[26,22],[[2,[[73,[10]],[73,[10]]]]]],0,0,[26,5],[[[14,[[2,[[43,[42]],17]]]]],5],0,0,[26,5],0,[-1,-2,[],[]],[-1,-2,[],[]],0,0,[26,5],[26,5],0,0,0,[26,5],0,0,0,[-1,-2,[],[]],0,[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,19,[]],[-1,19,[]],0,0,0,0,0,0,0,0,0,0,0,0,0,[[4,29,[14,[30]],74,[14,[0]]],[[2,[75,5]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[4,54],5],[76,76],[77,77],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[],76],[[],77],[[],75],[[76,76],5],[[77,77],5],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[76,8],9],[[77,8],9],[[75,8],9],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[75,5],[75,[[36,[56]]]],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[[4,17,10,[14,[0]]],5],0,0,[-1,-2,[],[]],[-1,-2,[],[]],0,0,[[42,8],9],[-1,-1,[]],0,0,0,[[4,41],[[2,[79,79,80]]]],[-1,-2,[],[]],0,0,0,0,0,[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],0,[-1,19,[]],0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,[[],27],[27,70],0,[[27,8],9],[-1,-1,[]],0,0,[-1,-2,[],[]],0,0,[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[[27,16],81],[-1,19,[]],0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[[82,82],5],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[-1,-1,[]],[-1,-2,[],[]],[81,82],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,19,[]],0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[79,79],[[-1,-2],2,[],[]],[[79,79],5],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[79,8],9],[-1,-1,[]],[10,[[11,[79]]]],[-1,-2,[],[]],[79,5],[[4,17,83],79],[-1,-2,[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,19,[]],[[4,54,5,5],79],0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[74,74],[[-1,-2],2,[],[]],0,[[],74],[[74,8],9],[-1,-1,[]],[-1,-2,[],[]],0,0,[-1,-2,[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,19,[]],0,0,0,0,0,0,0,0,0,[[84,-1],84,85],[84,10],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[4,17],86],[[86,[14,[0]]],86],[87,87],[84,84],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[86,31],86],[[],84],[[86,83],86],[[87,87],5],[[84,84],5],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[87,8],9],[[84,8],9],[-1,-1,[]],[-1,-1,[]],[88,-1,[]],[-1,84,89],[-1,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[84,[[43,[13]]]],[[86,80],86],[[86,79],86],[[86,90],86],[-1,-2,[],[]],[-1,-2,[],[]],[86,52],[86,52],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[[86,91],86],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[[4,17],52],[-1,19,[]],[-1,19,[]],[-1,19,[]],[84,[[43,[13]]]],0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[92,92],[[-1,-2],2,[],[]],[[],92],[[92,92],5],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[92,8],9],[-1,-1,[]],[10,[[11,[92,13]]]],[-1,-2,[],[]],[92,5],[[4,5,55],92],[-1,-2,[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,19,[]],0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,[[78,8],9],[-1,-1,[]],0,[-1,-2,[],[]],0,0,0,[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,19,[]],0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[[94,8],9],[-1,-1,[]],[[4,10,5,17,60,[14,[17]]],[[2,[5,[6,[0]]]]]],[[94,4,10,[14,[17]]],[[2,[5,[6,[0]]]]]],[-1,-2,[],[]],[29,94],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,19,[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[95,38],2],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[96,96],[97,97],[98,98],[99,99],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[96,96],67],[[98,98],67],[[-1,-2],67,[],[]],[[-1,-2],67,[],[]],[[],95],[[96,96],5],[[98,98],5],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],0,0,[[96,8],9],[[97,8],9],[[98,8],9],[[99,8],9],[[95,8],9],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[10,[[11,[96]]]],[95,[[100,[13,99]]]],0,[[95,96],5],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[96,96],[[6,[67]]]],[[98,98],[[6,[67]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[95,[[100,[96,97]]]],[95,[[100,[96,97]]]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],0,[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[[[14,[22]],95,96],2],0,0,[[4,17,[6,[0]],38,5],[[43,[65]]]],[[4,17],[[43,[17]]]],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[101,10],[[6,[102]]]],[[101,10],[[6,[102]]]],[[101,17],[[6,[102]]]],[102,102],[[-1,-2],2,[],[]],[102,[[6,[10]]]],[[],102],[[102,8],9],[[101,8],9],[-1,-1,[]],[-1,-1,[]],[102,13],[-1,-2,[],[]],[-1,-2,[],[]],[102,5],[[102,10],2],[[102,10],2],[102,10],[102,[[6,[10]]]],[102,13],[[16,71],101],[-1,-2,[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,19,[]],[-1,19,[]],0,0,0,0,0,0,0,0,[[4,[14,[54]],17,[14,[0]],[6,[[43,[0]]]]],103],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,[104,104],[105,105],[106,106],[103,103],[107,107],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],0,[[],103],0,[[104,8],9],[[105,8],9],[[106,8],9],[[103,8],9],[[107,8],9],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[10,[[11,[107]]]],[[103,63],[[6,[106]]]],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[105,4],5],0,0,0,[63,103],0,[[103,4,17,13,13,83,108,80,79,50],106],0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],0,[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],0,0,0,[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],0,0,[109,109],[[-1,-2],2,[],[]],0,0,[[109,8],9],[-1,-1,[]],0,[-1,-2,[],[]],0,0,0,0,0,0,[-1,-2,[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[[4,54],[[6,[10]]]],[-1,19,[]],0,0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[91,91],[[-1,-2],2,[],[]],[[],91],[[91,8],9],[-1,-1,[]],[[4,17,[14,[0]]],91],[[4,17,[14,[0]]],91],[[4,17],91],[-1,-2,[],[]],[[91,4,17],[[73,[91]]]],[-1,-2,[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,19,[]],0,0,0,0,0,0,0,0,0,[[-1,16],5,[]],[[-1,16],5,[]],[[-1,16],5,[]],[[-1,16],5,[]],[-1,5,[]],[-1,5,[]],[[],5],[110,2],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[16,111,48],2],[[16,111,29],2],[[16,3],2],[[16,10],111],[[16,111,10,18],17],0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[16,17,[6,[111]],[6,[13]]],17],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[108,108],[83,83],[90,90],[80,80],[112,112],[113,113],[114,114],[31,31],[115,115],[17,17],[54,54],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],0,[[17,17],67],[[116,116],67],[[51,51],67],[[53,53],67],[[81,81],67],[[117,117],67],[[29,29],67],[[118,118],67],[[119,119],67],[[120,120],67],[[-1,-2],67,[],[]],[[-1,-2],67,[],[]],[[-1,-2],67,[],[]],[[-1,-2],67,[],[]],[[-1,-2],67,[],[]],[[-1,-2],67,[],[]],[[-1,-2],67,[],[]],[[-1,-2],67,[],[]],[[-1,-2],67,[],[]],[[-1,-2],67,[],[]],0,0,0,[[16,10,[43,[17]]],[[6,[17]]]],0,[[],83],[[],90],[[],31],[[],17],[[],81],[[],121],[[],117],[[],118],[[],119],[[],122],0,0,0,0,0,0,0,0,0,0,[80,5],[112,5],[113,5],[80,5],[[-1,16],5,[]],[[-1,16],5,[]],[[-1,16],5,[]],[[-1,16],5,[]],[[-1,16],5,[]],[[-1,16],5,[]],[[-1,16],5,[]],[[-1,16],5,[]],[[-1,16],5,[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[108,108],5],[[83,83],5],[[90,90],5],[[80,80],5],[[112,112],5],[[113,113],5],[[114,114],5],[[31,31],5],[[115,115],5],[[17,17],5],[[116,116],5],[[51,51],5],[[53,53],5],[[81,81],5],[[117,117],5],[[29,29],5],[[118,118],5],[[119,119],5],[[120,120],5],[[18,18],5],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],0,0,0,0,0,[[16,17,[6,[111]]],17],[[16,10],[[6,[111]]]],[[16,111,10],17],[[16,111,10],[[6,[17]]]],[[108,8],9],[[83,8],9],[[90,8],9],[[80,8],9],[[112,8],9],[[113,8],9],[[114,8],9],[[31,8],9],[[115,8],9],[[17,8],9],[[116,8],9],[[48,8],9],[[123,8],9],[[124,8],9],[[51,8],9],[[53,8],9],[[81,8],9],[[121,8],9],[[117,8],9],[[41,8],9],[[54,8],9],[[29,8],9],[[93,8],9],[[118,8],9],[[119,8],9],[[120,8],9],[[18,8],9],[[18,8],9],[[122,8],9],[[16,8],9],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[10,[[11,[108,13]]]],[10,[[11,[83,13]]]],[10,[[11,[90,13]]]],[10,[[11,[114,13]]]],[10,[[11,[31,13]]]],[[17,16],13],[[16,29],17],[18,[[14,[29]]]],0,0,0,0,0,0,0,[18,[[6,[0]]]],[18,[[6,[10]]]],[[18,4],[[6,[[2,[18,111]]]]]],[18,13],0,0,0,0,0,0,0,0,[81,5],[81,5],[81,5],[81,5],[81,5],[[17,-1],2,125],0,0,0,[[121,16],5],0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[18,5],0,0,[90,5],[18,5],[[17,4],5],[[18,4],5],[18,5],[90,5],[18,5],[[16,10],5],0,[18,5],0,[[116,16],5],[[81,16],5],[[117,16],5],[[119,16],5],[[18,16],5],[18,5],[90,5],[18,5],[18,5],0,[16,5],[83,5],[[115,16],5],[[17,16],5],[[116,16],5],[[81,16],5],[[121,16],5],[[117,16],5],[[29,16],5],[[119,16],5],[[18,16],5],[18,5],[90,5],[83,5],[116,5],[121,5],[121,5],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[16,111],122],[[16,111],122],[[16,111],[[46,[45]]]],0,[10,16],0,0,0,0,0,0,[[17,17],[[6,[67]]]],[[116,116],[[6,[67]]]],[[51,51],[[6,[67]]]],[[53,53],[[6,[67]]]],[[81,81],[[6,[67]]]],[[117,117],[[6,[67]]]],[[29,29],[[6,[67]]]],[[118,118],[[6,[67]]]],[[119,119],[[6,[67]]]],[[120,120],[[6,[67]]]],0,[[16,1],2],[[16,3],2],0,0,0,0,[[16,[14,[-1]],[43,[13]]],[[11,[2,13]]],[[126,[110]]]],0,[[16,81,111],17],0,0,[115,5],0,0,0,0,[[16,4],2],0,0,0,0,0,0,0,0,0,0,0,0,[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,13,[]],0,0,[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],0,0,0,0,0,[[16,17],18],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[[16,17],18],0,0,[16,[[46,[45]]]],0,[[16,117,111],17],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[18,-1],5,0],[[122,-1],5,0],0,[[16,1],2],[16,2]],"c":[],"p":[[3,"Config",0],[15,"tuple"],[4,"WorkMode",0],[3,"Env",0],[15,"bool"],[4,"Option",2139],[3,"Namespace",694],[3,"Formatter",2140],[6,"Result",2140],[15,"str"],[4,"Result",2141],[6,"NsId",694],[3,"String",2142],[15,"slice"],[8,"Into",2143],[3,"Library",1368],[3,"TypeId",1368],[4,"Type",1368],[3,"TypeId",2144],[3,"Analysis",97],[3,"Info",340],[3,"Info",509],[8,"Fn",2145],[8,"Copy",2146],[3,"Info",360],[3,"Info",728],[3,"Info",877],[3,"Bounds",158],[3,"Function",1368],[3,"CParameter",378],[4,"Concurrency",1368],[3,"CallbackInfo",158],[4,"BoundType",158],[3,"Bound",158],[3,"PropertyBound",158],[3,"Iter",2147],[15,"char"],[3,"Imports",613],[6,"ChildProperties",256],[3,"ChildProperty",256],[3,"Property",1368],[3,"Property",853],[3,"Vec",2148],[3,"Info",284],[8,"Iterator",2149],[3,"Box",2150],[3,"Info",296],[3,"Constant",1368],[8,"Borrow",2151],[4,"ConversionType",312],[3,"Enumeration",1368],[6,"Result",959],[3,"Bitfield",1368],[3,"Parameter",1368],[3,"Parameters",378],[3,"Parameter",378],[3,"RustParameter",378],[4,"TransformationType",378],[3,"Transformation",378],[6,"Signatures",1066],[3,"AsyncTrampoline",509],[3,"AsyncFuture",509],[15,"usize"],[8,"IntoIterator",2152],[3,"StatusedTypeId",598],[3,"ImportConditions",613],[4,"Ordering",2153],[3,"ImportsWithDefault",613],[3,"IntoIter",2154],[3,"InfoBase",670],[3,"Info",694],[4,"LocationInObject",728],[4,"Cow",2155],[3,"Info",940],[3,"Info",794],[4,"ThrowFunctionReturnStrategy",794],[4,"Mode",794],[3,"Info",1047],[4,"RefMode",914],[3,"Nullable",1368],[3,"Record",1368],[4,"RecordType",898],[4,"ParameterDirection",1368],[3,"RustType",959],[8,"FnOnce",2145],[3,"RustTypeBuilder",959],[4,"TypeError",959],[15,"never"],[8,"ToString",2142],[4,"ParameterScope",1368],[4,"TryFromGlib",1328],[4,"SafetyAssertionMode",1023],[3,"Signal",1368],[3,"Signature",1066],[3,"Infos",1079],[4,"Type",1079],[3,"TraitInfo",1079],[4,"FunctionType",1079],[3,"FunctionInfo",1079],[3,"BTreeMap",2156],[3,"Info",1175],[3,"Symbol",1175],[3,"Parameters",1209],[3,"RustParameter",1209],[3,"CParameter",1209],[3,"Transformation",1209],[4,"TransformationType",1209],[4,"Transfer",1368],[3,"Trampoline",1299],[3,"Path",2157],[15,"u16"],[3,"Mandatory",1368],[3,"Infallible",1368],[4,"FunctionKind",1368],[4,"Basic",1368],[3,"Alias",1368],[3,"Union",1368],[3,"Interface",1368],[3,"Class",1368],[3,"Custom",1368],[3,"Field",1368],[3,"Namespace",1368],[3,"Member",1368],[4,"ErrorDomain",1368],[8,"Hasher",2158],[8,"AsRef",2143],[13,"Result",338],[13,"Length",491],[13,"ToGlibPointer",491],[13,"ToGlibDirect",491],[13,"ToGlibScalar",491],[13,"ToGlibUnknown",491],[13,"Result",1351],[13,"ResultInfallible",1351],[8,"DerivesCopy",1354],[8,"ImplementsDebug",1354],[8,"IsExternal",1354],[8,"IsIncomplete",1354],[8,"IsPtr",1354],[8,"IsVolatile",1354]],"b":[[1785,"impl-Debug-for-Type"],[1786,"impl-Display-for-Type"]]}\ }'); if (typeof window !== 'undefined' && window.initSearch) {window.initSearch(searchIndex)}; if (typeof exports !== 'undefined') {exports.searchIndex = searchIndex}; diff --git a/docs/src/libgir/gir_version.rs.html b/docs/src/libgir/gir_version.rs.html index 60206c2b9..8ad209c7a 100644 --- a/docs/src/libgir/gir_version.rs.html +++ b/docs/src/libgir/gir_version.rs.html @@ -1,3 +1,3 @@ gir_version.rs - source
1
-
pub const VERSION: &str = "1cf64433f762";
+
pub const VERSION: &str = "12adad865b2e";
 

\ No newline at end of file diff --git a/docs/trait.impl/core/clone/trait.Clone.js b/docs/trait.impl/core/clone/trait.Clone.js index e744ad38d..fdcc9a9ba 100644 --- a/docs/trait.impl/core/clone/trait.Clone.js +++ b/docs/trait.impl/core/clone/trait.Clone.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"libgir":[["impl Clone for Concurrency"],["impl Clone for RustType"],["impl Clone for LocationInObject"],["impl Clone for FunctionKind"],["impl Clone for Infallible"],["impl Clone for Info"],["impl Clone for PropertyBound"],["impl Clone for AsyncFuture"],["impl Clone for SafetyAssertionMode"],["impl Clone for TraitInfo"],["impl Clone for Parameters"],["impl Clone for RustParameter"],["impl Clone for RustParameter"],["impl Clone for WorkMode"],["impl Clone for Trampoline"],["impl Clone for BoundType"],["impl Clone for ParameterScope"],["impl Clone for Transformation"],["impl Clone for Type"],["impl Clone for Transfer"],["impl Clone for Mandatory"],["impl Clone for Imports"],["impl Clone for CParameter"],["impl Clone for ConversionType"],["impl Clone for Symbol"],["impl Clone for Transformation"],["impl Clone for AsyncTrampoline"],["impl Clone for Mode"],["impl Clone for TypeError"],["impl Clone for Bound"],["impl Clone for StatusedTypeId"],["impl Clone for TransformationType"],["impl Clone for TransformationType"],["impl Clone for ParameterDirection"],["impl Clone for ThrowFunctionReturnStrategy"],["impl Clone for TryFromGlib"],["impl Clone for CallbackInfo"],["impl Clone for Parameter"],["impl Clone for TypeId"],["impl Clone for ChildProperty"],["impl Clone for CParameter"],["impl Clone for Basic"],["impl Clone for RefMode"],["impl Clone for Nullable"],["impl Clone for Parameters"],["impl Clone for FunctionInfo"],["impl Clone for ImportConditions"],["impl Clone for Parameter"],["impl Clone for FunctionType"],["impl Clone for Bounds"]] +"libgir":[["impl Clone for CParameter"],["impl Clone for TypeId"],["impl Clone for Basic"],["impl Clone for Concurrency"],["impl Clone for ImportConditions"],["impl Clone for Transformation"],["impl Clone for FunctionType"],["impl Clone for AsyncFuture"],["impl Clone for Type"],["impl Clone for ThrowFunctionReturnStrategy"],["impl Clone for Bounds"],["impl Clone for TryFromGlib"],["impl Clone for CallbackInfo"],["impl Clone for Parameter"],["impl Clone for Transfer"],["impl Clone for LocationInObject"],["impl Clone for Parameters"],["impl Clone for FunctionKind"],["impl Clone for Infallible"],["impl Clone for FunctionInfo"],["impl Clone for Parameter"],["impl Clone for PropertyBound"],["impl Clone for ConversionType"],["impl Clone for Mandatory"],["impl Clone for RustType"],["impl Clone for Info"],["impl Clone for StatusedTypeId"],["impl Clone for Transformation"],["impl Clone for Symbol"],["impl Clone for Parameters"],["impl Clone for Trampoline"],["impl Clone for TransformationType"],["impl Clone for TypeError"],["impl Clone for RustParameter"],["impl Clone for CParameter"],["impl Clone for ParameterDirection"],["impl Clone for ChildProperty"],["impl Clone for TransformationType"],["impl Clone for WorkMode"],["impl Clone for RustParameter"],["impl Clone for RefMode"],["impl Clone for Nullable"],["impl Clone for AsyncTrampoline"],["impl Clone for Bound"],["impl Clone for SafetyAssertionMode"],["impl Clone for BoundType"],["impl Clone for ParameterScope"],["impl Clone for Imports"],["impl Clone for TraitInfo"],["impl Clone for Mode"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/trait.impl/core/cmp/trait.Eq.js b/docs/trait.impl/core/cmp/trait.Eq.js index 3f442e7ce..3fa6f3504 100644 --- a/docs/trait.impl/core/cmp/trait.Eq.js +++ b/docs/trait.impl/core/cmp/trait.Eq.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"libgir":[["impl Eq for SafetyAssertionMode"],["impl Eq for RustType"],["impl Eq for Alias"],["impl Eq for FunctionType"],["impl Eq for TypeId"],["impl Eq for Bound"],["impl Eq for TypeError"],["impl Eq for Custom"],["impl Eq for Transfer"],["impl Eq for BoundType"],["impl Eq for ParameterScope"],["impl Eq for FunctionKind"],["impl Eq for ThrowFunctionReturnStrategy"],["impl Eq for Type"],["impl Eq for ConversionType"],["impl Eq for Mode"],["impl Eq for ImportConditions"],["impl Eq for Concurrency"],["impl Eq for Nullable"],["impl Eq for Type"],["impl Eq for Union"],["impl Eq for Class"],["impl Eq for LocationInObject"],["impl Eq for Infallible"],["impl Eq for Mandatory"],["impl Eq for Interface"],["impl Eq for Function"],["impl Eq for Record"],["impl Eq for Basic"],["impl Eq for Enumeration"],["impl Eq for WorkMode"],["impl Eq for RefMode"],["impl Eq for Bitfield"],["impl Eq for RecordType"],["impl Eq for ParameterDirection"]] +"libgir":[["impl Eq for FunctionKind"],["impl Eq for Mandatory"],["impl Eq for Type"],["impl Eq for Type"],["impl Eq for Bitfield"],["impl Eq for Transfer"],["impl Eq for Interface"],["impl Eq for Class"],["impl Eq for Concurrency"],["impl Eq for RustType"],["impl Eq for Enumeration"],["impl Eq for LocationInObject"],["impl Eq for ImportConditions"],["impl Eq for Infallible"],["impl Eq for WorkMode"],["impl Eq for BoundType"],["impl Eq for RefMode"],["impl Eq for RecordType"],["impl Eq for ParameterDirection"],["impl Eq for SafetyAssertionMode"],["impl Eq for ConversionType"],["impl Eq for Custom"],["impl Eq for Bound"],["impl Eq for Basic"],["impl Eq for Function"],["impl Eq for TypeId"],["impl Eq for ThrowFunctionReturnStrategy"],["impl Eq for Nullable"],["impl Eq for Record"],["impl Eq for ParameterScope"],["impl Eq for TypeError"],["impl Eq for Alias"],["impl Eq for Union"],["impl Eq for Mode"],["impl Eq for FunctionType"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/trait.impl/core/cmp/trait.Ord.js b/docs/trait.impl/core/cmp/trait.Ord.js index 924deca73..e7d3765c4 100644 --- a/docs/trait.impl/core/cmp/trait.Ord.js +++ b/docs/trait.impl/core/cmp/trait.Ord.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"libgir":[["impl Ord for FunctionType"],["impl Ord for Enumeration"],["impl Ord for TypeId"],["impl Ord for Bitfield"],["impl Ord for Union"],["impl Ord for Class"],["impl Ord for Record"],["impl Ord for Custom"],["impl Ord for ImportConditions"],["impl Ord for Alias"],["impl Ord for Function"],["impl Ord for Type"],["impl Ord for Interface"]] +"libgir":[["impl Ord for Enumeration"],["impl Ord for FunctionType"],["impl Ord for Record"],["impl Ord for Type"],["impl Ord for Class"],["impl Ord for Function"],["impl Ord for ImportConditions"],["impl Ord for Custom"],["impl Ord for Alias"],["impl Ord for TypeId"],["impl Ord for Union"],["impl Ord for Bitfield"],["impl Ord for Interface"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/trait.impl/core/cmp/trait.PartialEq.js b/docs/trait.impl/core/cmp/trait.PartialEq.js index 83f32b658..7c4addcc6 100644 --- a/docs/trait.impl/core/cmp/trait.PartialEq.js +++ b/docs/trait.impl/core/cmp/trait.PartialEq.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"libgir":[["impl PartialEq for Infallible"],["impl PartialEq for RustType"],["impl PartialEq for Type"],["impl PartialEq for ParameterScope"],["impl PartialEq for ParameterDirection"],["impl PartialEq for Nullable"],["impl PartialEq for Mode"],["impl PartialEq for Basic"],["impl PartialEq for Interface"],["impl PartialEq for ImportConditions"],["impl PartialEq for FunctionKind"],["impl PartialEq for Transfer"],["impl PartialEq for TypeError"],["impl PartialEq for ConversionType"],["impl PartialEq for Type"],["impl PartialEq for SafetyAssertionMode"],["impl PartialEq for ThrowFunctionReturnStrategy"],["impl PartialEq for Union"],["impl PartialEq for TypeId"],["impl PartialEq for BoundType"],["impl PartialEq for LocationInObject"],["impl PartialEq for WorkMode"],["impl PartialEq for Class"],["impl PartialEq for Custom"],["impl PartialEq for RefMode"],["impl PartialEq for Bound"],["impl PartialEq for FunctionType"],["impl PartialEq for Alias"],["impl PartialEq for Record"],["impl PartialEq for Function"],["impl PartialEq for Concurrency"],["impl PartialEq for Mandatory"],["impl PartialEq for Bitfield"],["impl PartialEq for RecordType"],["impl PartialEq for Enumeration"]] +"libgir":[["impl PartialEq for Transfer"],["impl PartialEq for Nullable"],["impl PartialEq for RustType"],["impl PartialEq for ImportConditions"],["impl PartialEq for Union"],["impl PartialEq for ThrowFunctionReturnStrategy"],["impl PartialEq for Type"],["impl PartialEq for Concurrency"],["impl PartialEq for Class"],["impl PartialEq for ParameterScope"],["impl PartialEq for SafetyAssertionMode"],["impl PartialEq for Mandatory"],["impl PartialEq for LocationInObject"],["impl PartialEq for Bitfield"],["impl PartialEq for Mode"],["impl PartialEq for Interface"],["impl PartialEq for Record"],["impl PartialEq for Enumeration"],["impl PartialEq for RefMode"],["impl PartialEq for FunctionKind"],["impl PartialEq for ConversionType"],["impl PartialEq for Custom"],["impl PartialEq for BoundType"],["impl PartialEq for Bound"],["impl PartialEq for RecordType"],["impl PartialEq for TypeId"],["impl PartialEq for Basic"],["impl PartialEq for Infallible"],["impl PartialEq for FunctionType"],["impl PartialEq for Alias"],["impl PartialEq for WorkMode"],["impl PartialEq for ParameterDirection"],["impl PartialEq for TypeError"],["impl PartialEq for Function"],["impl PartialEq for Type"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/trait.impl/core/cmp/trait.PartialOrd.js b/docs/trait.impl/core/cmp/trait.PartialOrd.js index cb1d7e403..10702f326 100644 --- a/docs/trait.impl/core/cmp/trait.PartialOrd.js +++ b/docs/trait.impl/core/cmp/trait.PartialOrd.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"libgir":[["impl PartialOrd for Alias"],["impl PartialOrd for TypeId"],["impl PartialOrd for ImportConditions"],["impl PartialOrd for Function"],["impl PartialOrd for Type"],["impl PartialOrd for Custom"],["impl PartialOrd for Record"],["impl PartialOrd for FunctionType"],["impl PartialOrd for Interface"],["impl PartialOrd for Union"],["impl PartialOrd for Bitfield"],["impl PartialOrd for Enumeration"],["impl PartialOrd for Class"]] +"libgir":[["impl PartialOrd for Enumeration"],["impl PartialOrd for Custom"],["impl PartialOrd for Type"],["impl PartialOrd for Function"],["impl PartialOrd for Record"],["impl PartialOrd for Interface"],["impl PartialOrd for Class"],["impl PartialOrd for TypeId"],["impl PartialOrd for Alias"],["impl PartialOrd for FunctionType"],["impl PartialOrd for Bitfield"],["impl PartialOrd for Union"],["impl PartialOrd for ImportConditions"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/trait.impl/core/default/trait.Default.js b/docs/trait.impl/core/default/trait.Default.js index 23f760588..6e5e050c1 100644 --- a/docs/trait.impl/core/default/trait.Default.js +++ b/docs/trait.impl/core/default/trait.Default.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"libgir":[["impl Default for Bounds"],["impl Default for ParameterScope"],["impl Default for ImportConditions"],["impl Default for ThrowFunctionReturnStrategy"],["impl Default for Mode"],["impl Default for Parameters"],["impl Default for Union"],["impl Default for Info"],["impl Default for Field"],["impl Default for TypeId"],["impl Default for Info"],["impl Default for Info"],["impl Default for Imports"],["impl Default for Symbol"],["impl Default for Parameters"],["impl Default for ParameterDirection"],["impl Default for TryFromGlib"],["impl Default for Info"],["impl Default for Info"],["impl Default for Analysis"],["impl Default for Class"],["impl Default for Concurrency"],["impl Default for ConversionType"],["impl Default for RustType"],["impl Default for Interface"],["impl Default for SafetyAssertionMode"],["impl Default for Record"],["impl Default for InfoBase"],["impl Default for WorkMode"],["impl Default for Infos"],["impl Default for Info"],["impl Default for Namespace"]] +"libgir":[["impl Default for Concurrency"],["impl Default for Field"],["impl Default for Parameters"],["impl Default for ImportConditions"],["impl Default for Info"],["impl Default for TryFromGlib"],["impl Default for Info"],["impl Default for Info"],["impl Default for Class"],["impl Default for RustType"],["impl Default for Interface"],["impl Default for ThrowFunctionReturnStrategy"],["impl Default for TypeId"],["impl Default for Bounds"],["impl Default for Infos"],["impl Default for InfoBase"],["impl Default for Mode"],["impl Default for Analysis"],["impl Default for ParameterDirection"],["impl Default for Parameters"],["impl Default for SafetyAssertionMode"],["impl Default for Record"],["impl Default for Info"],["impl Default for Info"],["impl Default for Imports"],["impl Default for WorkMode"],["impl Default for Symbol"],["impl Default for Union"],["impl Default for ParameterScope"],["impl Default for ConversionType"],["impl Default for Info"],["impl Default for Namespace"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/trait.impl/core/fmt/trait.Debug.js b/docs/trait.impl/core/fmt/trait.Debug.js index 8107a816b..c6d617153 100644 --- a/docs/trait.impl/core/fmt/trait.Debug.js +++ b/docs/trait.impl/core/fmt/trait.Debug.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"libgir":[["impl Debug for ParameterScope"],["impl Debug for ParameterDirection"],["impl Debug for Info"],["impl Debug for SafetyAssertionMode"],["impl Debug for Info"],["impl Debug for Type"],["impl Debug for Info"],["impl Debug for Info"],["impl Debug for Type"],["impl Debug for AsyncTrampoline"],["impl Debug for WorkMode"],["impl Debug for Parameters"],["impl Debug for Property"],["impl Debug for StatusedTypeId"],["impl Debug for LocationInObject"],["impl Debug for Info"],["impl Debug for RustType"],["impl Debug for TryFromGlib"],["impl Debug for Bound"],["impl Debug for Env"],["impl Debug for Field"],["impl Debug for Transformation"],["impl Debug for Parameter"],["impl Debug for Interface"],["impl Debug for ErrorDomain"],["impl Debug for Infos"],["impl Debug for Mandatory"],["impl Debug for Nullable"],["impl Debug for Custom"],["impl Debug for InfoBase"],["impl Debug for Transformation"],["impl Debug for Member"],["impl Debug for Signal"],["impl Debug for Parameters"],["impl Debug for Info"],["impl Debug for CParameter"],["impl Debug for PropertyBound"],["impl Debug for ImportConditions"],["impl Debug for Alias"],["impl Debug for TraitInfo"],["impl Debug for FunctionType"],["impl Debug for FunctionKind"],["impl Debug for RustParameter"],["impl Debug for Config"],["impl Debug for Info"],["impl Debug for Function"],["impl Debug for Mode"],["impl Debug for BoundType"],["impl Debug for Analysis"],["impl Debug for Property"],["impl Debug for ConversionType"],["impl Debug for FunctionInfo"],["impl Debug for Info"],["impl Debug for Parameter"],["impl Debug for Transfer"],["impl Debug for Library"],["impl Debug for Namespace"],["impl Debug for CParameter"],["impl Debug for RefMode"],["impl Debug for TransformationType"],["impl Debug for Constant"],["impl Debug for Infallible"],["impl Debug for TransformationType"],["impl Debug for ChildProperty"],["impl Debug for ThrowFunctionReturnStrategy"],["impl Debug for Namespace"],["impl Debug for Union"],["impl Debug for Record"],["impl Debug for AsyncFuture"],["impl Debug for Enumeration"],["impl Debug for Info"],["impl Debug for Trampoline"],["impl Debug for CallbackInfo"],["impl Debug for Info"],["impl Debug for TypeId"],["impl Debug for Info"],["impl Debug for Info"],["impl Debug for Imports"],["impl Debug for TypeError"],["impl Debug for Class"],["impl Debug for Bitfield"],["impl Debug for Symbol"],["impl Debug for Signature"],["impl Debug for RustParameter"],["impl Debug for Basic"],["impl Debug for Concurrency"],["impl Debug for Bounds"]] +"libgir":[["impl Debug for Library"],["impl Debug for RustParameter"],["impl Debug for Info"],["impl Debug for Signal"],["impl Debug for Info"],["impl Debug for Imports"],["impl Debug for SafetyAssertionMode"],["impl Debug for Union"],["impl Debug for Parameters"],["impl Debug for Info"],["impl Debug for Info"],["impl Debug for ThrowFunctionReturnStrategy"],["impl Debug for Type"],["impl Debug for Mode"],["impl Debug for Info"],["impl Debug for CParameter"],["impl Debug for Info"],["impl Debug for TypeId"],["impl Debug for Property"],["impl Debug for Analysis"],["impl Debug for Transformation"],["impl Debug for ConversionType"],["impl Debug for Symbol"],["impl Debug for Parameters"],["impl Debug for Info"],["impl Debug for Custom"],["impl Debug for Property"],["impl Debug for ImportConditions"],["impl Debug for Alias"],["impl Debug for InfoBase"],["impl Debug for Signature"],["impl Debug for Trampoline"],["impl Debug for Function"],["impl Debug for Interface"],["impl Debug for CallbackInfo"],["impl Debug for Class"],["impl Debug for Info"],["impl Debug for TypeError"],["impl Debug for RustType"],["impl Debug for Infallible"],["impl Debug for Basic"],["impl Debug for PropertyBound"],["impl Debug for AsyncTrampoline"],["impl Debug for TryFromGlib"],["impl Debug for FunctionType"],["impl Debug for Record"],["impl Debug for RustParameter"],["impl Debug for ParameterDirection"],["impl Debug for Type"],["impl Debug for TraitInfo"],["impl Debug for FunctionInfo"],["impl Debug for ErrorDomain"],["impl Debug for Nullable"],["impl Debug for RefMode"],["impl Debug for ChildProperty"],["impl Debug for Info"],["impl Debug for Transformation"],["impl Debug for StatusedTypeId"],["impl Debug for Info"],["impl Debug for Mandatory"],["impl Debug for Field"],["impl Debug for ParameterScope"],["impl Debug for Member"],["impl Debug for Info"],["impl Debug for Concurrency"],["impl Debug for Bound"],["impl Debug for Transfer"],["impl Debug for Constant"],["impl Debug for Namespace"],["impl Debug for WorkMode"],["impl Debug for Env"],["impl Debug for Parameter"],["impl Debug for Bounds"],["impl Debug for AsyncFuture"],["impl Debug for Bitfield"],["impl Debug for Enumeration"],["impl Debug for Info"],["impl Debug for TransformationType"],["impl Debug for Infos"],["impl Debug for Config"],["impl Debug for TransformationType"],["impl Debug for BoundType"],["impl Debug for LocationInObject"],["impl Debug for FunctionKind"],["impl Debug for Parameter"],["impl Debug for Namespace"],["impl Debug for CParameter"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/trait.impl/core/marker/trait.Copy.js b/docs/trait.impl/core/marker/trait.Copy.js index 28dd8a6cf..ce5055103 100644 --- a/docs/trait.impl/core/marker/trait.Copy.js +++ b/docs/trait.impl/core/marker/trait.Copy.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"libgir":[["impl Copy for Nullable"],["impl Copy for ParameterScope"],["impl Copy for TypeId"],["impl Copy for FunctionKind"],["impl Copy for LocationInObject"],["impl Copy for Mandatory"],["impl Copy for Transfer"],["impl Copy for RefMode"],["impl Copy for FunctionType"],["impl Copy for Infallible"],["impl Copy for ParameterDirection"],["impl Copy for ThrowFunctionReturnStrategy"],["impl Copy for Basic"],["impl Copy for Mode"],["impl Copy for Concurrency"],["impl Copy for SafetyAssertionMode"],["impl Copy for Type"],["impl Copy for TransformationType"],["impl Copy for WorkMode"]] +"libgir":[["impl Copy for LocationInObject"],["impl Copy for ParameterScope"],["impl Copy for Concurrency"],["impl Copy for Transfer"],["impl Copy for FunctionType"],["impl Copy for Basic"],["impl Copy for TransformationType"],["impl Copy for Type"],["impl Copy for RefMode"],["impl Copy for WorkMode"],["impl Copy for Infallible"],["impl Copy for Nullable"],["impl Copy for ThrowFunctionReturnStrategy"],["impl Copy for Mandatory"],["impl Copy for TypeId"],["impl Copy for FunctionKind"],["impl Copy for SafetyAssertionMode"],["impl Copy for Mode"],["impl Copy for ParameterDirection"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/trait.impl/core/marker/trait.StructuralEq.js b/docs/trait.impl/core/marker/trait.StructuralEq.js index 8009f5fc5..3c89af340 100644 --- a/docs/trait.impl/core/marker/trait.StructuralEq.js +++ b/docs/trait.impl/core/marker/trait.StructuralEq.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"libgir":[["impl StructuralEq for SafetyAssertionMode"],["impl StructuralEq for FunctionType"],["impl StructuralEq for Nullable"],["impl StructuralEq for BoundType"],["impl StructuralEq for ImportConditions"],["impl StructuralEq for ThrowFunctionReturnStrategy"],["impl StructuralEq for RecordType"],["impl StructuralEq for Mandatory"],["impl StructuralEq for TypeId"],["impl StructuralEq for ConversionType"],["impl StructuralEq for Mode"],["impl StructuralEq for Concurrency"],["impl StructuralEq for ParameterScope"],["impl StructuralEq for Type"],["impl StructuralEq for FunctionKind"],["impl StructuralEq for RefMode"],["impl StructuralEq for Basic"],["impl StructuralEq for Type"],["impl StructuralEq for ParameterDirection"],["impl StructuralEq for WorkMode"],["impl StructuralEq for Infallible"],["impl StructuralEq for Transfer"],["impl StructuralEq for TypeError"],["impl StructuralEq for Bound"],["impl StructuralEq for RustType"],["impl StructuralEq for LocationInObject"]] +"libgir":[["impl StructuralEq for ParameterScope"],["impl StructuralEq for ImportConditions"],["impl StructuralEq for Type"],["impl StructuralEq for Mandatory"],["impl StructuralEq for Mode"],["impl StructuralEq for RefMode"],["impl StructuralEq for Nullable"],["impl StructuralEq for ThrowFunctionReturnStrategy"],["impl StructuralEq for LocationInObject"],["impl StructuralEq for WorkMode"],["impl StructuralEq for TypeId"],["impl StructuralEq for Infallible"],["impl StructuralEq for RustType"],["impl StructuralEq for Type"],["impl StructuralEq for ConversionType"],["impl StructuralEq for Concurrency"],["impl StructuralEq for Bound"],["impl StructuralEq for FunctionType"],["impl StructuralEq for BoundType"],["impl StructuralEq for Basic"],["impl StructuralEq for TypeError"],["impl StructuralEq for FunctionKind"],["impl StructuralEq for RecordType"],["impl StructuralEq for Transfer"],["impl StructuralEq for ParameterDirection"],["impl StructuralEq for SafetyAssertionMode"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/trait.impl/core/marker/trait.StructuralPartialEq.js b/docs/trait.impl/core/marker/trait.StructuralPartialEq.js index 5acaa7da5..f218a1052 100644 --- a/docs/trait.impl/core/marker/trait.StructuralPartialEq.js +++ b/docs/trait.impl/core/marker/trait.StructuralPartialEq.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"libgir":[["impl StructuralPartialEq for Mandatory"],["impl StructuralPartialEq for TypeError"],["impl StructuralPartialEq for Bound"],["impl StructuralPartialEq for Type"],["impl StructuralPartialEq for Mode"],["impl StructuralPartialEq for LocationInObject"],["impl StructuralPartialEq for Type"],["impl StructuralPartialEq for Basic"],["impl StructuralPartialEq for ParameterDirection"],["impl StructuralPartialEq for ConversionType"],["impl StructuralPartialEq for ThrowFunctionReturnStrategy"],["impl StructuralPartialEq for ImportConditions"],["impl StructuralPartialEq for Transfer"],["impl StructuralPartialEq for RustType"],["impl StructuralPartialEq for BoundType"],["impl StructuralPartialEq for FunctionKind"],["impl StructuralPartialEq for SafetyAssertionMode"],["impl StructuralPartialEq for WorkMode"],["impl StructuralPartialEq for RecordType"],["impl StructuralPartialEq for Infallible"],["impl StructuralPartialEq for RefMode"],["impl StructuralPartialEq for ParameterScope"],["impl StructuralPartialEq for TypeId"],["impl StructuralPartialEq for Nullable"],["impl StructuralPartialEq for FunctionType"],["impl StructuralPartialEq for Concurrency"]] +"libgir":[["impl StructuralPartialEq for RecordType"],["impl StructuralPartialEq for FunctionType"],["impl StructuralPartialEq for ImportConditions"],["impl StructuralPartialEq for BoundType"],["impl StructuralPartialEq for TypeError"],["impl StructuralPartialEq for WorkMode"],["impl StructuralPartialEq for Mandatory"],["impl StructuralPartialEq for ThrowFunctionReturnStrategy"],["impl StructuralPartialEq for LocationInObject"],["impl StructuralPartialEq for Infallible"],["impl StructuralPartialEq for Mode"],["impl StructuralPartialEq for TypeId"],["impl StructuralPartialEq for Concurrency"],["impl StructuralPartialEq for Type"],["impl StructuralPartialEq for Transfer"],["impl StructuralPartialEq for Bound"],["impl StructuralPartialEq for RustType"],["impl StructuralPartialEq for Basic"],["impl StructuralPartialEq for ParameterScope"],["impl StructuralPartialEq for Nullable"],["impl StructuralPartialEq for ConversionType"],["impl StructuralPartialEq for FunctionKind"],["impl StructuralPartialEq for SafetyAssertionMode"],["impl StructuralPartialEq for ParameterDirection"],["impl StructuralPartialEq for Type"],["impl StructuralPartialEq for RefMode"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/trait.impl/core/ops/deref/trait.Deref.js b/docs/trait.impl/core/ops/deref/trait.Deref.js index e5f65eee2..a552b07b0 100644 --- a/docs/trait.impl/core/ops/deref/trait.Deref.js +++ b/docs/trait.impl/core/ops/deref/trait.Deref.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"libgir":[["impl Deref for Mandatory"],["impl Deref for Nullable"],["impl Deref for ImportsWithDefault<'_>"],["impl Deref for Info"],["impl Deref for Info"],["impl Deref for Infallible"]] +"libgir":[["impl Deref for Nullable"],["impl Deref for Info"],["impl Deref for Mandatory"],["impl Deref for Infallible"],["impl Deref for ImportsWithDefault<'_>"],["impl Deref for Info"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/trait.impl/core/ops/deref/trait.DerefMut.js b/docs/trait.impl/core/ops/deref/trait.DerefMut.js index 67c639045..adb3c4573 100644 --- a/docs/trait.impl/core/ops/deref/trait.DerefMut.js +++ b/docs/trait.impl/core/ops/deref/trait.DerefMut.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"libgir":[["impl DerefMut for Nullable"],["impl DerefMut for ImportsWithDefault<'_>"]] +"libgir":[["impl DerefMut for ImportsWithDefault<'_>"],["impl DerefMut for Nullable"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/trait.impl/core/str/traits/trait.FromStr.js b/docs/trait.impl/core/str/traits/trait.FromStr.js index d8fbf7073..93f61c127 100644 --- a/docs/trait.impl/core/str/traits/trait.FromStr.js +++ b/docs/trait.impl/core/str/traits/trait.FromStr.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"libgir":[["impl FromStr for Transfer"],["impl FromStr for ParameterDirection"],["impl FromStr for ParameterScope"],["impl FromStr for TransformationType"],["impl FromStr for RefMode"],["impl FromStr for Concurrency"],["impl FromStr for WorkMode"],["impl FromStr for Type"],["impl FromStr for FunctionKind"],["impl FromStr for SafetyAssertionMode"]] +"libgir":[["impl FromStr for WorkMode"],["impl FromStr for Type"],["impl FromStr for SafetyAssertionMode"],["impl FromStr for ParameterScope"],["impl FromStr for RefMode"],["impl FromStr for Concurrency"],["impl FromStr for FunctionKind"],["impl FromStr for Transfer"],["impl FromStr for TransformationType"],["impl FromStr for ParameterDirection"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/type.impl/alloc/vec/struct.Vec.js b/docs/type.impl/alloc/vec/struct.Vec.js index 1085427b1..8851992e8 100644 --- a/docs/type.impl/alloc/vec/struct.Vec.js +++ b/docs/type.impl/alloc/vec/struct.Vec.js @@ -1,3 +1,3 @@ (function() {var type_impls = { -"libgir":[["
source§

impl<T> Vec<T>

1.0.0 (const: 1.39.0) · source

pub const fn new() -> Vec<T>

Constructs a new, empty Vec<T>.

\n

The vector will not allocate until elements are pushed onto it.

\n
Examples
\n
let mut vec: Vec<i32> = Vec::new();
\n
1.0.0 · source

pub fn with_capacity(capacity: usize) -> Vec<T>

Constructs a new, empty Vec<T> with at least the specified capacity.

\n

The vector will be able to hold at least capacity elements without\nreallocating. This method is allowed to allocate for more elements than\ncapacity. If capacity is 0, the vector will not allocate.

\n

It is important to note that although the returned vector has the\nminimum capacity specified, the vector will have a zero length. For\nan explanation of the difference between length and capacity, see\nCapacity and reallocation.

\n

If it is important to know the exact allocated capacity of a Vec,\nalways use the capacity method after construction.

\n

For Vec<T> where T is a zero-sized type, there will be no allocation\nand the capacity will always be usize::MAX.

\n
Panics
\n

Panics if the new capacity exceeds isize::MAX bytes.

\n
Examples
\n
let mut vec = Vec::with_capacity(10);\n\n// The vector contains no items, even though it has capacity for more\nassert_eq!(vec.len(), 0);\nassert!(vec.capacity() >= 10);\n\n// These are all done without reallocating...\nfor i in 0..10 {\n    vec.push(i);\n}\nassert_eq!(vec.len(), 10);\nassert!(vec.capacity() >= 10);\n\n// ...but this may make the vector reallocate\nvec.push(11);\nassert_eq!(vec.len(), 11);\nassert!(vec.capacity() >= 11);\n\n// A vector of a zero-sized type will always over-allocate, since no\n// allocation is necessary\nlet vec_units = Vec::<()>::with_capacity(10);\nassert_eq!(vec_units.capacity(), usize::MAX);
\n
1.0.0 · source

pub unsafe fn from_raw_parts(\n ptr: *mut T,\n length: usize,\n capacity: usize\n) -> Vec<T>

Creates a Vec<T> directly from a pointer, a capacity, and a length.

\n
Safety
\n

This is highly unsafe, due to the number of invariants that aren’t\nchecked:

\n
    \n
  • ptr must have been allocated using the global allocator, such as via\nthe alloc::alloc function.
  • \n
  • T needs to have the same alignment as what ptr was allocated with.\n(T having a less strict alignment is not sufficient, the alignment really\nneeds to be equal to satisfy the dealloc requirement that memory must be\nallocated and deallocated with the same layout.)
  • \n
  • The size of T times the capacity (ie. the allocated size in bytes) needs\nto be the same size as the pointer was allocated with. (Because similar to\nalignment, dealloc must be called with the same layout size.)
  • \n
  • length needs to be less than or equal to capacity.
  • \n
  • The first length values must be properly initialized values of type T.
  • \n
  • capacity needs to be the capacity that the pointer was allocated with.
  • \n
  • The allocated size in bytes must be no larger than isize::MAX.\nSee the safety documentation of pointer::offset.
  • \n
\n

These requirements are always upheld by any ptr that has been allocated\nvia Vec<T>. Other allocation sources are allowed if the invariants are\nupheld.

\n

Violating these may cause problems like corrupting the allocator’s\ninternal data structures. For example it is normally not safe\nto build a Vec<u8> from a pointer to a C char array with length\nsize_t, doing so is only safe if the array was initially allocated by\na Vec or String.\nIt’s also not safe to build one from a Vec<u16> and its length, because\nthe allocator cares about the alignment, and these two types have different\nalignments. The buffer was allocated with alignment 2 (for u16), but after\nturning it into a Vec<u8> it’ll be deallocated with alignment 1. To avoid\nthese issues, it is often preferable to do casting/transmuting using\nslice::from_raw_parts instead.

\n

The ownership of ptr is effectively transferred to the\nVec<T> which may then deallocate, reallocate or change the\ncontents of memory pointed to by the pointer at will. Ensure\nthat nothing else uses the pointer after calling this\nfunction.

\n
Examples
\n
use std::ptr;\nuse std::mem;\n\nlet v = vec![1, 2, 3];\n\n// Prevent running `v`'s destructor so we are in complete control\n// of the allocation.\nlet mut v = mem::ManuallyDrop::new(v);\n\n// Pull out the various important pieces of information about `v`\nlet p = v.as_mut_ptr();\nlet len = v.len();\nlet cap = v.capacity();\n\nunsafe {\n    // Overwrite memory with 4, 5, 6\n    for i in 0..len {\n        ptr::write(p.add(i), 4 + i);\n    }\n\n    // Put everything back together into a Vec\n    let rebuilt = Vec::from_raw_parts(p, len, cap);\n    assert_eq!(rebuilt, [4, 5, 6]);\n}
\n

Using memory that was allocated elsewhere:

\n\n
use std::alloc::{alloc, Layout};\n\nfn main() {\n    let layout = Layout::array::<u32>(16).expect("overflow cannot happen");\n\n    let vec = unsafe {\n        let mem = alloc(layout).cast::<u32>();\n        if mem.is_null() {\n            return;\n        }\n\n        mem.write(1_000_000);\n\n        Vec::from_raw_parts(mem, 1, 16)\n    };\n\n    assert_eq!(vec, &[1_000_000]);\n    assert_eq!(vec.capacity(), 16);\n}
\n
",0,"libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
source§

impl<T, A> Vec<T, A>where\n A: Allocator,

source

pub const fn new_in(alloc: A) -> Vec<T, A>

🔬This is a nightly-only experimental API. (allocator_api)

Constructs a new, empty Vec<T, A>.

\n

The vector will not allocate until elements are pushed onto it.

\n
Examples
\n
#![feature(allocator_api)]\n\nuse std::alloc::System;\n\nlet mut vec: Vec<i32, _> = Vec::new_in(System);
\n
source

pub fn with_capacity_in(capacity: usize, alloc: A) -> Vec<T, A>

🔬This is a nightly-only experimental API. (allocator_api)

Constructs a new, empty Vec<T, A> with at least the specified capacity\nwith the provided allocator.

\n

The vector will be able to hold at least capacity elements without\nreallocating. This method is allowed to allocate for more elements than\ncapacity. If capacity is 0, the vector will not allocate.

\n

It is important to note that although the returned vector has the\nminimum capacity specified, the vector will have a zero length. For\nan explanation of the difference between length and capacity, see\nCapacity and reallocation.

\n

If it is important to know the exact allocated capacity of a Vec,\nalways use the capacity method after construction.

\n

For Vec<T, A> where T is a zero-sized type, there will be no allocation\nand the capacity will always be usize::MAX.

\n
Panics
\n

Panics if the new capacity exceeds isize::MAX bytes.

\n
Examples
\n
#![feature(allocator_api)]\n\nuse std::alloc::System;\n\nlet mut vec = Vec::with_capacity_in(10, System);\n\n// The vector contains no items, even though it has capacity for more\nassert_eq!(vec.len(), 0);\nassert!(vec.capacity() >= 10);\n\n// These are all done without reallocating...\nfor i in 0..10 {\n    vec.push(i);\n}\nassert_eq!(vec.len(), 10);\nassert!(vec.capacity() >= 10);\n\n// ...but this may make the vector reallocate\nvec.push(11);\nassert_eq!(vec.len(), 11);\nassert!(vec.capacity() >= 11);\n\n// A vector of a zero-sized type will always over-allocate, since no\n// allocation is necessary\nlet vec_units = Vec::<(), System>::with_capacity_in(10, System);\nassert_eq!(vec_units.capacity(), usize::MAX);
\n
source

pub unsafe fn from_raw_parts_in(\n ptr: *mut T,\n length: usize,\n capacity: usize,\n alloc: A\n) -> Vec<T, A>

🔬This is a nightly-only experimental API. (allocator_api)

Creates a Vec<T, A> directly from a pointer, a capacity, a length,\nand an allocator.

\n
Safety
\n

This is highly unsafe, due to the number of invariants that aren’t\nchecked:

\n
    \n
  • ptr must be currently allocated via the given allocator alloc.
  • \n
  • T needs to have the same alignment as what ptr was allocated with.\n(T having a less strict alignment is not sufficient, the alignment really\nneeds to be equal to satisfy the dealloc requirement that memory must be\nallocated and deallocated with the same layout.)
  • \n
  • The size of T times the capacity (ie. the allocated size in bytes) needs\nto be the same size as the pointer was allocated with. (Because similar to\nalignment, dealloc must be called with the same layout size.)
  • \n
  • length needs to be less than or equal to capacity.
  • \n
  • The first length values must be properly initialized values of type T.
  • \n
  • capacity needs to fit the layout size that the pointer was allocated with.
  • \n
  • The allocated size in bytes must be no larger than isize::MAX.\nSee the safety documentation of pointer::offset.
  • \n
\n

These requirements are always upheld by any ptr that has been allocated\nvia Vec<T, A>. Other allocation sources are allowed if the invariants are\nupheld.

\n

Violating these may cause problems like corrupting the allocator’s\ninternal data structures. For example it is not safe\nto build a Vec<u8> from a pointer to a C char array with length size_t.\nIt’s also not safe to build one from a Vec<u16> and its length, because\nthe allocator cares about the alignment, and these two types have different\nalignments. The buffer was allocated with alignment 2 (for u16), but after\nturning it into a Vec<u8> it’ll be deallocated with alignment 1.

\n

The ownership of ptr is effectively transferred to the\nVec<T> which may then deallocate, reallocate or change the\ncontents of memory pointed to by the pointer at will. Ensure\nthat nothing else uses the pointer after calling this\nfunction.

\n
Examples
\n
#![feature(allocator_api)]\n\nuse std::alloc::System;\n\nuse std::ptr;\nuse std::mem;\n\nlet mut v = Vec::with_capacity_in(3, System);\nv.push(1);\nv.push(2);\nv.push(3);\n\n// Prevent running `v`'s destructor so we are in complete control\n// of the allocation.\nlet mut v = mem::ManuallyDrop::new(v);\n\n// Pull out the various important pieces of information about `v`\nlet p = v.as_mut_ptr();\nlet len = v.len();\nlet cap = v.capacity();\nlet alloc = v.allocator();\n\nunsafe {\n    // Overwrite memory with 4, 5, 6\n    for i in 0..len {\n        ptr::write(p.add(i), 4 + i);\n    }\n\n    // Put everything back together into a Vec\n    let rebuilt = Vec::from_raw_parts_in(p, len, cap, alloc.clone());\n    assert_eq!(rebuilt, [4, 5, 6]);\n}
\n

Using memory that was allocated elsewhere:

\n\n
#![feature(allocator_api)]\n\nuse std::alloc::{AllocError, Allocator, Global, Layout};\n\nfn main() {\n    let layout = Layout::array::<u32>(16).expect("overflow cannot happen");\n\n    let vec = unsafe {\n        let mem = match Global.allocate(layout) {\n            Ok(mem) => mem.cast::<u32>().as_ptr(),\n            Err(AllocError) => return,\n        };\n\n        mem.write(1_000_000);\n\n        Vec::from_raw_parts_in(mem, 1, 16, Global)\n    };\n\n    assert_eq!(vec, &[1_000_000]);\n    assert_eq!(vec.capacity(), 16);\n}
\n
source

pub fn into_raw_parts(self) -> (*mut T, usize, usize)

🔬This is a nightly-only experimental API. (vec_into_raw_parts)

Decomposes a Vec<T> into its raw components.

\n

Returns the raw pointer to the underlying data, the length of\nthe vector (in elements), and the allocated capacity of the\ndata (in elements). These are the same arguments in the same\norder as the arguments to from_raw_parts.

\n

After calling this function, the caller is responsible for the\nmemory previously managed by the Vec. The only way to do\nthis is to convert the raw pointer, length, and capacity back\ninto a Vec with the from_raw_parts function, allowing\nthe destructor to perform the cleanup.

\n
Examples
\n
#![feature(vec_into_raw_parts)]\nlet v: Vec<i32> = vec![-1, 0, 1];\n\nlet (ptr, len, cap) = v.into_raw_parts();\n\nlet rebuilt = unsafe {\n    // We can now make changes to the components, such as\n    // transmuting the raw pointer to a compatible type.\n    let ptr = ptr as *mut u32;\n\n    Vec::from_raw_parts(ptr, len, cap)\n};\nassert_eq!(rebuilt, [4294967295, 0, 1]);
\n
source

pub fn into_raw_parts_with_alloc(self) -> (*mut T, usize, usize, A)

🔬This is a nightly-only experimental API. (allocator_api)

Decomposes a Vec<T> into its raw components.

\n

Returns the raw pointer to the underlying data, the length of the vector (in elements),\nthe allocated capacity of the data (in elements), and the allocator. These are the same\narguments in the same order as the arguments to from_raw_parts_in.

\n

After calling this function, the caller is responsible for the\nmemory previously managed by the Vec. The only way to do\nthis is to convert the raw pointer, length, and capacity back\ninto a Vec with the from_raw_parts_in function, allowing\nthe destructor to perform the cleanup.

\n
Examples
\n
#![feature(allocator_api, vec_into_raw_parts)]\n\nuse std::alloc::System;\n\nlet mut v: Vec<i32, System> = Vec::new_in(System);\nv.push(-1);\nv.push(0);\nv.push(1);\n\nlet (ptr, len, cap, alloc) = v.into_raw_parts_with_alloc();\n\nlet rebuilt = unsafe {\n    // We can now make changes to the components, such as\n    // transmuting the raw pointer to a compatible type.\n    let ptr = ptr as *mut u32;\n\n    Vec::from_raw_parts_in(ptr, len, cap, alloc)\n};\nassert_eq!(rebuilt, [4294967295, 0, 1]);
\n
1.0.0 · source

pub fn capacity(&self) -> usize

Returns the total number of elements the vector can hold without\nreallocating.

\n
Examples
\n
let mut vec: Vec<i32> = Vec::with_capacity(10);\nvec.push(42);\nassert!(vec.capacity() >= 10);
\n
1.0.0 · source

pub fn reserve(&mut self, additional: usize)

Reserves capacity for at least additional more elements to be inserted\nin the given Vec<T>. The collection may reserve more space to\nspeculatively avoid frequent reallocations. After calling reserve,\ncapacity will be greater than or equal to self.len() + additional.\nDoes nothing if capacity is already sufficient.

\n
Panics
\n

Panics if the new capacity exceeds isize::MAX bytes.

\n
Examples
\n
let mut vec = vec![1];\nvec.reserve(10);\nassert!(vec.capacity() >= 11);
\n
1.0.0 · source

pub fn reserve_exact(&mut self, additional: usize)

Reserves the minimum capacity for at least additional more elements to\nbe inserted in the given Vec<T>. Unlike reserve, this will not\ndeliberately over-allocate to speculatively avoid frequent allocations.\nAfter calling reserve_exact, capacity will be greater than or equal to\nself.len() + additional. Does nothing if the capacity is already\nsufficient.

\n

Note that the allocator may give the collection more space than it\nrequests. Therefore, capacity can not be relied upon to be precisely\nminimal. Prefer reserve if future insertions are expected.

\n
Panics
\n

Panics if the new capacity exceeds isize::MAX bytes.

\n
Examples
\n
let mut vec = vec![1];\nvec.reserve_exact(10);\nassert!(vec.capacity() >= 11);
\n
1.57.0 · source

pub fn try_reserve(&mut self, additional: usize) -> Result<(), TryReserveError>

Tries to reserve capacity for at least additional more elements to be inserted\nin the given Vec<T>. The collection may reserve more space to speculatively avoid\nfrequent reallocations. After calling try_reserve, capacity will be\ngreater than or equal to self.len() + additional if it returns\nOk(()). Does nothing if capacity is already sufficient. This method\npreserves the contents even if an error occurs.

\n
Errors
\n

If the capacity overflows, or the allocator reports a failure, then an error\nis returned.

\n
Examples
\n
use std::collections::TryReserveError;\n\nfn process_data(data: &[u32]) -> Result<Vec<u32>, TryReserveError> {\n    let mut output = Vec::new();\n\n    // Pre-reserve the memory, exiting if we can't\n    output.try_reserve(data.len())?;\n\n    // Now we know this can't OOM in the middle of our complex work\n    output.extend(data.iter().map(|&val| {\n        val * 2 + 5 // very complicated\n    }));\n\n    Ok(output)\n}
\n
1.57.0 · source

pub fn try_reserve_exact(\n &mut self,\n additional: usize\n) -> Result<(), TryReserveError>

Tries to reserve the minimum capacity for at least additional\nelements to be inserted in the given Vec<T>. Unlike try_reserve,\nthis will not deliberately over-allocate to speculatively avoid frequent\nallocations. After calling try_reserve_exact, capacity will be greater\nthan or equal to self.len() + additional if it returns Ok(()).\nDoes nothing if the capacity is already sufficient.

\n

Note that the allocator may give the collection more space than it\nrequests. Therefore, capacity can not be relied upon to be precisely\nminimal. Prefer try_reserve if future insertions are expected.

\n
Errors
\n

If the capacity overflows, or the allocator reports a failure, then an error\nis returned.

\n
Examples
\n
use std::collections::TryReserveError;\n\nfn process_data(data: &[u32]) -> Result<Vec<u32>, TryReserveError> {\n    let mut output = Vec::new();\n\n    // Pre-reserve the memory, exiting if we can't\n    output.try_reserve_exact(data.len())?;\n\n    // Now we know this can't OOM in the middle of our complex work\n    output.extend(data.iter().map(|&val| {\n        val * 2 + 5 // very complicated\n    }));\n\n    Ok(output)\n}
\n
1.0.0 · source

pub fn shrink_to_fit(&mut self)

Shrinks the capacity of the vector as much as possible.

\n

It will drop down as close as possible to the length but the allocator\nmay still inform the vector that there is space for a few more elements.

\n
Examples
\n
let mut vec = Vec::with_capacity(10);\nvec.extend([1, 2, 3]);\nassert!(vec.capacity() >= 10);\nvec.shrink_to_fit();\nassert!(vec.capacity() >= 3);
\n
1.56.0 · source

pub fn shrink_to(&mut self, min_capacity: usize)

Shrinks the capacity of the vector with a lower bound.

\n

The capacity will remain at least as large as both the length\nand the supplied value.

\n

If the current capacity is less than the lower limit, this is a no-op.

\n
Examples
\n
let mut vec = Vec::with_capacity(10);\nvec.extend([1, 2, 3]);\nassert!(vec.capacity() >= 10);\nvec.shrink_to(4);\nassert!(vec.capacity() >= 4);\nvec.shrink_to(0);\nassert!(vec.capacity() >= 3);
\n
1.0.0 · source

pub fn into_boxed_slice(self) -> Box<[T], A>

Converts the vector into Box<[T]>.

\n

If the vector has excess capacity, its items will be moved into a\nnewly-allocated buffer with exactly the right capacity.

\n
Examples
\n
let v = vec![1, 2, 3];\n\nlet slice = v.into_boxed_slice();
\n

Any excess capacity is removed:

\n\n
let mut vec = Vec::with_capacity(10);\nvec.extend([1, 2, 3]);\n\nassert!(vec.capacity() >= 10);\nlet slice = vec.into_boxed_slice();\nassert_eq!(slice.into_vec().capacity(), 3);
\n
1.0.0 · source

pub fn truncate(&mut self, len: usize)

Shortens the vector, keeping the first len elements and dropping\nthe rest.

\n

If len is greater or equal to the vector’s current length, this has\nno effect.

\n

The drain method can emulate truncate, but causes the excess\nelements to be returned instead of dropped.

\n

Note that this method has no effect on the allocated capacity\nof the vector.

\n
Examples
\n

Truncating a five element vector to two elements:

\n\n
let mut vec = vec![1, 2, 3, 4, 5];\nvec.truncate(2);\nassert_eq!(vec, [1, 2]);
\n

No truncation occurs when len is greater than the vector’s current\nlength:

\n\n
let mut vec = vec![1, 2, 3];\nvec.truncate(8);\nassert_eq!(vec, [1, 2, 3]);
\n

Truncating when len == 0 is equivalent to calling the clear\nmethod.

\n\n
let mut vec = vec![1, 2, 3];\nvec.truncate(0);\nassert_eq!(vec, []);
\n
1.7.0 · source

pub fn as_slice(&self) -> &[T]

Extracts a slice containing the entire vector.

\n

Equivalent to &s[..].

\n
Examples
\n
use std::io::{self, Write};\nlet buffer = vec![1, 2, 3, 5, 8];\nio::sink().write(buffer.as_slice()).unwrap();
\n
1.7.0 · source

pub fn as_mut_slice(&mut self) -> &mut [T]

Extracts a mutable slice of the entire vector.

\n

Equivalent to &mut s[..].

\n
Examples
\n
use std::io::{self, Read};\nlet mut buffer = vec![0; 3];\nio::repeat(0b101).read_exact(buffer.as_mut_slice()).unwrap();
\n
1.37.0 · source

pub fn as_ptr(&self) -> *const T

Returns a raw pointer to the vector’s buffer, or a dangling raw pointer\nvalid for zero sized reads if the vector didn’t allocate.

\n

The caller must ensure that the vector outlives the pointer this\nfunction returns, or else it will end up pointing to garbage.\nModifying the vector may cause its buffer to be reallocated,\nwhich would also make any pointers to it invalid.

\n

The caller must also ensure that the memory the pointer (non-transitively) points to\nis never written to (except inside an UnsafeCell) using this pointer or any pointer\nderived from it. If you need to mutate the contents of the slice, use as_mut_ptr.

\n

This method guarantees that for the purpose of the aliasing model, this method\ndoes not materialize a reference to the underlying slice, and thus the returned pointer\nwill remain valid when mixed with other calls to as_ptr and as_mut_ptr.\nNote that calling other methods that materialize mutable references to the slice,\nor mutable references to specific elements you are planning on accessing through this pointer,\nas well as writing to those elements, may still invalidate this pointer.\nSee the second example below for how this guarantee can be used.

\n
Examples
\n
let x = vec![1, 2, 4];\nlet x_ptr = x.as_ptr();\n\nunsafe {\n    for i in 0..x.len() {\n        assert_eq!(*x_ptr.add(i), 1 << i);\n    }\n}
\n

Due to the aliasing guarantee, the following code is legal:

\n\n
unsafe {\n    let mut v = vec![0, 1, 2];\n    let ptr1 = v.as_ptr();\n    let _ = ptr1.read();\n    let ptr2 = v.as_mut_ptr().offset(2);\n    ptr2.write(2);\n    // Notably, the write to `ptr2` did *not* invalidate `ptr1`\n    // because it mutated a different element:\n    let _ = ptr1.read();\n}
\n
1.37.0 · source

pub fn as_mut_ptr(&mut self) -> *mut T

Returns an unsafe mutable pointer to the vector’s buffer, or a dangling\nraw pointer valid for zero sized reads if the vector didn’t allocate.

\n

The caller must ensure that the vector outlives the pointer this\nfunction returns, or else it will end up pointing to garbage.\nModifying the vector may cause its buffer to be reallocated,\nwhich would also make any pointers to it invalid.

\n

This method guarantees that for the purpose of the aliasing model, this method\ndoes not materialize a reference to the underlying slice, and thus the returned pointer\nwill remain valid when mixed with other calls to as_ptr and as_mut_ptr.\nNote that calling other methods that materialize references to the slice,\nor references to specific elements you are planning on accessing through this pointer,\nmay still invalidate this pointer.\nSee the second example below for how this guarantee can be used.

\n
Examples
\n
// Allocate vector big enough for 4 elements.\nlet size = 4;\nlet mut x: Vec<i32> = Vec::with_capacity(size);\nlet x_ptr = x.as_mut_ptr();\n\n// Initialize elements via raw pointer writes, then set length.\nunsafe {\n    for i in 0..size {\n        *x_ptr.add(i) = i as i32;\n    }\n    x.set_len(size);\n}\nassert_eq!(&*x, &[0, 1, 2, 3]);
\n

Due to the aliasing guarantee, the following code is legal:

\n\n
unsafe {\n    let mut v = vec![0];\n    let ptr1 = v.as_mut_ptr();\n    ptr1.write(1);\n    let ptr2 = v.as_mut_ptr();\n    ptr2.write(2);\n    // Notably, the write to `ptr2` did *not* invalidate `ptr1`:\n    ptr1.write(3);\n}
\n
source

pub fn allocator(&self) -> &A

🔬This is a nightly-only experimental API. (allocator_api)

Returns a reference to the underlying allocator.

\n
1.0.0 · source

pub unsafe fn set_len(&mut self, new_len: usize)

Forces the length of the vector to new_len.

\n

This is a low-level operation that maintains none of the normal\ninvariants of the type. Normally changing the length of a vector\nis done using one of the safe operations instead, such as\ntruncate, resize, extend, or clear.

\n
Safety
\n
    \n
  • new_len must be less than or equal to capacity().
  • \n
  • The elements at old_len..new_len must be initialized.
  • \n
\n
Examples
\n

This method can be useful for situations in which the vector\nis serving as a buffer for other code, particularly over FFI:

\n\n
pub fn get_dictionary(&self) -> Option<Vec<u8>> {\n    // Per the FFI method's docs, "32768 bytes is always enough".\n    let mut dict = Vec::with_capacity(32_768);\n    let mut dict_length = 0;\n    // SAFETY: When `deflateGetDictionary` returns `Z_OK`, it holds that:\n    // 1. `dict_length` elements were initialized.\n    // 2. `dict_length` <= the capacity (32_768)\n    // which makes `set_len` safe to call.\n    unsafe {\n        // Make the FFI call...\n        let r = deflateGetDictionary(self.strm, dict.as_mut_ptr(), &mut dict_length);\n        if r == Z_OK {\n            // ...and update the length to what was initialized.\n            dict.set_len(dict_length);\n            Some(dict)\n        } else {\n            None\n        }\n    }\n}
\n

While the following example is sound, there is a memory leak since\nthe inner vectors were not freed prior to the set_len call:

\n\n
let mut vec = vec![vec![1, 0, 0],\n                   vec![0, 1, 0],\n                   vec![0, 0, 1]];\n// SAFETY:\n// 1. `old_len..0` is empty so no elements need to be initialized.\n// 2. `0 <= capacity` always holds whatever `capacity` is.\nunsafe {\n    vec.set_len(0);\n}
\n

Normally, here, one would use clear instead to correctly drop\nthe contents and thus not leak memory.

\n
1.0.0 · source

pub fn swap_remove(&mut self, index: usize) -> T

Removes an element from the vector and returns it.

\n

The removed element is replaced by the last element of the vector.

\n

This does not preserve ordering, but is O(1).\nIf you need to preserve the element order, use remove instead.

\n
Panics
\n

Panics if index is out of bounds.

\n
Examples
\n
let mut v = vec!["foo", "bar", "baz", "qux"];\n\nassert_eq!(v.swap_remove(1), "bar");\nassert_eq!(v, ["foo", "qux", "baz"]);\n\nassert_eq!(v.swap_remove(0), "foo");\nassert_eq!(v, ["baz", "qux"]);
\n
1.0.0 · source

pub fn insert(&mut self, index: usize, element: T)

Inserts an element at position index within the vector, shifting all\nelements after it to the right.

\n
Panics
\n

Panics if index > len.

\n
Examples
\n
let mut vec = vec![1, 2, 3];\nvec.insert(1, 4);\nassert_eq!(vec, [1, 4, 2, 3]);\nvec.insert(4, 5);\nassert_eq!(vec, [1, 4, 2, 3, 5]);
\n
1.0.0 · source

pub fn remove(&mut self, index: usize) -> T

Removes and returns the element at position index within the vector,\nshifting all elements after it to the left.

\n

Note: Because this shifts over the remaining elements, it has a\nworst-case performance of O(n). If you don’t need the order of elements\nto be preserved, use swap_remove instead. If you’d like to remove\nelements from the beginning of the Vec, consider using\nVecDeque::pop_front instead.

\n
Panics
\n

Panics if index is out of bounds.

\n
Examples
\n
let mut v = vec![1, 2, 3];\nassert_eq!(v.remove(1), 2);\nassert_eq!(v, [1, 3]);
\n
1.0.0 · source

pub fn retain<F>(&mut self, f: F)where\n F: FnMut(&T) -> bool,

Retains only the elements specified by the predicate.

\n

In other words, remove all elements e for which f(&e) returns false.\nThis method operates in place, visiting each element exactly once in the\noriginal order, and preserves the order of the retained elements.

\n
Examples
\n
let mut vec = vec![1, 2, 3, 4];\nvec.retain(|&x| x % 2 == 0);\nassert_eq!(vec, [2, 4]);
\n

Because the elements are visited exactly once in the original order,\nexternal state may be used to decide which elements to keep.

\n\n
let mut vec = vec![1, 2, 3, 4, 5];\nlet keep = [false, true, true, false, true];\nlet mut iter = keep.iter();\nvec.retain(|_| *iter.next().unwrap());\nassert_eq!(vec, [2, 3, 5]);
\n
1.61.0 · source

pub fn retain_mut<F>(&mut self, f: F)where\n F: FnMut(&mut T) -> bool,

Retains only the elements specified by the predicate, passing a mutable reference to it.

\n

In other words, remove all elements e such that f(&mut e) returns false.\nThis method operates in place, visiting each element exactly once in the\noriginal order, and preserves the order of the retained elements.

\n
Examples
\n
let mut vec = vec![1, 2, 3, 4];\nvec.retain_mut(|x| if *x <= 3 {\n    *x += 1;\n    true\n} else {\n    false\n});\nassert_eq!(vec, [2, 3, 4]);
\n
1.16.0 · source

pub fn dedup_by_key<F, K>(&mut self, key: F)where\n F: FnMut(&mut T) -> K,\n K: PartialEq,

Removes all but the first of consecutive elements in the vector that resolve to the same\nkey.

\n

If the vector is sorted, this removes all duplicates.

\n
Examples
\n
let mut vec = vec![10, 20, 21, 30, 20];\n\nvec.dedup_by_key(|i| *i / 10);\n\nassert_eq!(vec, [10, 20, 30, 20]);
\n
1.16.0 · source

pub fn dedup_by<F>(&mut self, same_bucket: F)where\n F: FnMut(&mut T, &mut T) -> bool,

Removes all but the first of consecutive elements in the vector satisfying a given equality\nrelation.

\n

The same_bucket function is passed references to two elements from the vector and\nmust determine if the elements compare equal. The elements are passed in opposite order\nfrom their order in the slice, so if same_bucket(a, b) returns true, a is removed.

\n

If the vector is sorted, this removes all duplicates.

\n
Examples
\n
let mut vec = vec!["foo", "bar", "Bar", "baz", "bar"];\n\nvec.dedup_by(|a, b| a.eq_ignore_ascii_case(b));\n\nassert_eq!(vec, ["foo", "bar", "baz", "bar"]);
\n
1.0.0 · source

pub fn push(&mut self, value: T)

Appends an element to the back of a collection.

\n
Panics
\n

Panics if the new capacity exceeds isize::MAX bytes.

\n
Examples
\n
let mut vec = vec![1, 2];\nvec.push(3);\nassert_eq!(vec, [1, 2, 3]);
\n
source

pub fn push_within_capacity(&mut self, value: T) -> Result<(), T>

🔬This is a nightly-only experimental API. (vec_push_within_capacity)

Appends an element if there is sufficient spare capacity, otherwise an error is returned\nwith the element.

\n

Unlike push this method will not reallocate when there’s insufficient capacity.\nThe caller should use reserve or try_reserve to ensure that there is enough capacity.

\n
Examples
\n

A manual, panic-free alternative to FromIterator:

\n\n
#![feature(vec_push_within_capacity)]\n\nuse std::collections::TryReserveError;\nfn from_iter_fallible<T>(iter: impl Iterator<Item=T>) -> Result<Vec<T>, TryReserveError> {\n    let mut vec = Vec::new();\n    for value in iter {\n        if let Err(value) = vec.push_within_capacity(value) {\n            vec.try_reserve(1)?;\n            // this cannot fail, the previous line either returned or added at least 1 free slot\n            let _ = vec.push_within_capacity(value);\n        }\n    }\n    Ok(vec)\n}\nassert_eq!(from_iter_fallible(0..100), Ok(Vec::from_iter(0..100)));
\n
1.0.0 · source

pub fn pop(&mut self) -> Option<T>

Removes the last element from a vector and returns it, or None if it\nis empty.

\n

If you’d like to pop the first element, consider using\nVecDeque::pop_front instead.

\n
Examples
\n
let mut vec = vec![1, 2, 3];\nassert_eq!(vec.pop(), Some(3));\nassert_eq!(vec, [1, 2]);
\n
1.4.0 · source

pub fn append(&mut self, other: &mut Vec<T, A>)

Moves all the elements of other into self, leaving other empty.

\n
Panics
\n

Panics if the new capacity exceeds isize::MAX bytes.

\n
Examples
\n
let mut vec = vec![1, 2, 3];\nlet mut vec2 = vec![4, 5, 6];\nvec.append(&mut vec2);\nassert_eq!(vec, [1, 2, 3, 4, 5, 6]);\nassert_eq!(vec2, []);
\n
1.6.0 · source

pub fn drain<R>(&mut self, range: R) -> Drain<'_, T, A>where\n R: RangeBounds<usize>,

Removes the specified range from the vector in bulk, returning all\nremoved elements as an iterator. If the iterator is dropped before\nbeing fully consumed, it drops the remaining removed elements.

\n

The returned iterator keeps a mutable borrow on the vector to optimize\nits implementation.

\n
Panics
\n

Panics if the starting point is greater than the end point or if\nthe end point is greater than the length of the vector.

\n
Leaking
\n

If the returned iterator goes out of scope without being dropped (due to\nmem::forget, for example), the vector may have lost and leaked\nelements arbitrarily, including elements outside the range.

\n
Examples
\n
let mut v = vec![1, 2, 3];\nlet u: Vec<_> = v.drain(1..).collect();\nassert_eq!(v, &[1]);\nassert_eq!(u, &[2, 3]);\n\n// A full range clears the vector, like `clear()` does\nv.drain(..);\nassert_eq!(v, &[]);
\n
1.0.0 · source

pub fn clear(&mut self)

Clears the vector, removing all values.

\n

Note that this method has no effect on the allocated capacity\nof the vector.

\n
Examples
\n
let mut v = vec![1, 2, 3];\n\nv.clear();\n\nassert!(v.is_empty());
\n
1.0.0 · source

pub fn len(&self) -> usize

Returns the number of elements in the vector, also referred to\nas its ‘length’.

\n
Examples
\n
let a = vec![1, 2, 3];\nassert_eq!(a.len(), 3);
\n
1.0.0 · source

pub fn is_empty(&self) -> bool

Returns true if the vector contains no elements.

\n
Examples
\n
let mut v = Vec::new();\nassert!(v.is_empty());\n\nv.push(1);\nassert!(!v.is_empty());
\n
1.4.0 · source

pub fn split_off(&mut self, at: usize) -> Vec<T, A>where\n A: Clone,

Splits the collection into two at the given index.

\n

Returns a newly allocated vector containing the elements in the range\n[at, len). After the call, the original vector will be left containing\nthe elements [0, at) with its previous capacity unchanged.

\n
Panics
\n

Panics if at > len.

\n
Examples
\n
let mut vec = vec![1, 2, 3];\nlet vec2 = vec.split_off(1);\nassert_eq!(vec, [1]);\nassert_eq!(vec2, [2, 3]);
\n
1.33.0 · source

pub fn resize_with<F>(&mut self, new_len: usize, f: F)where\n F: FnMut() -> T,

Resizes the Vec in-place so that len is equal to new_len.

\n

If new_len is greater than len, the Vec is extended by the\ndifference, with each additional slot filled with the result of\ncalling the closure f. The return values from f will end up\nin the Vec in the order they have been generated.

\n

If new_len is less than len, the Vec is simply truncated.

\n

This method uses a closure to create new values on every push. If\nyou’d rather Clone a given value, use Vec::resize. If you\nwant to use the Default trait to generate values, you can\npass Default::default as the second argument.

\n
Examples
\n
let mut vec = vec![1, 2, 3];\nvec.resize_with(5, Default::default);\nassert_eq!(vec, [1, 2, 3, 0, 0]);\n\nlet mut vec = vec![];\nlet mut p = 1;\nvec.resize_with(4, || { p *= 2; p });\nassert_eq!(vec, [2, 4, 8, 16]);
\n
1.47.0 · source

pub fn leak<'a>(self) -> &'a mut [T]where\n A: 'a,

Consumes and leaks the Vec, returning a mutable reference to the contents,\n&'a mut [T]. Note that the type T must outlive the chosen lifetime\n'a. If the type has only static references, or none at all, then this\nmay be chosen to be 'static.

\n

As of Rust 1.57, this method does not reallocate or shrink the Vec,\nso the leaked allocation may include unused capacity that is not part\nof the returned slice.

\n

This function is mainly useful for data that lives for the remainder of\nthe program’s life. Dropping the returned reference will cause a memory\nleak.

\n
Examples
\n

Simple usage:

\n\n
let x = vec![1, 2, 3];\nlet static_ref: &'static mut [usize] = x.leak();\nstatic_ref[0] += 1;\nassert_eq!(static_ref, &[2, 2, 3]);
\n
1.60.0 · source

pub fn spare_capacity_mut(&mut self) -> &mut [MaybeUninit<T>]

Returns the remaining spare capacity of the vector as a slice of\nMaybeUninit<T>.

\n

The returned slice can be used to fill the vector with data (e.g. by\nreading from a file) before marking the data as initialized using the\nset_len method.

\n
Examples
\n
// Allocate vector big enough for 10 elements.\nlet mut v = Vec::with_capacity(10);\n\n// Fill in the first 3 elements.\nlet uninit = v.spare_capacity_mut();\nuninit[0].write(0);\nuninit[1].write(1);\nuninit[2].write(2);\n\n// Mark the first 3 elements of the vector as being initialized.\nunsafe {\n    v.set_len(3);\n}\n\nassert_eq!(&v, &[0, 1, 2]);
\n
source

pub fn split_at_spare_mut(&mut self) -> (&mut [T], &mut [MaybeUninit<T>])

🔬This is a nightly-only experimental API. (vec_split_at_spare)

Returns vector content as a slice of T, along with the remaining spare\ncapacity of the vector as a slice of MaybeUninit<T>.

\n

The returned spare capacity slice can be used to fill the vector with data\n(e.g. by reading from a file) before marking the data as initialized using\nthe set_len method.

\n

Note that this is a low-level API, which should be used with care for\noptimization purposes. If you need to append data to a Vec\nyou can use push, extend, extend_from_slice,\nextend_from_within, insert, append, resize or\nresize_with, depending on your exact needs.

\n
Examples
\n
#![feature(vec_split_at_spare)]\n\nlet mut v = vec![1, 1, 2];\n\n// Reserve additional space big enough for 10 elements.\nv.reserve(10);\n\nlet (init, uninit) = v.split_at_spare_mut();\nlet sum = init.iter().copied().sum::<u32>();\n\n// Fill in the next 4 elements.\nuninit[0].write(sum);\nuninit[1].write(sum * 2);\nuninit[2].write(sum * 3);\nuninit[3].write(sum * 4);\n\n// Mark the 4 elements of the vector as being initialized.\nunsafe {\n    let len = v.len();\n    v.set_len(len + 4);\n}\n\nassert_eq!(&v, &[1, 1, 2, 4, 8, 12, 16]);
\n
",0,"libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
source§

impl<T, A> Vec<T, A>where\n T: Clone,\n A: Allocator,

1.5.0 · source

pub fn resize(&mut self, new_len: usize, value: T)

Resizes the Vec in-place so that len is equal to new_len.

\n

If new_len is greater than len, the Vec is extended by the\ndifference, with each additional slot filled with value.\nIf new_len is less than len, the Vec is simply truncated.

\n

This method requires T to implement Clone,\nin order to be able to clone the passed value.\nIf you need more flexibility (or want to rely on Default instead of\nClone), use Vec::resize_with.\nIf you only need to resize to a smaller size, use Vec::truncate.

\n
Examples
\n
let mut vec = vec!["hello"];\nvec.resize(3, "world");\nassert_eq!(vec, ["hello", "world", "world"]);\n\nlet mut vec = vec![1, 2, 3, 4];\nvec.resize(2, 0);\nassert_eq!(vec, [1, 2]);
\n
1.6.0 · source

pub fn extend_from_slice(&mut self, other: &[T])

Clones and appends all elements in a slice to the Vec.

\n

Iterates over the slice other, clones each element, and then appends\nit to this Vec. The other slice is traversed in-order.

\n

Note that this function is same as extend except that it is\nspecialized to work with slices instead. If and when Rust gets\nspecialization this function will likely be deprecated (but still\navailable).

\n
Examples
\n
let mut vec = vec![1];\nvec.extend_from_slice(&[2, 3, 4]);\nassert_eq!(vec, [1, 2, 3, 4]);
\n
1.53.0 · source

pub fn extend_from_within<R>(&mut self, src: R)where\n R: RangeBounds<usize>,

Copies elements from src range to the end of the vector.

\n
Panics
\n

Panics if the starting point is greater than the end point or if\nthe end point is greater than the length of the vector.

\n
Examples
\n
let mut vec = vec![0, 1, 2, 3, 4];\n\nvec.extend_from_within(2..);\nassert_eq!(vec, [0, 1, 2, 3, 4, 2, 3, 4]);\n\nvec.extend_from_within(..2);\nassert_eq!(vec, [0, 1, 2, 3, 4, 2, 3, 4, 0, 1]);\n\nvec.extend_from_within(4..8);\nassert_eq!(vec, [0, 1, 2, 3, 4, 2, 3, 4, 0, 1, 4, 2, 3, 4]);
\n
",0,"libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
source§

impl<T, A> Vec<T, A>where\n T: PartialEq,\n A: Allocator,

1.0.0 · source

pub fn dedup(&mut self)

Removes consecutive repeated elements in the vector according to the\nPartialEq trait implementation.

\n

If the vector is sorted, this removes all duplicates.

\n
Examples
\n
let mut vec = vec![1, 2, 2, 3, 2];\n\nvec.dedup();\n\nassert_eq!(vec, [1, 2, 3, 2]);
\n
",0,"libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
source§

impl<T, A> Vec<T, A>where\n A: Allocator,

1.21.0 · source

pub fn splice<R, I>(\n &mut self,\n range: R,\n replace_with: I\n) -> Splice<'_, <I as IntoIterator>::IntoIter, A>where\n R: RangeBounds<usize>,\n I: IntoIterator<Item = T>,

Creates a splicing iterator that replaces the specified range in the vector\nwith the given replace_with iterator and yields the removed items.\nreplace_with does not need to be the same length as range.

\n

range is removed even if the iterator is not consumed until the end.

\n

It is unspecified how many elements are removed from the vector\nif the Splice value is leaked.

\n

The input iterator replace_with is only consumed when the Splice value is dropped.

\n

This is optimal if:

\n
    \n
  • The tail (elements in the vector after range) is empty,
  • \n
  • or replace_with yields fewer or equal elements than range’s length
  • \n
  • or the lower bound of its size_hint() is exact.
  • \n
\n

Otherwise, a temporary vector is allocated and the tail is moved twice.

\n
Panics
\n

Panics if the starting point is greater than the end point or if\nthe end point is greater than the length of the vector.

\n
Examples
\n
let mut v = vec![1, 2, 3, 4];\nlet new = [7, 8, 9];\nlet u: Vec<_> = v.splice(1..3, new).collect();\nassert_eq!(v, &[1, 7, 8, 9, 4]);\nassert_eq!(u, &[2, 3]);
\n
source

pub fn extract_if<F>(&mut self, filter: F) -> ExtractIf<'_, T, F, A>where\n F: FnMut(&mut T) -> bool,

🔬This is a nightly-only experimental API. (extract_if)

Creates an iterator which uses a closure to determine if an element should be removed.

\n

If the closure returns true, then the element is removed and yielded.\nIf the closure returns false, the element will remain in the vector and will not be yielded\nby the iterator.

\n

If the returned ExtractIf is not exhausted, e.g. because it is dropped without iterating\nor the iteration short-circuits, then the remaining elements will be retained.\nUse retain with a negated predicate if you do not need the returned iterator.

\n

Using this method is equivalent to the following code:

\n\n
let mut i = 0;\nwhile i < vec.len() {\n    if some_predicate(&mut vec[i]) {\n        let val = vec.remove(i);\n        // your code here\n    } else {\n        i += 1;\n    }\n}\n
\n

But extract_if is easier to use. extract_if is also more efficient,\nbecause it can backshift the elements of the array in bulk.

\n

Note that extract_if also lets you mutate every element in the filter closure,\nregardless of whether you choose to keep or remove it.

\n
Examples
\n

Splitting an array into evens and odds, reusing the original allocation:

\n\n
#![feature(extract_if)]\nlet mut numbers = vec![1, 2, 3, 4, 5, 6, 8, 9, 11, 13, 14, 15];\n\nlet evens = numbers.extract_if(|x| *x % 2 == 0).collect::<Vec<_>>();\nlet odds = numbers;\n\nassert_eq!(evens, vec![2, 4, 6, 8, 14]);\nassert_eq!(odds, vec![1, 3, 5, 9, 11, 13, 15]);
\n
",0,"libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.0.0 · source§

impl<T, I, A> Index<I> for Vec<T, A>where\n I: SliceIndex<[T]>,\n A: Allocator,

§

type Output = <I as SliceIndex<[T]>>::Output

The returned type after indexing.
source§

fn index(&self, index: I) -> &<Vec<T, A> as Index<I>>::Output

Performs the indexing (container[index]) operation. Read more
","Index","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.0.0 · source§

impl<T, A> Deref for Vec<T, A>where\n A: Allocator,

§

type Target = [T]

The resulting type after dereferencing.
source§

fn deref(&self) -> &[T]

Dereferences the value.
","Deref","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.2.0 · source§

impl<'a, T, A> Extend<&'a T> for Vec<T, A>where\n T: Copy + 'a,\n A: Allocator,

Extend implementation that copies elements out of references before pushing them onto the Vec.

\n

This implementation is specialized for slice iterators, where it uses copy_from_slice to\nappend the entire slice at once.

\n
source§

fn extend<I>(&mut self, iter: I)where\n I: IntoIterator<Item = &'a T>,

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

fn extend_one(&mut self, _: &'a T)

🔬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
","Extend<&'a T>","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.0.0 · source§

impl<T, A> Extend<T> for Vec<T, A>where\n A: Allocator,

source§

fn extend<I>(&mut self, iter: I)where\n I: IntoIterator<Item = T>,

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

fn extend_one(&mut self, item: T)

🔬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
","Extend","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.0.0 · source§

impl<T, A> Ord for Vec<T, A>where\n T: Ord,\n A: Allocator,

Implements ordering of vectors, lexicographically.

\n
source§

fn cmp(&self, other: &Vec<T, A>) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Selfwhere\n Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Selfwhere\n Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Selfwhere\n Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
","Ord","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.0.0 · source§

impl<T, U, A, const N: usize> PartialEq<[U; N]> for Vec<T, A>where\n A: Allocator,\n T: PartialEq<U>,

source§

fn eq(&self, other: &[U; N]) -> bool

This method tests for self and other values to be equal, and is used\nby ==.
source§

fn ne(&self, other: &[U; N]) -> bool

This method tests for !=. The default implementation is almost always\nsufficient, and should not be overridden without very good reason.
","PartialEq<[U; N]>","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.0.0 · source§

impl<T, U, A> PartialEq<&[U]> for Vec<T, A>where\n A: Allocator,\n T: PartialEq<U>,

source§

fn eq(&self, other: &&[U]) -> bool

This method tests for self and other values to be equal, and is used\nby ==.
source§

fn ne(&self, other: &&[U]) -> bool

This method tests for !=. The default implementation is almost always\nsufficient, and should not be overridden without very good reason.
","PartialEq<&[U]>","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.0.0 · source§

impl<T, U, A, const N: usize> PartialEq<&[U; N]> for Vec<T, A>where\n A: Allocator,\n T: PartialEq<U>,

source§

fn eq(&self, other: &&[U; N]) -> bool

This method tests for self and other values to be equal, and is used\nby ==.
source§

fn ne(&self, other: &&[U; N]) -> bool

This method tests for !=. The default implementation is almost always\nsufficient, and should not be overridden without very good reason.
","PartialEq<&[U; N]>","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.48.0 · source§

impl<T, U, A> PartialEq<[U]> for Vec<T, A>where\n A: Allocator,\n T: PartialEq<U>,

source§

fn eq(&self, other: &[U]) -> bool

This method tests for self and other values to be equal, and is used\nby ==.
source§

fn ne(&self, other: &[U]) -> bool

This method tests for !=. The default implementation is almost always\nsufficient, and should not be overridden without very good reason.
","PartialEq<[U]>","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.0.0 · source§

impl<T, U, A1, A2> PartialEq<Vec<U, A2>> for Vec<T, A1>where\n A1: Allocator,\n A2: Allocator,\n T: PartialEq<U>,

source§

fn eq(&self, other: &Vec<U, A2>) -> bool

This method tests for self and other values to be equal, and is used\nby ==.
source§

fn ne(&self, other: &Vec<U, A2>) -> bool

This method tests for !=. The default implementation is almost always\nsufficient, and should not be overridden without very good reason.
","PartialEq>","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.0.0 · source§

impl<T, U, A> PartialEq<&mut [U]> for Vec<T, A>where\n A: Allocator,\n T: PartialEq<U>,

source§

fn eq(&self, other: &&mut [U]) -> bool

This method tests for self and other values to be equal, and is used\nby ==.
source§

fn ne(&self, other: &&mut [U]) -> bool

This method tests for !=. The default implementation is almost always\nsufficient, and should not be overridden without very good reason.
","PartialEq<&mut [U]>","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.0.0 · source§

impl<T, A> Drop for Vec<T, A>where\n A: Allocator,

source§

fn drop(&mut self)

Executes the destructor for this type. Read more
","Drop","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.0.0 · source§

impl<T, A1, A2> PartialOrd<Vec<T, A2>> for Vec<T, A1>where\n T: PartialOrd,\n A1: Allocator,\n A2: Allocator,

Implements comparison of vectors, lexicographically.

\n
source§

fn partial_cmp(&self, other: &Vec<T, A2>) -> 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 <=\noperator. 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 >=\noperator. Read more
","PartialOrd>","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.0.0 · source§

impl<T, A> Hash for Vec<T, A>where\n T: Hash,\n A: Allocator,

The hash of a vector is the same as that of the corresponding slice,\nas required by the core::borrow::Borrow implementation.

\n\n
use std::hash::BuildHasher;\n\nlet b = std::collections::hash_map::RandomState::new();\nlet v: Vec<u8> = vec![0xa8, 0x3c, 0x09];\nlet s: &[u8] = &[0xa8, 0x3c, 0x09];\nassert_eq!(b.hash_one(v), b.hash_one(s));
\n
source§

fn hash<H>(&self, state: &mut H)where\n H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)where\n H: Hasher,\n Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
","Hash","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.5.0 · source§

impl<T, A> AsMut<[T]> for Vec<T, A>where\n A: Allocator,

source§

fn as_mut(&mut self) -> &mut [T]

Converts this type into a mutable reference of the (usually inferred) input type.
","AsMut<[T]>","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.5.0 · source§

impl<T, A> AsMut<Vec<T, A>> for Vec<T, A>where\n A: Allocator,

source§

fn as_mut(&mut self) -> &mut Vec<T, A>

Converts this type into a mutable reference of the (usually inferred) input type.
","AsMut>","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.0.0 · source§

impl<T, A> Borrow<[T]> for Vec<T, A>where\n A: Allocator,

source§

fn borrow(&self) -> &[T]

Immutably borrows from an owned value. Read more
","Borrow<[T]>","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.0.0 · source§

impl<T, A> DerefMut for Vec<T, A>where\n A: Allocator,

source§

fn deref_mut(&mut self) -> &mut [T]

Mutably dereferences the value.
","DerefMut","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.0.0 · source§

impl<T> Default for Vec<T>

source§

fn default() -> Vec<T>

Creates an empty Vec<T>.

\n

The vector will not allocate until elements are pushed onto it.

\n
","Default","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.0.0 · source§

impl<T, A> AsRef<Vec<T, A>> for Vec<T, A>where\n A: Allocator,

source§

fn as_ref(&self) -> &Vec<T, A>

Converts this type into a shared reference of the (usually inferred) input type.
","AsRef>","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.0.0 · source§

impl<T, A> AsRef<[T]> for Vec<T, A>where\n A: Allocator,

source§

fn as_ref(&self) -> &[T]

Converts this type into a shared reference of the (usually inferred) input type.
","AsRef<[T]>","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.0.0 · source§

impl<T, A> IntoIterator for Vec<T, A>where\n A: Allocator,

source§

fn into_iter(self) -> <Vec<T, A> as IntoIterator>::IntoIter

Creates a consuming iterator, that is, one that moves each value out of\nthe vector (from start to end). The vector cannot be used after calling\nthis.

\n
Examples
\n
let v = vec!["a".to_string(), "b".to_string()];\nlet mut v_iter = v.into_iter();\n\nlet first_element: Option<String> = v_iter.next();\n\nassert_eq!(first_element, Some("a".to_string()));\nassert_eq!(v_iter.next(), Some("b".to_string()));\nassert_eq!(v_iter.next(), None);
\n
§

type Item = T

The type of the elements being iterated over.
§

type IntoIter = IntoIter<T, A>

Which kind of iterator are we turning this into?
","IntoIterator","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.0.0 · source§

impl<T, A> BorrowMut<[T]> for Vec<T, A>where\n A: Allocator,

source§

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

Mutably borrows from an owned value. Read more
","BorrowMut<[T]>","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.0.0 · source§

impl<T, I, A> IndexMut<I> for Vec<T, A>where\n I: SliceIndex<[T]>,\n A: Allocator,

source§

fn index_mut(&mut self, index: I) -> &mut <Vec<T, A> as Index<I>>::Output

Performs the mutable indexing (container[index]) operation. Read more
","IndexMut","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.18.0 · source§

impl<T, A> From<Box<[T], A>> for Vec<T, A>where\n A: Allocator,

source§

fn from(s: Box<[T], A>) -> Vec<T, A>

Convert a boxed slice into a vector by transferring ownership of\nthe existing heap allocation.

\n
Examples
\n
let b: Box<[i32]> = vec![1, 2, 3].into_boxed_slice();\nassert_eq!(Vec::from(b), vec![1, 2, 3]);
\n
","From>","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.14.0 · source§

impl<'a, T> From<Cow<'a, [T]>> for Vec<T>where\n [T]: ToOwned<Owned = Vec<T>>,

source§

fn from(s: Cow<'a, [T]>) -> Vec<T>

Convert a clone-on-write slice into a vector.

\n

If s already owns a Vec<T>, it will be returned directly.\nIf s is borrowing a slice, a new Vec<T> will be allocated and\nfilled by cloning s’s items into it.

\n
Examples
\n
let o: Cow<'_, [i32]> = Cow::Owned(vec![1, 2, 3]);\nlet b: Cow<'_, [i32]> = Cow::Borrowed(&[1, 2, 3]);\nassert_eq!(Vec::from(o), Vec::from(b));
\n
","From>","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.74.0 · source§

impl<T, const N: usize> From<&mut [T; N]> for Vec<T>where\n T: Clone,

source§

fn from(s: &mut [T; N]) -> Vec<T>

Allocate a Vec<T> and fill it by cloning s’s items.

\n
Examples
\n
assert_eq!(Vec::from(&mut [1, 2, 3]), vec![1, 2, 3]);
\n
","From<&mut [T; N]>","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.10.0 · source§

impl<T, A> From<VecDeque<T, A>> for Vec<T, A>where\n A: Allocator,

source§

fn from(other: VecDeque<T, A>) -> Vec<T, A>

Turn a VecDeque<T> into a Vec<T>.

\n

This never needs to re-allocate, but does need to do O(n) data movement if\nthe circular buffer doesn’t happen to be at the beginning of the allocation.

\n
Examples
\n
use std::collections::VecDeque;\n\n// This one is *O*(1).\nlet deque: VecDeque<_> = (1..5).collect();\nlet ptr = deque.as_slices().0.as_ptr();\nlet vec = Vec::from(deque);\nassert_eq!(vec, [1, 2, 3, 4]);\nassert_eq!(vec.as_ptr(), ptr);\n\n// This one needs data rearranging.\nlet mut deque: VecDeque<_> = (1..5).collect();\ndeque.push_front(9);\ndeque.push_front(8);\nlet ptr = deque.as_slices().1.as_ptr();\nlet vec = Vec::from(deque);\nassert_eq!(vec, [8, 9, 1, 2, 3, 4]);\nassert_eq!(vec.as_ptr(), ptr);
\n
","From>","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.19.0 · source§

impl<T> From<&mut [T]> for Vec<T>where\n T: Clone,

source§

fn from(s: &mut [T]) -> Vec<T>

Allocate a Vec<T> and fill it by cloning s’s items.

\n
Examples
\n
assert_eq!(Vec::from(&mut [1, 2, 3][..]), vec![1, 2, 3]);
\n
","From<&mut [T]>","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.5.0 · source§

impl<T, A> From<BinaryHeap<T, A>> for Vec<T, A>where\n A: Allocator,

source§

fn from(heap: BinaryHeap<T, A>) -> Vec<T, A>

Converts a BinaryHeap<T> into a Vec<T>.

\n

This conversion requires no data movement or allocation, and has\nconstant time complexity.

\n
","From>","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.0.0 · source§

impl<T> From<&[T]> for Vec<T>where\n T: Clone,

source§

fn from(s: &[T]) -> Vec<T>

Allocate a Vec<T> and fill it by cloning s’s items.

\n
Examples
\n
assert_eq!(Vec::from(&[1, 2, 3][..]), vec![1, 2, 3]);
\n
","From<&[T]>","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.44.0 · source§

impl<T, const N: usize> From<[T; N]> for Vec<T>

source§

fn from(s: [T; N]) -> Vec<T>

Allocate a Vec<T> and move s’s items into it.

\n
Examples
\n
assert_eq!(Vec::from([1, 2, 3]), vec![1, 2, 3]);
\n
","From<[T; N]>","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.74.0 · source§

impl<T, const N: usize> From<&[T; N]> for Vec<T>where\n T: Clone,

source§

fn from(s: &[T; N]) -> Vec<T>

Allocate a Vec<T> and fill it by cloning s’s items.

\n
Examples
\n
assert_eq!(Vec::from(&[1, 2, 3]), vec![1, 2, 3]);
\n
","From<&[T; N]>","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.0.0 · source§

impl<T, A> Eq for Vec<T, A>where\n T: Eq,\n A: Allocator,

","Eq","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.0.0 · source§

impl<T, A> Debug for Vec<T, A>where\n T: Debug,\n A: Allocator,

source§

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

Formats the value using the given formatter. Read more
","Debug","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.0.0 · source§

impl<T, A> Clone for Vec<T, A>where\n T: Clone,\n A: Allocator + Clone,

source§

fn clone(&self) -> Vec<T, A>

Returns a copy of the value. Read more
source§

fn clone_from(&mut self, other: &Vec<T, A>)

Performs copy-assignment from source. Read more
","Clone","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.0.0 · source§

impl<T> FromIterator<T> for Vec<T>

source§

fn from_iter<I>(iter: I) -> Vec<T>where\n I: IntoIterator<Item = T>,

Creates a value from an iterator. Read more
","FromIterator","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
§

impl<T> Index<StateID> for Vec<T>

§

type Output = T

The returned type after indexing.
§

fn index(&self, index: StateID) -> &T

Performs the indexing (container[index]) operation. Read more
","Index","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
§

impl<T> Index<SmallIndex> for Vec<T>

§

type Output = T

The returned type after indexing.
§

fn index(&self, index: SmallIndex) -> &T

Performs the indexing (container[index]) operation. Read more
","Index","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
§

impl<T> Index<PatternID> for Vec<T>

§

type Output = T

The returned type after indexing.
§

fn index(&self, index: PatternID) -> &T

Performs the indexing (container[index]) operation. Read more
","Index","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
§

impl<T> IndexMut<StateID> for Vec<T>

§

fn index_mut(&mut self, index: StateID) -> &mut T

Performs the mutable indexing (container[index]) operation. Read more
","IndexMut","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
§

impl<T> IndexMut<SmallIndex> for Vec<T>

§

fn index_mut(&mut self, index: SmallIndex) -> &mut T

Performs the mutable indexing (container[index]) operation. Read more
","IndexMut","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
§

impl<T> IndexMut<PatternID> for Vec<T>

§

fn index_mut(&mut self, index: PatternID) -> &mut T

Performs the mutable indexing (container[index]) operation. Read more
","IndexMut","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
§

impl<T> Index<StateID> for Vec<T>

§

type Output = T

The returned type after indexing.
§

fn index(&self, index: StateID) -> &T

Performs the indexing (container[index]) operation. Read more
","Index","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
§

impl<T> Index<PatternID> for Vec<T>

§

type Output = T

The returned type after indexing.
§

fn index(&self, index: PatternID) -> &T

Performs the indexing (container[index]) operation. Read more
","Index","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
§

impl<T> Index<SmallIndex> for Vec<T>

§

type Output = T

The returned type after indexing.
§

fn index(&self, index: SmallIndex) -> &T

Performs the indexing (container[index]) operation. Read more
","Index","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
§

impl<T> IndexMut<StateID> for Vec<T>

§

fn index_mut(&mut self, index: StateID) -> &mut T

Performs the mutable indexing (container[index]) operation. Read more
","IndexMut","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
§

impl<T> IndexMut<PatternID> for Vec<T>

§

fn index_mut(&mut self, index: PatternID) -> &mut T

Performs the mutable indexing (container[index]) operation. Read more
","IndexMut","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
§

impl<T> IndexMut<SmallIndex> for Vec<T>

§

fn index_mut(&mut self, index: SmallIndex) -> &mut T

Performs the mutable indexing (container[index]) operation. Read more
","IndexMut","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
source§

impl<T> Serialize for Vec<T>where\n T: Serialize,

source§

fn serialize<S>(\n &self,\n serializer: S\n) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>where\n S: Serializer,

Serialize this value into the given Serde serializer. Read more
","Serialize","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
source§

impl<'de, T, E> IntoDeserializer<'de, E> for Vec<T>where\n T: IntoDeserializer<'de, E>,\n E: Error,

§

type Deserializer = SeqDeserializer<<Vec<T> as IntoIterator>::IntoIter, E>

The type of the deserializer being converted into.
source§

fn into_deserializer(self) -> <Vec<T> as IntoDeserializer<'de, E>>::Deserializer

Convert this value into a deserializer.
","IntoDeserializer<'de, E>","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
source§

impl<'de, T> Deserialize<'de> for Vec<T>where\n T: Deserialize<'de>,

source§

fn deserialize<D>(\n deserializer: D\n) -> Result<Vec<T>, <D as Deserializer<'de>>::Error>where\n D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
","Deserialize<'de>","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
§

impl<T> Accumulate<T> for Vec<T>

§

fn initial(capacity: Option<usize>) -> Vec<T>

Create a new Extend of the correct type
§

fn accumulate(&mut self, acc: T)

Accumulate the input into an accumulator
","Accumulate","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
§

impl<'i, T> Accumulate<&'i [T]> for Vec<T>where\n T: Clone,

§

fn initial(capacity: Option<usize>) -> Vec<T>

Create a new Extend of the correct type
§

fn accumulate(&mut self, acc: &'i [T])

Accumulate the input into an accumulator
","Accumulate<&'i [T]>","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"]] +"libgir":[["
source§

impl<T> Vec<T>

1.0.0 (const: 1.39.0) · source

pub const fn new() -> Vec<T>

Constructs a new, empty Vec<T>.

\n

The vector will not allocate until elements are pushed onto it.

\n
Examples
\n
let mut vec: Vec<i32> = Vec::new();
\n
1.0.0 · source

pub fn with_capacity(capacity: usize) -> Vec<T>

Constructs a new, empty Vec<T> with at least the specified capacity.

\n

The vector will be able to hold at least capacity elements without\nreallocating. This method is allowed to allocate for more elements than\ncapacity. If capacity is 0, the vector will not allocate.

\n

It is important to note that although the returned vector has the\nminimum capacity specified, the vector will have a zero length. For\nan explanation of the difference between length and capacity, see\nCapacity and reallocation.

\n

If it is important to know the exact allocated capacity of a Vec,\nalways use the capacity method after construction.

\n

For Vec<T> where T is a zero-sized type, there will be no allocation\nand the capacity will always be usize::MAX.

\n
Panics
\n

Panics if the new capacity exceeds isize::MAX bytes.

\n
Examples
\n
let mut vec = Vec::with_capacity(10);\n\n// The vector contains no items, even though it has capacity for more\nassert_eq!(vec.len(), 0);\nassert!(vec.capacity() >= 10);\n\n// These are all done without reallocating...\nfor i in 0..10 {\n    vec.push(i);\n}\nassert_eq!(vec.len(), 10);\nassert!(vec.capacity() >= 10);\n\n// ...but this may make the vector reallocate\nvec.push(11);\nassert_eq!(vec.len(), 11);\nassert!(vec.capacity() >= 11);\n\n// A vector of a zero-sized type will always over-allocate, since no\n// allocation is necessary\nlet vec_units = Vec::<()>::with_capacity(10);\nassert_eq!(vec_units.capacity(), usize::MAX);
\n
1.0.0 · source

pub unsafe fn from_raw_parts(\n ptr: *mut T,\n length: usize,\n capacity: usize\n) -> Vec<T>

Creates a Vec<T> directly from a pointer, a capacity, and a length.

\n
Safety
\n

This is highly unsafe, due to the number of invariants that aren’t\nchecked:

\n
    \n
  • ptr must have been allocated using the global allocator, such as via\nthe alloc::alloc function.
  • \n
  • T needs to have the same alignment as what ptr was allocated with.\n(T having a less strict alignment is not sufficient, the alignment really\nneeds to be equal to satisfy the dealloc requirement that memory must be\nallocated and deallocated with the same layout.)
  • \n
  • The size of T times the capacity (ie. the allocated size in bytes) needs\nto be the same size as the pointer was allocated with. (Because similar to\nalignment, dealloc must be called with the same layout size.)
  • \n
  • length needs to be less than or equal to capacity.
  • \n
  • The first length values must be properly initialized values of type T.
  • \n
  • capacity needs to be the capacity that the pointer was allocated with.
  • \n
  • The allocated size in bytes must be no larger than isize::MAX.\nSee the safety documentation of pointer::offset.
  • \n
\n

These requirements are always upheld by any ptr that has been allocated\nvia Vec<T>. Other allocation sources are allowed if the invariants are\nupheld.

\n

Violating these may cause problems like corrupting the allocator’s\ninternal data structures. For example it is normally not safe\nto build a Vec<u8> from a pointer to a C char array with length\nsize_t, doing so is only safe if the array was initially allocated by\na Vec or String.\nIt’s also not safe to build one from a Vec<u16> and its length, because\nthe allocator cares about the alignment, and these two types have different\nalignments. The buffer was allocated with alignment 2 (for u16), but after\nturning it into a Vec<u8> it’ll be deallocated with alignment 1. To avoid\nthese issues, it is often preferable to do casting/transmuting using\nslice::from_raw_parts instead.

\n

The ownership of ptr is effectively transferred to the\nVec<T> which may then deallocate, reallocate or change the\ncontents of memory pointed to by the pointer at will. Ensure\nthat nothing else uses the pointer after calling this\nfunction.

\n
Examples
\n
use std::ptr;\nuse std::mem;\n\nlet v = vec![1, 2, 3];\n\n// Prevent running `v`'s destructor so we are in complete control\n// of the allocation.\nlet mut v = mem::ManuallyDrop::new(v);\n\n// Pull out the various important pieces of information about `v`\nlet p = v.as_mut_ptr();\nlet len = v.len();\nlet cap = v.capacity();\n\nunsafe {\n    // Overwrite memory with 4, 5, 6\n    for i in 0..len {\n        ptr::write(p.add(i), 4 + i);\n    }\n\n    // Put everything back together into a Vec\n    let rebuilt = Vec::from_raw_parts(p, len, cap);\n    assert_eq!(rebuilt, [4, 5, 6]);\n}
\n

Using memory that was allocated elsewhere:

\n\n
use std::alloc::{alloc, Layout};\n\nfn main() {\n    let layout = Layout::array::<u32>(16).expect("overflow cannot happen");\n\n    let vec = unsafe {\n        let mem = alloc(layout).cast::<u32>();\n        if mem.is_null() {\n            return;\n        }\n\n        mem.write(1_000_000);\n\n        Vec::from_raw_parts(mem, 1, 16)\n    };\n\n    assert_eq!(vec, &[1_000_000]);\n    assert_eq!(vec.capacity(), 16);\n}
\n
",0,"libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
source§

impl<T, A> Vec<T, A>where\n A: Allocator,

source

pub const fn new_in(alloc: A) -> Vec<T, A>

🔬This is a nightly-only experimental API. (allocator_api)

Constructs a new, empty Vec<T, A>.

\n

The vector will not allocate until elements are pushed onto it.

\n
Examples
\n
#![feature(allocator_api)]\n\nuse std::alloc::System;\n\nlet mut vec: Vec<i32, _> = Vec::new_in(System);
\n
source

pub fn with_capacity_in(capacity: usize, alloc: A) -> Vec<T, A>

🔬This is a nightly-only experimental API. (allocator_api)

Constructs a new, empty Vec<T, A> with at least the specified capacity\nwith the provided allocator.

\n

The vector will be able to hold at least capacity elements without\nreallocating. This method is allowed to allocate for more elements than\ncapacity. If capacity is 0, the vector will not allocate.

\n

It is important to note that although the returned vector has the\nminimum capacity specified, the vector will have a zero length. For\nan explanation of the difference between length and capacity, see\nCapacity and reallocation.

\n

If it is important to know the exact allocated capacity of a Vec,\nalways use the capacity method after construction.

\n

For Vec<T, A> where T is a zero-sized type, there will be no allocation\nand the capacity will always be usize::MAX.

\n
Panics
\n

Panics if the new capacity exceeds isize::MAX bytes.

\n
Examples
\n
#![feature(allocator_api)]\n\nuse std::alloc::System;\n\nlet mut vec = Vec::with_capacity_in(10, System);\n\n// The vector contains no items, even though it has capacity for more\nassert_eq!(vec.len(), 0);\nassert!(vec.capacity() >= 10);\n\n// These are all done without reallocating...\nfor i in 0..10 {\n    vec.push(i);\n}\nassert_eq!(vec.len(), 10);\nassert!(vec.capacity() >= 10);\n\n// ...but this may make the vector reallocate\nvec.push(11);\nassert_eq!(vec.len(), 11);\nassert!(vec.capacity() >= 11);\n\n// A vector of a zero-sized type will always over-allocate, since no\n// allocation is necessary\nlet vec_units = Vec::<(), System>::with_capacity_in(10, System);\nassert_eq!(vec_units.capacity(), usize::MAX);
\n
source

pub unsafe fn from_raw_parts_in(\n ptr: *mut T,\n length: usize,\n capacity: usize,\n alloc: A\n) -> Vec<T, A>

🔬This is a nightly-only experimental API. (allocator_api)

Creates a Vec<T, A> directly from a pointer, a capacity, a length,\nand an allocator.

\n
Safety
\n

This is highly unsafe, due to the number of invariants that aren’t\nchecked:

\n
    \n
  • ptr must be currently allocated via the given allocator alloc.
  • \n
  • T needs to have the same alignment as what ptr was allocated with.\n(T having a less strict alignment is not sufficient, the alignment really\nneeds to be equal to satisfy the dealloc requirement that memory must be\nallocated and deallocated with the same layout.)
  • \n
  • The size of T times the capacity (ie. the allocated size in bytes) needs\nto be the same size as the pointer was allocated with. (Because similar to\nalignment, dealloc must be called with the same layout size.)
  • \n
  • length needs to be less than or equal to capacity.
  • \n
  • The first length values must be properly initialized values of type T.
  • \n
  • capacity needs to fit the layout size that the pointer was allocated with.
  • \n
  • The allocated size in bytes must be no larger than isize::MAX.\nSee the safety documentation of pointer::offset.
  • \n
\n

These requirements are always upheld by any ptr that has been allocated\nvia Vec<T, A>. Other allocation sources are allowed if the invariants are\nupheld.

\n

Violating these may cause problems like corrupting the allocator’s\ninternal data structures. For example it is not safe\nto build a Vec<u8> from a pointer to a C char array with length size_t.\nIt’s also not safe to build one from a Vec<u16> and its length, because\nthe allocator cares about the alignment, and these two types have different\nalignments. The buffer was allocated with alignment 2 (for u16), but after\nturning it into a Vec<u8> it’ll be deallocated with alignment 1.

\n

The ownership of ptr is effectively transferred to the\nVec<T> which may then deallocate, reallocate or change the\ncontents of memory pointed to by the pointer at will. Ensure\nthat nothing else uses the pointer after calling this\nfunction.

\n
Examples
\n
#![feature(allocator_api)]\n\nuse std::alloc::System;\n\nuse std::ptr;\nuse std::mem;\n\nlet mut v = Vec::with_capacity_in(3, System);\nv.push(1);\nv.push(2);\nv.push(3);\n\n// Prevent running `v`'s destructor so we are in complete control\n// of the allocation.\nlet mut v = mem::ManuallyDrop::new(v);\n\n// Pull out the various important pieces of information about `v`\nlet p = v.as_mut_ptr();\nlet len = v.len();\nlet cap = v.capacity();\nlet alloc = v.allocator();\n\nunsafe {\n    // Overwrite memory with 4, 5, 6\n    for i in 0..len {\n        ptr::write(p.add(i), 4 + i);\n    }\n\n    // Put everything back together into a Vec\n    let rebuilt = Vec::from_raw_parts_in(p, len, cap, alloc.clone());\n    assert_eq!(rebuilt, [4, 5, 6]);\n}
\n

Using memory that was allocated elsewhere:

\n\n
#![feature(allocator_api)]\n\nuse std::alloc::{AllocError, Allocator, Global, Layout};\n\nfn main() {\n    let layout = Layout::array::<u32>(16).expect("overflow cannot happen");\n\n    let vec = unsafe {\n        let mem = match Global.allocate(layout) {\n            Ok(mem) => mem.cast::<u32>().as_ptr(),\n            Err(AllocError) => return,\n        };\n\n        mem.write(1_000_000);\n\n        Vec::from_raw_parts_in(mem, 1, 16, Global)\n    };\n\n    assert_eq!(vec, &[1_000_000]);\n    assert_eq!(vec.capacity(), 16);\n}
\n
source

pub fn into_raw_parts(self) -> (*mut T, usize, usize)

🔬This is a nightly-only experimental API. (vec_into_raw_parts)

Decomposes a Vec<T> into its raw components.

\n

Returns the raw pointer to the underlying data, the length of\nthe vector (in elements), and the allocated capacity of the\ndata (in elements). These are the same arguments in the same\norder as the arguments to from_raw_parts.

\n

After calling this function, the caller is responsible for the\nmemory previously managed by the Vec. The only way to do\nthis is to convert the raw pointer, length, and capacity back\ninto a Vec with the from_raw_parts function, allowing\nthe destructor to perform the cleanup.

\n
Examples
\n
#![feature(vec_into_raw_parts)]\nlet v: Vec<i32> = vec![-1, 0, 1];\n\nlet (ptr, len, cap) = v.into_raw_parts();\n\nlet rebuilt = unsafe {\n    // We can now make changes to the components, such as\n    // transmuting the raw pointer to a compatible type.\n    let ptr = ptr as *mut u32;\n\n    Vec::from_raw_parts(ptr, len, cap)\n};\nassert_eq!(rebuilt, [4294967295, 0, 1]);
\n
source

pub fn into_raw_parts_with_alloc(self) -> (*mut T, usize, usize, A)

🔬This is a nightly-only experimental API. (allocator_api)

Decomposes a Vec<T> into its raw components.

\n

Returns the raw pointer to the underlying data, the length of the vector (in elements),\nthe allocated capacity of the data (in elements), and the allocator. These are the same\narguments in the same order as the arguments to from_raw_parts_in.

\n

After calling this function, the caller is responsible for the\nmemory previously managed by the Vec. The only way to do\nthis is to convert the raw pointer, length, and capacity back\ninto a Vec with the from_raw_parts_in function, allowing\nthe destructor to perform the cleanup.

\n
Examples
\n
#![feature(allocator_api, vec_into_raw_parts)]\n\nuse std::alloc::System;\n\nlet mut v: Vec<i32, System> = Vec::new_in(System);\nv.push(-1);\nv.push(0);\nv.push(1);\n\nlet (ptr, len, cap, alloc) = v.into_raw_parts_with_alloc();\n\nlet rebuilt = unsafe {\n    // We can now make changes to the components, such as\n    // transmuting the raw pointer to a compatible type.\n    let ptr = ptr as *mut u32;\n\n    Vec::from_raw_parts_in(ptr, len, cap, alloc)\n};\nassert_eq!(rebuilt, [4294967295, 0, 1]);
\n
1.0.0 · source

pub fn capacity(&self) -> usize

Returns the total number of elements the vector can hold without\nreallocating.

\n
Examples
\n
let mut vec: Vec<i32> = Vec::with_capacity(10);\nvec.push(42);\nassert!(vec.capacity() >= 10);
\n
1.0.0 · source

pub fn reserve(&mut self, additional: usize)

Reserves capacity for at least additional more elements to be inserted\nin the given Vec<T>. The collection may reserve more space to\nspeculatively avoid frequent reallocations. After calling reserve,\ncapacity will be greater than or equal to self.len() + additional.\nDoes nothing if capacity is already sufficient.

\n
Panics
\n

Panics if the new capacity exceeds isize::MAX bytes.

\n
Examples
\n
let mut vec = vec![1];\nvec.reserve(10);\nassert!(vec.capacity() >= 11);
\n
1.0.0 · source

pub fn reserve_exact(&mut self, additional: usize)

Reserves the minimum capacity for at least additional more elements to\nbe inserted in the given Vec<T>. Unlike reserve, this will not\ndeliberately over-allocate to speculatively avoid frequent allocations.\nAfter calling reserve_exact, capacity will be greater than or equal to\nself.len() + additional. Does nothing if the capacity is already\nsufficient.

\n

Note that the allocator may give the collection more space than it\nrequests. Therefore, capacity can not be relied upon to be precisely\nminimal. Prefer reserve if future insertions are expected.

\n
Panics
\n

Panics if the new capacity exceeds isize::MAX bytes.

\n
Examples
\n
let mut vec = vec![1];\nvec.reserve_exact(10);\nassert!(vec.capacity() >= 11);
\n
1.57.0 · source

pub fn try_reserve(&mut self, additional: usize) -> Result<(), TryReserveError>

Tries to reserve capacity for at least additional more elements to be inserted\nin the given Vec<T>. The collection may reserve more space to speculatively avoid\nfrequent reallocations. After calling try_reserve, capacity will be\ngreater than or equal to self.len() + additional if it returns\nOk(()). Does nothing if capacity is already sufficient. This method\npreserves the contents even if an error occurs.

\n
Errors
\n

If the capacity overflows, or the allocator reports a failure, then an error\nis returned.

\n
Examples
\n
use std::collections::TryReserveError;\n\nfn process_data(data: &[u32]) -> Result<Vec<u32>, TryReserveError> {\n    let mut output = Vec::new();\n\n    // Pre-reserve the memory, exiting if we can't\n    output.try_reserve(data.len())?;\n\n    // Now we know this can't OOM in the middle of our complex work\n    output.extend(data.iter().map(|&val| {\n        val * 2 + 5 // very complicated\n    }));\n\n    Ok(output)\n}
\n
1.57.0 · source

pub fn try_reserve_exact(\n &mut self,\n additional: usize\n) -> Result<(), TryReserveError>

Tries to reserve the minimum capacity for at least additional\nelements to be inserted in the given Vec<T>. Unlike try_reserve,\nthis will not deliberately over-allocate to speculatively avoid frequent\nallocations. After calling try_reserve_exact, capacity will be greater\nthan or equal to self.len() + additional if it returns Ok(()).\nDoes nothing if the capacity is already sufficient.

\n

Note that the allocator may give the collection more space than it\nrequests. Therefore, capacity can not be relied upon to be precisely\nminimal. Prefer try_reserve if future insertions are expected.

\n
Errors
\n

If the capacity overflows, or the allocator reports a failure, then an error\nis returned.

\n
Examples
\n
use std::collections::TryReserveError;\n\nfn process_data(data: &[u32]) -> Result<Vec<u32>, TryReserveError> {\n    let mut output = Vec::new();\n\n    // Pre-reserve the memory, exiting if we can't\n    output.try_reserve_exact(data.len())?;\n\n    // Now we know this can't OOM in the middle of our complex work\n    output.extend(data.iter().map(|&val| {\n        val * 2 + 5 // very complicated\n    }));\n\n    Ok(output)\n}
\n
1.0.0 · source

pub fn shrink_to_fit(&mut self)

Shrinks the capacity of the vector as much as possible.

\n

It will drop down as close as possible to the length but the allocator\nmay still inform the vector that there is space for a few more elements.

\n
Examples
\n
let mut vec = Vec::with_capacity(10);\nvec.extend([1, 2, 3]);\nassert!(vec.capacity() >= 10);\nvec.shrink_to_fit();\nassert!(vec.capacity() >= 3);
\n
1.56.0 · source

pub fn shrink_to(&mut self, min_capacity: usize)

Shrinks the capacity of the vector with a lower bound.

\n

The capacity will remain at least as large as both the length\nand the supplied value.

\n

If the current capacity is less than the lower limit, this is a no-op.

\n
Examples
\n
let mut vec = Vec::with_capacity(10);\nvec.extend([1, 2, 3]);\nassert!(vec.capacity() >= 10);\nvec.shrink_to(4);\nassert!(vec.capacity() >= 4);\nvec.shrink_to(0);\nassert!(vec.capacity() >= 3);
\n
1.0.0 · source

pub fn into_boxed_slice(self) -> Box<[T], A>

Converts the vector into Box<[T]>.

\n

If the vector has excess capacity, its items will be moved into a\nnewly-allocated buffer with exactly the right capacity.

\n
Examples
\n
let v = vec![1, 2, 3];\n\nlet slice = v.into_boxed_slice();
\n

Any excess capacity is removed:

\n\n
let mut vec = Vec::with_capacity(10);\nvec.extend([1, 2, 3]);\n\nassert!(vec.capacity() >= 10);\nlet slice = vec.into_boxed_slice();\nassert_eq!(slice.into_vec().capacity(), 3);
\n
1.0.0 · source

pub fn truncate(&mut self, len: usize)

Shortens the vector, keeping the first len elements and dropping\nthe rest.

\n

If len is greater or equal to the vector’s current length, this has\nno effect.

\n

The drain method can emulate truncate, but causes the excess\nelements to be returned instead of dropped.

\n

Note that this method has no effect on the allocated capacity\nof the vector.

\n
Examples
\n

Truncating a five element vector to two elements:

\n\n
let mut vec = vec![1, 2, 3, 4, 5];\nvec.truncate(2);\nassert_eq!(vec, [1, 2]);
\n

No truncation occurs when len is greater than the vector’s current\nlength:

\n\n
let mut vec = vec![1, 2, 3];\nvec.truncate(8);\nassert_eq!(vec, [1, 2, 3]);
\n

Truncating when len == 0 is equivalent to calling the clear\nmethod.

\n\n
let mut vec = vec![1, 2, 3];\nvec.truncate(0);\nassert_eq!(vec, []);
\n
1.7.0 · source

pub fn as_slice(&self) -> &[T]

Extracts a slice containing the entire vector.

\n

Equivalent to &s[..].

\n
Examples
\n
use std::io::{self, Write};\nlet buffer = vec![1, 2, 3, 5, 8];\nio::sink().write(buffer.as_slice()).unwrap();
\n
1.7.0 · source

pub fn as_mut_slice(&mut self) -> &mut [T]

Extracts a mutable slice of the entire vector.

\n

Equivalent to &mut s[..].

\n
Examples
\n
use std::io::{self, Read};\nlet mut buffer = vec![0; 3];\nio::repeat(0b101).read_exact(buffer.as_mut_slice()).unwrap();
\n
1.37.0 · source

pub fn as_ptr(&self) -> *const T

Returns a raw pointer to the vector’s buffer, or a dangling raw pointer\nvalid for zero sized reads if the vector didn’t allocate.

\n

The caller must ensure that the vector outlives the pointer this\nfunction returns, or else it will end up pointing to garbage.\nModifying the vector may cause its buffer to be reallocated,\nwhich would also make any pointers to it invalid.

\n

The caller must also ensure that the memory the pointer (non-transitively) points to\nis never written to (except inside an UnsafeCell) using this pointer or any pointer\nderived from it. If you need to mutate the contents of the slice, use as_mut_ptr.

\n

This method guarantees that for the purpose of the aliasing model, this method\ndoes not materialize a reference to the underlying slice, and thus the returned pointer\nwill remain valid when mixed with other calls to as_ptr and as_mut_ptr.\nNote that calling other methods that materialize mutable references to the slice,\nor mutable references to specific elements you are planning on accessing through this pointer,\nas well as writing to those elements, may still invalidate this pointer.\nSee the second example below for how this guarantee can be used.

\n
Examples
\n
let x = vec![1, 2, 4];\nlet x_ptr = x.as_ptr();\n\nunsafe {\n    for i in 0..x.len() {\n        assert_eq!(*x_ptr.add(i), 1 << i);\n    }\n}
\n

Due to the aliasing guarantee, the following code is legal:

\n\n
unsafe {\n    let mut v = vec![0, 1, 2];\n    let ptr1 = v.as_ptr();\n    let _ = ptr1.read();\n    let ptr2 = v.as_mut_ptr().offset(2);\n    ptr2.write(2);\n    // Notably, the write to `ptr2` did *not* invalidate `ptr1`\n    // because it mutated a different element:\n    let _ = ptr1.read();\n}
\n
1.37.0 · source

pub fn as_mut_ptr(&mut self) -> *mut T

Returns an unsafe mutable pointer to the vector’s buffer, or a dangling\nraw pointer valid for zero sized reads if the vector didn’t allocate.

\n

The caller must ensure that the vector outlives the pointer this\nfunction returns, or else it will end up pointing to garbage.\nModifying the vector may cause its buffer to be reallocated,\nwhich would also make any pointers to it invalid.

\n

This method guarantees that for the purpose of the aliasing model, this method\ndoes not materialize a reference to the underlying slice, and thus the returned pointer\nwill remain valid when mixed with other calls to as_ptr and as_mut_ptr.\nNote that calling other methods that materialize references to the slice,\nor references to specific elements you are planning on accessing through this pointer,\nmay still invalidate this pointer.\nSee the second example below for how this guarantee can be used.

\n
Examples
\n
// Allocate vector big enough for 4 elements.\nlet size = 4;\nlet mut x: Vec<i32> = Vec::with_capacity(size);\nlet x_ptr = x.as_mut_ptr();\n\n// Initialize elements via raw pointer writes, then set length.\nunsafe {\n    for i in 0..size {\n        *x_ptr.add(i) = i as i32;\n    }\n    x.set_len(size);\n}\nassert_eq!(&*x, &[0, 1, 2, 3]);
\n

Due to the aliasing guarantee, the following code is legal:

\n\n
unsafe {\n    let mut v = vec![0];\n    let ptr1 = v.as_mut_ptr();\n    ptr1.write(1);\n    let ptr2 = v.as_mut_ptr();\n    ptr2.write(2);\n    // Notably, the write to `ptr2` did *not* invalidate `ptr1`:\n    ptr1.write(3);\n}
\n
source

pub fn allocator(&self) -> &A

🔬This is a nightly-only experimental API. (allocator_api)

Returns a reference to the underlying allocator.

\n
1.0.0 · source

pub unsafe fn set_len(&mut self, new_len: usize)

Forces the length of the vector to new_len.

\n

This is a low-level operation that maintains none of the normal\ninvariants of the type. Normally changing the length of a vector\nis done using one of the safe operations instead, such as\ntruncate, resize, extend, or clear.

\n
Safety
\n
    \n
  • new_len must be less than or equal to capacity().
  • \n
  • The elements at old_len..new_len must be initialized.
  • \n
\n
Examples
\n

This method can be useful for situations in which the vector\nis serving as a buffer for other code, particularly over FFI:

\n\n
pub fn get_dictionary(&self) -> Option<Vec<u8>> {\n    // Per the FFI method's docs, "32768 bytes is always enough".\n    let mut dict = Vec::with_capacity(32_768);\n    let mut dict_length = 0;\n    // SAFETY: When `deflateGetDictionary` returns `Z_OK`, it holds that:\n    // 1. `dict_length` elements were initialized.\n    // 2. `dict_length` <= the capacity (32_768)\n    // which makes `set_len` safe to call.\n    unsafe {\n        // Make the FFI call...\n        let r = deflateGetDictionary(self.strm, dict.as_mut_ptr(), &mut dict_length);\n        if r == Z_OK {\n            // ...and update the length to what was initialized.\n            dict.set_len(dict_length);\n            Some(dict)\n        } else {\n            None\n        }\n    }\n}
\n

While the following example is sound, there is a memory leak since\nthe inner vectors were not freed prior to the set_len call:

\n\n
let mut vec = vec![vec![1, 0, 0],\n                   vec![0, 1, 0],\n                   vec![0, 0, 1]];\n// SAFETY:\n// 1. `old_len..0` is empty so no elements need to be initialized.\n// 2. `0 <= capacity` always holds whatever `capacity` is.\nunsafe {\n    vec.set_len(0);\n}
\n

Normally, here, one would use clear instead to correctly drop\nthe contents and thus not leak memory.

\n
1.0.0 · source

pub fn swap_remove(&mut self, index: usize) -> T

Removes an element from the vector and returns it.

\n

The removed element is replaced by the last element of the vector.

\n

This does not preserve ordering, but is O(1).\nIf you need to preserve the element order, use remove instead.

\n
Panics
\n

Panics if index is out of bounds.

\n
Examples
\n
let mut v = vec!["foo", "bar", "baz", "qux"];\n\nassert_eq!(v.swap_remove(1), "bar");\nassert_eq!(v, ["foo", "qux", "baz"]);\n\nassert_eq!(v.swap_remove(0), "foo");\nassert_eq!(v, ["baz", "qux"]);
\n
1.0.0 · source

pub fn insert(&mut self, index: usize, element: T)

Inserts an element at position index within the vector, shifting all\nelements after it to the right.

\n
Panics
\n

Panics if index > len.

\n
Examples
\n
let mut vec = vec![1, 2, 3];\nvec.insert(1, 4);\nassert_eq!(vec, [1, 4, 2, 3]);\nvec.insert(4, 5);\nassert_eq!(vec, [1, 4, 2, 3, 5]);
\n
1.0.0 · source

pub fn remove(&mut self, index: usize) -> T

Removes and returns the element at position index within the vector,\nshifting all elements after it to the left.

\n

Note: Because this shifts over the remaining elements, it has a\nworst-case performance of O(n). If you don’t need the order of elements\nto be preserved, use swap_remove instead. If you’d like to remove\nelements from the beginning of the Vec, consider using\nVecDeque::pop_front instead.

\n
Panics
\n

Panics if index is out of bounds.

\n
Examples
\n
let mut v = vec![1, 2, 3];\nassert_eq!(v.remove(1), 2);\nassert_eq!(v, [1, 3]);
\n
1.0.0 · source

pub fn retain<F>(&mut self, f: F)where\n F: FnMut(&T) -> bool,

Retains only the elements specified by the predicate.

\n

In other words, remove all elements e for which f(&e) returns false.\nThis method operates in place, visiting each element exactly once in the\noriginal order, and preserves the order of the retained elements.

\n
Examples
\n
let mut vec = vec![1, 2, 3, 4];\nvec.retain(|&x| x % 2 == 0);\nassert_eq!(vec, [2, 4]);
\n

Because the elements are visited exactly once in the original order,\nexternal state may be used to decide which elements to keep.

\n\n
let mut vec = vec![1, 2, 3, 4, 5];\nlet keep = [false, true, true, false, true];\nlet mut iter = keep.iter();\nvec.retain(|_| *iter.next().unwrap());\nassert_eq!(vec, [2, 3, 5]);
\n
1.61.0 · source

pub fn retain_mut<F>(&mut self, f: F)where\n F: FnMut(&mut T) -> bool,

Retains only the elements specified by the predicate, passing a mutable reference to it.

\n

In other words, remove all elements e such that f(&mut e) returns false.\nThis method operates in place, visiting each element exactly once in the\noriginal order, and preserves the order of the retained elements.

\n
Examples
\n
let mut vec = vec![1, 2, 3, 4];\nvec.retain_mut(|x| if *x <= 3 {\n    *x += 1;\n    true\n} else {\n    false\n});\nassert_eq!(vec, [2, 3, 4]);
\n
1.16.0 · source

pub fn dedup_by_key<F, K>(&mut self, key: F)where\n F: FnMut(&mut T) -> K,\n K: PartialEq,

Removes all but the first of consecutive elements in the vector that resolve to the same\nkey.

\n

If the vector is sorted, this removes all duplicates.

\n
Examples
\n
let mut vec = vec![10, 20, 21, 30, 20];\n\nvec.dedup_by_key(|i| *i / 10);\n\nassert_eq!(vec, [10, 20, 30, 20]);
\n
1.16.0 · source

pub fn dedup_by<F>(&mut self, same_bucket: F)where\n F: FnMut(&mut T, &mut T) -> bool,

Removes all but the first of consecutive elements in the vector satisfying a given equality\nrelation.

\n

The same_bucket function is passed references to two elements from the vector and\nmust determine if the elements compare equal. The elements are passed in opposite order\nfrom their order in the slice, so if same_bucket(a, b) returns true, a is removed.

\n

If the vector is sorted, this removes all duplicates.

\n
Examples
\n
let mut vec = vec!["foo", "bar", "Bar", "baz", "bar"];\n\nvec.dedup_by(|a, b| a.eq_ignore_ascii_case(b));\n\nassert_eq!(vec, ["foo", "bar", "baz", "bar"]);
\n
1.0.0 · source

pub fn push(&mut self, value: T)

Appends an element to the back of a collection.

\n
Panics
\n

Panics if the new capacity exceeds isize::MAX bytes.

\n
Examples
\n
let mut vec = vec![1, 2];\nvec.push(3);\nassert_eq!(vec, [1, 2, 3]);
\n
source

pub fn push_within_capacity(&mut self, value: T) -> Result<(), T>

🔬This is a nightly-only experimental API. (vec_push_within_capacity)

Appends an element if there is sufficient spare capacity, otherwise an error is returned\nwith the element.

\n

Unlike push this method will not reallocate when there’s insufficient capacity.\nThe caller should use reserve or try_reserve to ensure that there is enough capacity.

\n
Examples
\n

A manual, panic-free alternative to FromIterator:

\n\n
#![feature(vec_push_within_capacity)]\n\nuse std::collections::TryReserveError;\nfn from_iter_fallible<T>(iter: impl Iterator<Item=T>) -> Result<Vec<T>, TryReserveError> {\n    let mut vec = Vec::new();\n    for value in iter {\n        if let Err(value) = vec.push_within_capacity(value) {\n            vec.try_reserve(1)?;\n            // this cannot fail, the previous line either returned or added at least 1 free slot\n            let _ = vec.push_within_capacity(value);\n        }\n    }\n    Ok(vec)\n}\nassert_eq!(from_iter_fallible(0..100), Ok(Vec::from_iter(0..100)));
\n
1.0.0 · source

pub fn pop(&mut self) -> Option<T>

Removes the last element from a vector and returns it, or None if it\nis empty.

\n

If you’d like to pop the first element, consider using\nVecDeque::pop_front instead.

\n
Examples
\n
let mut vec = vec![1, 2, 3];\nassert_eq!(vec.pop(), Some(3));\nassert_eq!(vec, [1, 2]);
\n
1.4.0 · source

pub fn append(&mut self, other: &mut Vec<T, A>)

Moves all the elements of other into self, leaving other empty.

\n
Panics
\n

Panics if the new capacity exceeds isize::MAX bytes.

\n
Examples
\n
let mut vec = vec![1, 2, 3];\nlet mut vec2 = vec![4, 5, 6];\nvec.append(&mut vec2);\nassert_eq!(vec, [1, 2, 3, 4, 5, 6]);\nassert_eq!(vec2, []);
\n
1.6.0 · source

pub fn drain<R>(&mut self, range: R) -> Drain<'_, T, A>where\n R: RangeBounds<usize>,

Removes the specified range from the vector in bulk, returning all\nremoved elements as an iterator. If the iterator is dropped before\nbeing fully consumed, it drops the remaining removed elements.

\n

The returned iterator keeps a mutable borrow on the vector to optimize\nits implementation.

\n
Panics
\n

Panics if the starting point is greater than the end point or if\nthe end point is greater than the length of the vector.

\n
Leaking
\n

If the returned iterator goes out of scope without being dropped (due to\nmem::forget, for example), the vector may have lost and leaked\nelements arbitrarily, including elements outside the range.

\n
Examples
\n
let mut v = vec![1, 2, 3];\nlet u: Vec<_> = v.drain(1..).collect();\nassert_eq!(v, &[1]);\nassert_eq!(u, &[2, 3]);\n\n// A full range clears the vector, like `clear()` does\nv.drain(..);\nassert_eq!(v, &[]);
\n
1.0.0 · source

pub fn clear(&mut self)

Clears the vector, removing all values.

\n

Note that this method has no effect on the allocated capacity\nof the vector.

\n
Examples
\n
let mut v = vec![1, 2, 3];\n\nv.clear();\n\nassert!(v.is_empty());
\n
1.0.0 · source

pub fn len(&self) -> usize

Returns the number of elements in the vector, also referred to\nas its ‘length’.

\n
Examples
\n
let a = vec![1, 2, 3];\nassert_eq!(a.len(), 3);
\n
1.0.0 · source

pub fn is_empty(&self) -> bool

Returns true if the vector contains no elements.

\n
Examples
\n
let mut v = Vec::new();\nassert!(v.is_empty());\n\nv.push(1);\nassert!(!v.is_empty());
\n
1.4.0 · source

pub fn split_off(&mut self, at: usize) -> Vec<T, A>where\n A: Clone,

Splits the collection into two at the given index.

\n

Returns a newly allocated vector containing the elements in the range\n[at, len). After the call, the original vector will be left containing\nthe elements [0, at) with its previous capacity unchanged.

\n
Panics
\n

Panics if at > len.

\n
Examples
\n
let mut vec = vec![1, 2, 3];\nlet vec2 = vec.split_off(1);\nassert_eq!(vec, [1]);\nassert_eq!(vec2, [2, 3]);
\n
1.33.0 · source

pub fn resize_with<F>(&mut self, new_len: usize, f: F)where\n F: FnMut() -> T,

Resizes the Vec in-place so that len is equal to new_len.

\n

If new_len is greater than len, the Vec is extended by the\ndifference, with each additional slot filled with the result of\ncalling the closure f. The return values from f will end up\nin the Vec in the order they have been generated.

\n

If new_len is less than len, the Vec is simply truncated.

\n

This method uses a closure to create new values on every push. If\nyou’d rather Clone a given value, use Vec::resize. If you\nwant to use the Default trait to generate values, you can\npass Default::default as the second argument.

\n
Examples
\n
let mut vec = vec![1, 2, 3];\nvec.resize_with(5, Default::default);\nassert_eq!(vec, [1, 2, 3, 0, 0]);\n\nlet mut vec = vec![];\nlet mut p = 1;\nvec.resize_with(4, || { p *= 2; p });\nassert_eq!(vec, [2, 4, 8, 16]);
\n
1.47.0 · source

pub fn leak<'a>(self) -> &'a mut [T]where\n A: 'a,

Consumes and leaks the Vec, returning a mutable reference to the contents,\n&'a mut [T]. Note that the type T must outlive the chosen lifetime\n'a. If the type has only static references, or none at all, then this\nmay be chosen to be 'static.

\n

As of Rust 1.57, this method does not reallocate or shrink the Vec,\nso the leaked allocation may include unused capacity that is not part\nof the returned slice.

\n

This function is mainly useful for data that lives for the remainder of\nthe program’s life. Dropping the returned reference will cause a memory\nleak.

\n
Examples
\n

Simple usage:

\n\n
let x = vec![1, 2, 3];\nlet static_ref: &'static mut [usize] = x.leak();\nstatic_ref[0] += 1;\nassert_eq!(static_ref, &[2, 2, 3]);
\n
1.60.0 · source

pub fn spare_capacity_mut(&mut self) -> &mut [MaybeUninit<T>]

Returns the remaining spare capacity of the vector as a slice of\nMaybeUninit<T>.

\n

The returned slice can be used to fill the vector with data (e.g. by\nreading from a file) before marking the data as initialized using the\nset_len method.

\n
Examples
\n
// Allocate vector big enough for 10 elements.\nlet mut v = Vec::with_capacity(10);\n\n// Fill in the first 3 elements.\nlet uninit = v.spare_capacity_mut();\nuninit[0].write(0);\nuninit[1].write(1);\nuninit[2].write(2);\n\n// Mark the first 3 elements of the vector as being initialized.\nunsafe {\n    v.set_len(3);\n}\n\nassert_eq!(&v, &[0, 1, 2]);
\n
source

pub fn split_at_spare_mut(&mut self) -> (&mut [T], &mut [MaybeUninit<T>])

🔬This is a nightly-only experimental API. (vec_split_at_spare)

Returns vector content as a slice of T, along with the remaining spare\ncapacity of the vector as a slice of MaybeUninit<T>.

\n

The returned spare capacity slice can be used to fill the vector with data\n(e.g. by reading from a file) before marking the data as initialized using\nthe set_len method.

\n

Note that this is a low-level API, which should be used with care for\noptimization purposes. If you need to append data to a Vec\nyou can use push, extend, extend_from_slice,\nextend_from_within, insert, append, resize or\nresize_with, depending on your exact needs.

\n
Examples
\n
#![feature(vec_split_at_spare)]\n\nlet mut v = vec![1, 1, 2];\n\n// Reserve additional space big enough for 10 elements.\nv.reserve(10);\n\nlet (init, uninit) = v.split_at_spare_mut();\nlet sum = init.iter().copied().sum::<u32>();\n\n// Fill in the next 4 elements.\nuninit[0].write(sum);\nuninit[1].write(sum * 2);\nuninit[2].write(sum * 3);\nuninit[3].write(sum * 4);\n\n// Mark the 4 elements of the vector as being initialized.\nunsafe {\n    let len = v.len();\n    v.set_len(len + 4);\n}\n\nassert_eq!(&v, &[1, 1, 2, 4, 8, 12, 16]);
\n
",0,"libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
source§

impl<T, A> Vec<T, A>where\n T: Clone,\n A: Allocator,

1.5.0 · source

pub fn resize(&mut self, new_len: usize, value: T)

Resizes the Vec in-place so that len is equal to new_len.

\n

If new_len is greater than len, the Vec is extended by the\ndifference, with each additional slot filled with value.\nIf new_len is less than len, the Vec is simply truncated.

\n

This method requires T to implement Clone,\nin order to be able to clone the passed value.\nIf you need more flexibility (or want to rely on Default instead of\nClone), use Vec::resize_with.\nIf you only need to resize to a smaller size, use Vec::truncate.

\n
Examples
\n
let mut vec = vec!["hello"];\nvec.resize(3, "world");\nassert_eq!(vec, ["hello", "world", "world"]);\n\nlet mut vec = vec![1, 2, 3, 4];\nvec.resize(2, 0);\nassert_eq!(vec, [1, 2]);
\n
1.6.0 · source

pub fn extend_from_slice(&mut self, other: &[T])

Clones and appends all elements in a slice to the Vec.

\n

Iterates over the slice other, clones each element, and then appends\nit to this Vec. The other slice is traversed in-order.

\n

Note that this function is same as extend except that it is\nspecialized to work with slices instead. If and when Rust gets\nspecialization this function will likely be deprecated (but still\navailable).

\n
Examples
\n
let mut vec = vec![1];\nvec.extend_from_slice(&[2, 3, 4]);\nassert_eq!(vec, [1, 2, 3, 4]);
\n
1.53.0 · source

pub fn extend_from_within<R>(&mut self, src: R)where\n R: RangeBounds<usize>,

Copies elements from src range to the end of the vector.

\n
Panics
\n

Panics if the starting point is greater than the end point or if\nthe end point is greater than the length of the vector.

\n
Examples
\n
let mut vec = vec![0, 1, 2, 3, 4];\n\nvec.extend_from_within(2..);\nassert_eq!(vec, [0, 1, 2, 3, 4, 2, 3, 4]);\n\nvec.extend_from_within(..2);\nassert_eq!(vec, [0, 1, 2, 3, 4, 2, 3, 4, 0, 1]);\n\nvec.extend_from_within(4..8);\nassert_eq!(vec, [0, 1, 2, 3, 4, 2, 3, 4, 0, 1, 4, 2, 3, 4]);
\n
",0,"libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
source§

impl<T, A> Vec<T, A>where\n T: PartialEq,\n A: Allocator,

1.0.0 · source

pub fn dedup(&mut self)

Removes consecutive repeated elements in the vector according to the\nPartialEq trait implementation.

\n

If the vector is sorted, this removes all duplicates.

\n
Examples
\n
let mut vec = vec![1, 2, 2, 3, 2];\n\nvec.dedup();\n\nassert_eq!(vec, [1, 2, 3, 2]);
\n
",0,"libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
source§

impl<T, A> Vec<T, A>where\n A: Allocator,

1.21.0 · source

pub fn splice<R, I>(\n &mut self,\n range: R,\n replace_with: I\n) -> Splice<'_, <I as IntoIterator>::IntoIter, A>where\n R: RangeBounds<usize>,\n I: IntoIterator<Item = T>,

Creates a splicing iterator that replaces the specified range in the vector\nwith the given replace_with iterator and yields the removed items.\nreplace_with does not need to be the same length as range.

\n

range is removed even if the iterator is not consumed until the end.

\n

It is unspecified how many elements are removed from the vector\nif the Splice value is leaked.

\n

The input iterator replace_with is only consumed when the Splice value is dropped.

\n

This is optimal if:

\n
    \n
  • The tail (elements in the vector after range) is empty,
  • \n
  • or replace_with yields fewer or equal elements than range’s length
  • \n
  • or the lower bound of its size_hint() is exact.
  • \n
\n

Otherwise, a temporary vector is allocated and the tail is moved twice.

\n
Panics
\n

Panics if the starting point is greater than the end point or if\nthe end point is greater than the length of the vector.

\n
Examples
\n
let mut v = vec![1, 2, 3, 4];\nlet new = [7, 8, 9];\nlet u: Vec<_> = v.splice(1..3, new).collect();\nassert_eq!(v, &[1, 7, 8, 9, 4]);\nassert_eq!(u, &[2, 3]);
\n
source

pub fn extract_if<F>(&mut self, filter: F) -> ExtractIf<'_, T, F, A>where\n F: FnMut(&mut T) -> bool,

🔬This is a nightly-only experimental API. (extract_if)

Creates an iterator which uses a closure to determine if an element should be removed.

\n

If the closure returns true, then the element is removed and yielded.\nIf the closure returns false, the element will remain in the vector and will not be yielded\nby the iterator.

\n

If the returned ExtractIf is not exhausted, e.g. because it is dropped without iterating\nor the iteration short-circuits, then the remaining elements will be retained.\nUse retain with a negated predicate if you do not need the returned iterator.

\n

Using this method is equivalent to the following code:

\n\n
let mut i = 0;\nwhile i < vec.len() {\n    if some_predicate(&mut vec[i]) {\n        let val = vec.remove(i);\n        // your code here\n    } else {\n        i += 1;\n    }\n}\n
\n

But extract_if is easier to use. extract_if is also more efficient,\nbecause it can backshift the elements of the array in bulk.

\n

Note that extract_if also lets you mutate every element in the filter closure,\nregardless of whether you choose to keep or remove it.

\n
Examples
\n

Splitting an array into evens and odds, reusing the original allocation:

\n\n
#![feature(extract_if)]\nlet mut numbers = vec![1, 2, 3, 4, 5, 6, 8, 9, 11, 13, 14, 15];\n\nlet evens = numbers.extract_if(|x| *x % 2 == 0).collect::<Vec<_>>();\nlet odds = numbers;\n\nassert_eq!(evens, vec![2, 4, 6, 8, 14]);\nassert_eq!(odds, vec![1, 3, 5, 9, 11, 13, 15]);
\n
",0,"libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.0.0 · source§

impl<T, I, A> Index<I> for Vec<T, A>where\n I: SliceIndex<[T]>,\n A: Allocator,

§

type Output = <I as SliceIndex<[T]>>::Output

The returned type after indexing.
source§

fn index(&self, index: I) -> &<Vec<T, A> as Index<I>>::Output

Performs the indexing (container[index]) operation. Read more
","Index","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.0.0 · source§

impl<T, A> Deref for Vec<T, A>where\n A: Allocator,

§

type Target = [T]

The resulting type after dereferencing.
source§

fn deref(&self) -> &[T]

Dereferences the value.
","Deref","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.2.0 · source§

impl<'a, T, A> Extend<&'a T> for Vec<T, A>where\n T: Copy + 'a,\n A: Allocator,

Extend implementation that copies elements out of references before pushing them onto the Vec.

\n

This implementation is specialized for slice iterators, where it uses copy_from_slice to\nappend the entire slice at once.

\n
source§

fn extend<I>(&mut self, iter: I)where\n I: IntoIterator<Item = &'a T>,

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

fn extend_one(&mut self, _: &'a T)

🔬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
","Extend<&'a T>","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.0.0 · source§

impl<T, A> Extend<T> for Vec<T, A>where\n A: Allocator,

source§

fn extend<I>(&mut self, iter: I)where\n I: IntoIterator<Item = T>,

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

fn extend_one(&mut self, item: T)

🔬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
","Extend","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.0.0 · source§

impl<T, A> Ord for Vec<T, A>where\n T: Ord,\n A: Allocator,

Implements ordering of vectors, lexicographically.

\n
source§

fn cmp(&self, other: &Vec<T, A>) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Selfwhere\n Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Selfwhere\n Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Selfwhere\n Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
","Ord","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.0.0 · source§

impl<T, U, A, const N: usize> PartialEq<[U; N]> for Vec<T, A>where\n A: Allocator,\n T: PartialEq<U>,

source§

fn eq(&self, other: &[U; N]) -> bool

This method tests for self and other values to be equal, and is used\nby ==.
source§

fn ne(&self, other: &[U; N]) -> bool

This method tests for !=. The default implementation is almost always\nsufficient, and should not be overridden without very good reason.
","PartialEq<[U; N]>","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.0.0 · source§

impl<T, U, A> PartialEq<&[U]> for Vec<T, A>where\n A: Allocator,\n T: PartialEq<U>,

source§

fn eq(&self, other: &&[U]) -> bool

This method tests for self and other values to be equal, and is used\nby ==.
source§

fn ne(&self, other: &&[U]) -> bool

This method tests for !=. The default implementation is almost always\nsufficient, and should not be overridden without very good reason.
","PartialEq<&[U]>","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.0.0 · source§

impl<T, U, A, const N: usize> PartialEq<&[U; N]> for Vec<T, A>where\n A: Allocator,\n T: PartialEq<U>,

source§

fn eq(&self, other: &&[U; N]) -> bool

This method tests for self and other values to be equal, and is used\nby ==.
source§

fn ne(&self, other: &&[U; N]) -> bool

This method tests for !=. The default implementation is almost always\nsufficient, and should not be overridden without very good reason.
","PartialEq<&[U; N]>","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.48.0 · source§

impl<T, U, A> PartialEq<[U]> for Vec<T, A>where\n A: Allocator,\n T: PartialEq<U>,

source§

fn eq(&self, other: &[U]) -> bool

This method tests for self and other values to be equal, and is used\nby ==.
source§

fn ne(&self, other: &[U]) -> bool

This method tests for !=. The default implementation is almost always\nsufficient, and should not be overridden without very good reason.
","PartialEq<[U]>","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.0.0 · source§

impl<T, U, A1, A2> PartialEq<Vec<U, A2>> for Vec<T, A1>where\n A1: Allocator,\n A2: Allocator,\n T: PartialEq<U>,

source§

fn eq(&self, other: &Vec<U, A2>) -> bool

This method tests for self and other values to be equal, and is used\nby ==.
source§

fn ne(&self, other: &Vec<U, A2>) -> bool

This method tests for !=. The default implementation is almost always\nsufficient, and should not be overridden without very good reason.
","PartialEq>","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.0.0 · source§

impl<T, U, A> PartialEq<&mut [U]> for Vec<T, A>where\n A: Allocator,\n T: PartialEq<U>,

source§

fn eq(&self, other: &&mut [U]) -> bool

This method tests for self and other values to be equal, and is used\nby ==.
source§

fn ne(&self, other: &&mut [U]) -> bool

This method tests for !=. The default implementation is almost always\nsufficient, and should not be overridden without very good reason.
","PartialEq<&mut [U]>","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.0.0 · source§

impl<T, A> Drop for Vec<T, A>where\n A: Allocator,

source§

fn drop(&mut self)

Executes the destructor for this type. Read more
","Drop","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.0.0 · source§

impl<T, A1, A2> PartialOrd<Vec<T, A2>> for Vec<T, A1>where\n T: PartialOrd,\n A1: Allocator,\n A2: Allocator,

Implements comparison of vectors, lexicographically.

\n
source§

fn partial_cmp(&self, other: &Vec<T, A2>) -> 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 <=\noperator. 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 >=\noperator. Read more
","PartialOrd>","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.0.0 · source§

impl<T, A> Hash for Vec<T, A>where\n T: Hash,\n A: Allocator,

The hash of a vector is the same as that of the corresponding slice,\nas required by the core::borrow::Borrow implementation.

\n\n
use std::hash::BuildHasher;\n\nlet b = std::collections::hash_map::RandomState::new();\nlet v: Vec<u8> = vec![0xa8, 0x3c, 0x09];\nlet s: &[u8] = &[0xa8, 0x3c, 0x09];\nassert_eq!(b.hash_one(v), b.hash_one(s));
\n
source§

fn hash<H>(&self, state: &mut H)where\n H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)where\n H: Hasher,\n Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
","Hash","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.5.0 · source§

impl<T, A> AsMut<[T]> for Vec<T, A>where\n A: Allocator,

source§

fn as_mut(&mut self) -> &mut [T]

Converts this type into a mutable reference of the (usually inferred) input type.
","AsMut<[T]>","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.5.0 · source§

impl<T, A> AsMut<Vec<T, A>> for Vec<T, A>where\n A: Allocator,

source§

fn as_mut(&mut self) -> &mut Vec<T, A>

Converts this type into a mutable reference of the (usually inferred) input type.
","AsMut>","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.0.0 · source§

impl<T, A> Borrow<[T]> for Vec<T, A>where\n A: Allocator,

source§

fn borrow(&self) -> &[T]

Immutably borrows from an owned value. Read more
","Borrow<[T]>","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.0.0 · source§

impl<T, A> DerefMut for Vec<T, A>where\n A: Allocator,

source§

fn deref_mut(&mut self) -> &mut [T]

Mutably dereferences the value.
","DerefMut","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.0.0 · source§

impl<T> Default for Vec<T>

source§

fn default() -> Vec<T>

Creates an empty Vec<T>.

\n

The vector will not allocate until elements are pushed onto it.

\n
","Default","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.0.0 · source§

impl<T, A> AsRef<Vec<T, A>> for Vec<T, A>where\n A: Allocator,

source§

fn as_ref(&self) -> &Vec<T, A>

Converts this type into a shared reference of the (usually inferred) input type.
","AsRef>","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.0.0 · source§

impl<T, A> AsRef<[T]> for Vec<T, A>where\n A: Allocator,

source§

fn as_ref(&self) -> &[T]

Converts this type into a shared reference of the (usually inferred) input type.
","AsRef<[T]>","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.0.0 · source§

impl<T, A> IntoIterator for Vec<T, A>where\n A: Allocator,

source§

fn into_iter(self) -> <Vec<T, A> as IntoIterator>::IntoIter

Creates a consuming iterator, that is, one that moves each value out of\nthe vector (from start to end). The vector cannot be used after calling\nthis.

\n
Examples
\n
let v = vec!["a".to_string(), "b".to_string()];\nlet mut v_iter = v.into_iter();\n\nlet first_element: Option<String> = v_iter.next();\n\nassert_eq!(first_element, Some("a".to_string()));\nassert_eq!(v_iter.next(), Some("b".to_string()));\nassert_eq!(v_iter.next(), None);
\n
§

type Item = T

The type of the elements being iterated over.
§

type IntoIter = IntoIter<T, A>

Which kind of iterator are we turning this into?
","IntoIterator","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.0.0 · source§

impl<T, A> BorrowMut<[T]> for Vec<T, A>where\n A: Allocator,

source§

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

Mutably borrows from an owned value. Read more
","BorrowMut<[T]>","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.0.0 · source§

impl<T, I, A> IndexMut<I> for Vec<T, A>where\n I: SliceIndex<[T]>,\n A: Allocator,

source§

fn index_mut(&mut self, index: I) -> &mut <Vec<T, A> as Index<I>>::Output

Performs the mutable indexing (container[index]) operation. Read more
","IndexMut","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.18.0 · source§

impl<T, A> From<Box<[T], A>> for Vec<T, A>where\n A: Allocator,

source§

fn from(s: Box<[T], A>) -> Vec<T, A>

Convert a boxed slice into a vector by transferring ownership of\nthe existing heap allocation.

\n
Examples
\n
let b: Box<[i32]> = vec![1, 2, 3].into_boxed_slice();\nassert_eq!(Vec::from(b), vec![1, 2, 3]);
\n
","From>","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.14.0 · source§

impl<'a, T> From<Cow<'a, [T]>> for Vec<T>where\n [T]: ToOwned<Owned = Vec<T>>,

source§

fn from(s: Cow<'a, [T]>) -> Vec<T>

Convert a clone-on-write slice into a vector.

\n

If s already owns a Vec<T>, it will be returned directly.\nIf s is borrowing a slice, a new Vec<T> will be allocated and\nfilled by cloning s’s items into it.

\n
Examples
\n
let o: Cow<'_, [i32]> = Cow::Owned(vec![1, 2, 3]);\nlet b: Cow<'_, [i32]> = Cow::Borrowed(&[1, 2, 3]);\nassert_eq!(Vec::from(o), Vec::from(b));
\n
","From>","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.74.0 · source§

impl<T, const N: usize> From<&mut [T; N]> for Vec<T>where\n T: Clone,

source§

fn from(s: &mut [T; N]) -> Vec<T>

Allocate a Vec<T> and fill it by cloning s’s items.

\n
Examples
\n
assert_eq!(Vec::from(&mut [1, 2, 3]), vec![1, 2, 3]);
\n
","From<&mut [T; N]>","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.10.0 · source§

impl<T, A> From<VecDeque<T, A>> for Vec<T, A>where\n A: Allocator,

source§

fn from(other: VecDeque<T, A>) -> Vec<T, A>

Turn a VecDeque<T> into a Vec<T>.

\n

This never needs to re-allocate, but does need to do O(n) data movement if\nthe circular buffer doesn’t happen to be at the beginning of the allocation.

\n
Examples
\n
use std::collections::VecDeque;\n\n// This one is *O*(1).\nlet deque: VecDeque<_> = (1..5).collect();\nlet ptr = deque.as_slices().0.as_ptr();\nlet vec = Vec::from(deque);\nassert_eq!(vec, [1, 2, 3, 4]);\nassert_eq!(vec.as_ptr(), ptr);\n\n// This one needs data rearranging.\nlet mut deque: VecDeque<_> = (1..5).collect();\ndeque.push_front(9);\ndeque.push_front(8);\nlet ptr = deque.as_slices().1.as_ptr();\nlet vec = Vec::from(deque);\nassert_eq!(vec, [8, 9, 1, 2, 3, 4]);\nassert_eq!(vec.as_ptr(), ptr);
\n
","From>","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.19.0 · source§

impl<T> From<&mut [T]> for Vec<T>where\n T: Clone,

source§

fn from(s: &mut [T]) -> Vec<T>

Allocate a Vec<T> and fill it by cloning s’s items.

\n
Examples
\n
assert_eq!(Vec::from(&mut [1, 2, 3][..]), vec![1, 2, 3]);
\n
","From<&mut [T]>","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.5.0 · source§

impl<T, A> From<BinaryHeap<T, A>> for Vec<T, A>where\n A: Allocator,

source§

fn from(heap: BinaryHeap<T, A>) -> Vec<T, A>

Converts a BinaryHeap<T> into a Vec<T>.

\n

This conversion requires no data movement or allocation, and has\nconstant time complexity.

\n
","From>","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.0.0 · source§

impl<T> From<&[T]> for Vec<T>where\n T: Clone,

source§

fn from(s: &[T]) -> Vec<T>

Allocate a Vec<T> and fill it by cloning s’s items.

\n
Examples
\n
assert_eq!(Vec::from(&[1, 2, 3][..]), vec![1, 2, 3]);
\n
","From<&[T]>","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.44.0 · source§

impl<T, const N: usize> From<[T; N]> for Vec<T>

source§

fn from(s: [T; N]) -> Vec<T>

Allocate a Vec<T> and move s’s items into it.

\n
Examples
\n
assert_eq!(Vec::from([1, 2, 3]), vec![1, 2, 3]);
\n
","From<[T; N]>","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.74.0 · source§

impl<T, const N: usize> From<&[T; N]> for Vec<T>where\n T: Clone,

source§

fn from(s: &[T; N]) -> Vec<T>

Allocate a Vec<T> and fill it by cloning s’s items.

\n
Examples
\n
assert_eq!(Vec::from(&[1, 2, 3]), vec![1, 2, 3]);
\n
","From<&[T; N]>","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.0.0 · source§

impl<T, A> Eq for Vec<T, A>where\n T: Eq,\n A: Allocator,

","Eq","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.0.0 · source§

impl<T, A> Debug for Vec<T, A>where\n T: Debug,\n A: Allocator,

source§

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

Formats the value using the given formatter. Read more
","Debug","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.0.0 · source§

impl<T, A> Clone for Vec<T, A>where\n T: Clone,\n A: Allocator + Clone,

source§

fn clone(&self) -> Vec<T, A>

Returns a copy of the value. Read more
source§

fn clone_from(&mut self, other: &Vec<T, A>)

Performs copy-assignment from source. Read more
","Clone","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
1.0.0 · source§

impl<T> FromIterator<T> for Vec<T>

source§

fn from_iter<I>(iter: I) -> Vec<T>where\n I: IntoIterator<Item = T>,

Creates a value from an iterator. Read more
","FromIterator","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
§

impl<T> Index<SmallIndex> for Vec<T>

§

type Output = T

The returned type after indexing.
§

fn index(&self, index: SmallIndex) -> &T

Performs the indexing (container[index]) operation. Read more
","Index","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
§

impl<T> Index<StateID> for Vec<T>

§

type Output = T

The returned type after indexing.
§

fn index(&self, index: StateID) -> &T

Performs the indexing (container[index]) operation. Read more
","Index","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
§

impl<T> Index<PatternID> for Vec<T>

§

type Output = T

The returned type after indexing.
§

fn index(&self, index: PatternID) -> &T

Performs the indexing (container[index]) operation. Read more
","Index","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
§

impl<T> IndexMut<StateID> for Vec<T>

§

fn index_mut(&mut self, index: StateID) -> &mut T

Performs the mutable indexing (container[index]) operation. Read more
","IndexMut","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
§

impl<T> IndexMut<SmallIndex> for Vec<T>

§

fn index_mut(&mut self, index: SmallIndex) -> &mut T

Performs the mutable indexing (container[index]) operation. Read more
","IndexMut","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
§

impl<T> IndexMut<PatternID> for Vec<T>

§

fn index_mut(&mut self, index: PatternID) -> &mut T

Performs the mutable indexing (container[index]) operation. Read more
","IndexMut","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
§

impl<T> Index<SmallIndex> for Vec<T>

§

type Output = T

The returned type after indexing.
§

fn index(&self, index: SmallIndex) -> &T

Performs the indexing (container[index]) operation. Read more
","Index","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
§

impl<T> Index<StateID> for Vec<T>

§

type Output = T

The returned type after indexing.
§

fn index(&self, index: StateID) -> &T

Performs the indexing (container[index]) operation. Read more
","Index","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
§

impl<T> Index<PatternID> for Vec<T>

§

type Output = T

The returned type after indexing.
§

fn index(&self, index: PatternID) -> &T

Performs the indexing (container[index]) operation. Read more
","Index","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
§

impl<T> IndexMut<SmallIndex> for Vec<T>

§

fn index_mut(&mut self, index: SmallIndex) -> &mut T

Performs the mutable indexing (container[index]) operation. Read more
","IndexMut","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
§

impl<T> IndexMut<PatternID> for Vec<T>

§

fn index_mut(&mut self, index: PatternID) -> &mut T

Performs the mutable indexing (container[index]) operation. Read more
","IndexMut","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
§

impl<T> IndexMut<StateID> for Vec<T>

§

fn index_mut(&mut self, index: StateID) -> &mut T

Performs the mutable indexing (container[index]) operation. Read more
","IndexMut","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
source§

impl<T> Serialize for Vec<T>where\n T: Serialize,

source§

fn serialize<S>(\n &self,\n serializer: S\n) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>where\n S: Serializer,

Serialize this value into the given Serde serializer. Read more
","Serialize","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
source§

impl<'de, T, E> IntoDeserializer<'de, E> for Vec<T>where\n T: IntoDeserializer<'de, E>,\n E: Error,

§

type Deserializer = SeqDeserializer<<Vec<T> as IntoIterator>::IntoIter, E>

The type of the deserializer being converted into.
source§

fn into_deserializer(self) -> <Vec<T> as IntoDeserializer<'de, E>>::Deserializer

Convert this value into a deserializer.
","IntoDeserializer<'de, E>","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
source§

impl<'de, T> Deserialize<'de> for Vec<T>where\n T: Deserialize<'de>,

source§

fn deserialize<D>(\n deserializer: D\n) -> Result<Vec<T>, <D as Deserializer<'de>>::Error>where\n D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
","Deserialize<'de>","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
§

impl<T> Accumulate<T> for Vec<T>

§

fn initial(capacity: Option<usize>) -> Vec<T>

Create a new Extend of the correct type
§

fn accumulate(&mut self, acc: T)

Accumulate the input into an accumulator
","Accumulate","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"],["
§

impl<'i, T> Accumulate<&'i [T]> for Vec<T>where\n T: Clone,

§

fn initial(capacity: Option<usize>) -> Vec<T>

Create a new Extend of the correct type
§

fn accumulate(&mut self, acc: &'i [T])

Accumulate the input into an accumulator
","Accumulate<&'i [T]>","libgir::analysis::child_properties::ChildProperties","libgir::analysis::trampolines::Trampolines"]] };if (window.register_type_impls) {window.register_type_impls(type_impls);} else {window.pending_type_impls = type_impls;}})() \ No newline at end of file