rusty_snek_gaem/target/doc/search-index.js

89 lines
2.3 MiB
JavaScript
Raw Permalink Normal View History

2018-10-28 21:14:05 -05:00
var N = null;var searchIndex = {};
searchIndex["adler32"]={"doc":"A minimal implementation of Adler32 for Rust.","items":[[3,"RollingAdler32","adler32","A rolling version of the Adler32 hash, which can 'forget' past bytes.",N,N],[5,"adler32","","Consume a Read object and returns the Adler32 hash.",N,[[["r"]],["result",["u32"]]]],[11,"new","","Creates an empty Adler32 context (with hash 1).",0,[[],["rollingadler32"]]],[11,"from_value","","Creates an Adler32 context with the given initial value.",0,[[["u32"]],["rollingadler32"]]],[11,"from_buffer","","Convenience function initializing a context from the hash of a buffer.",0,N],[11,"hash","","Returns the current hash.",0,[[["self"]],["u32"]]],[11,"remove","","Removes the given `byte` that was fed to the algorithm `size` bytes ago.",0,[[["self"],["usize"],["u8"]]]],[11,"update","","Feeds a new `byte` to the algorithm to update the hash.",0,[[["self"],["u8"]]]],[11,"update_buffer","","Feeds a vector of bytes to the algorithm to update the hash.",0,N]],"paths":[[3,"RollingAdler32"]]};
searchIndex["arrayvec"]={"doc":"arrayvec provides the types `ArrayVec` and `ArrayString`: array-backed vector and string types, which store their contents inline.","items":[[3,"ArrayString","arrayvec","A string with a fixed capacity.",N,N],[3,"CapacityError","","Error value indicating insufficient capacity",N,N],[3,"ArrayVec","","A vector with a fixed capacity.",N,N],[3,"IntoIter","","By-value iterator for `ArrayVec`.",N,N],[3,"Drain","","A draining iterator for `ArrayVec`.",N,N],[11,"default","","Return an empty `ArrayString`",0,[[],["arraystring"]]],[11,"new","","Create a new empty `ArrayString`.",0,[[],["arraystring"]]],[11,"from","","Create a new `ArrayString` from a `str`.",0,[[["str"]],["result",["capacityerror"]]]],[11,"from_byte_string","","Create a new `ArrayString` from a byte string literal.",0,[[["a"]],["result",["utf8error"]]]],[11,"capacity","","Return the capacity of the `ArrayString`.",0,[[["self"]],["usize"]]],[11,"is_full","","Return if the `ArrayString` is completely filled.",0,[[["self"]],["bool"]]],[11,"push","","Adds the given char to the end of the string.",0,[[["self"],["char"]]]],[11,"try_push","","Adds the given char to the end of the string.",0,[[["self"],["char"]],["result",["capacityerror"]]]],[11,"push_str","","Adds the given string slice to the end of the string.",0,[[["self"],["str"]]]],[11,"try_push_str","","Adds the given string slice to the end of the string.",0,[[["self"],["str"]],["result",["capacityerror"]]]],[11,"pop","","Removes the last character from the string and returns it.",0,[[["self"]],["option",["char"]]]],[11,"truncate","","Shortens this `ArrayString` to the specified length.",0,[[["self"],["usize"]]]],[11,"remove","","Removes a `char` from this `ArrayString` at a byte position and returns it.",0,[[["self"],["usize"]],["char"]]],[11,"clear","","Make the string empty.",0,[[["self"]]]],[11,"set_len","","Set the stringss length.",0,[[["self"],["usize"]]]],[11,"as_str","","Return a string slice of the whole `ArrayString`.",0,[[["self"]],["str"]]],[11,"deref","","",0,[[["self"]],["str"]]],[11,"deref_mut","","",0,[[["self"]],["str"]]],[11,"eq","","",0,[[["self"],["self"]],["bool"]]],[11,"eq","","",0,[[["self"],["str"]],["bool"]]],[11,"hash","","",0,[[["self"],["h"]]]],[11,"borrow","","",0,[[["self"]],["str"]]],[11,"as_ref","","",0,[[["self"]],["str"]]],[11,"fmt","","",0,[[["self"],["formatter"]],["result"]]],[11,"fmt","","",0,[[["self"],["formatter"]],["result"]]],[11,"write_char","","",0,[[["self"],["char"]],["result"]]],[11,"write_str","","",0,[[["self"],["str"]],["result"]]],[11,"clone","","",0,[[["self"]],["arraystring"]]],[11,"clone_from","","",0,[[["self"],["self"]]]],[11,"partial_cmp","","",0,[[["self"],["self"]],["option",["ordering"]]]],[11,"lt","","",0,[[["self"],["self"]],["bool"]]],[11,"le","","",0,[[["self"],["self"]],["bool"]]],[11,"gt","","",0,[[["self"],["self"]],["bool"]]],[11,"ge","","",0,[[["self"],["self"]],["bool"]]],[11,"partial_cmp","","",0,[[["self"],["str"]],["option",["ordering"]]]],[11,"lt","","",0,[[["self"],["str"]],["bool"]]],[11,"le","","",0,[[["self"],["str"]],["bool"]]],[11,"gt","","",0,[[["self"],["str"]],["bool"]]],[11,"ge","","",0,[[["self"],["str"]],["bool"]]],[11,"cmp","","",0,[[["self"],["self"]],["ordering"]]],[11,"clone","","",1,[[["self"]],["capacityerror"]]],[11,"cmp","","",1,[[["self"],["capacityerror"]],["ordering"]]],[11,"eq","","",1,[[["self"],["capacityerror"]],["bool"]]],[11,"ne","","",1,[[["self"],["capacityerror"]],["bool"]]],[11,"partial_cmp","","",1,[[["self"],["capacityerror"]],["option",["ordering"]]]],[11,"lt","","",1,[[["self"],["capacityerror"]],["bool"]]],[11,"le","","",1,[[["self"],["capacityerror"]],["bool"]]],[11,"gt","","",1,[[["self"],["capacityerror"]],["bool"]]],[11,"ge","","",1,[[["self"],["capacityerror"]],["bool"]]],[11,"new","","Create a new `CapacityError` from `element`.",1,[[["t"]],["capacityerror"]]],[11,"element","","Extract the overflowing element",1,[[["self"]],["t"]]],[11,"simplify","","Convert into a `CapacityError` that does not carry an element.",1,[[["self"]],["capacityerror"]]],[11,"descript
searchIndex["bitflags"]={"doc":"A typesafe bitmask flag generator useful for sets of C-style bitmask flags. It can be used for creating typesafe wrappers around C APIs.","items":[[14,"bitflags","bitflags","The macro used to generate the flag structure.",N,N]],"paths":[]};
searchIndex["byteorder"]={"doc":"This crate provides convenience methods for encoding and decoding numbers in either [big-endian or little-endian order].","items":[[4,"BigEndian","byteorder","Defines big-endian serialization.",N,N],[4,"LittleEndian","","Defines little-endian serialization.",N,N],[6,"BE","","A type alias for [`BigEndian`].",N,N],[6,"LE","","A type alias for [`LittleEndian`].",N,N],[6,"NetworkEndian","","Defines network byte order serialization.",N,N],[6,"NativeEndian","","Defines system native-endian serialization.",N,N],[8,"ReadBytesExt","","Extends [`Read`] with methods for reading numbers. (For `std::io`.)",N,N],[11,"read_u8","","Reads an unsigned 8 bit integer from the underlying reader.",0,[[["self"]],["result",["u8"]]]],[11,"read_i8","","Reads a signed 8 bit integer from the underlying reader.",0,[[["self"]],["result",["i8"]]]],[11,"read_u16","","Reads an unsigned 16 bit integer from the underlying reader.",0,[[["self"]],["result",["u16"]]]],[11,"read_i16","","Reads a signed 16 bit integer from the underlying reader.",0,[[["self"]],["result",["i16"]]]],[11,"read_u24","","Reads an unsigned 24 bit integer from the underlying reader.",0,[[["self"]],["result",["u32"]]]],[11,"read_i24","","Reads a signed 24 bit integer from the underlying reader.",0,[[["self"]],["result",["i32"]]]],[11,"read_u32","","Reads an unsigned 32 bit integer from the underlying reader.",0,[[["self"]],["result",["u32"]]]],[11,"read_i32","","Reads a signed 32 bit integer from the underlying reader.",0,[[["self"]],["result",["i32"]]]],[11,"read_u48","","Reads an unsigned 48 bit integer from the underlying reader.",0,[[["self"]],["result",["u64"]]]],[11,"read_i48","","Reads a signed 48 bit integer from the underlying reader.",0,[[["self"]],["result",["i64"]]]],[11,"read_u64","","Reads an unsigned 64 bit integer from the underlying reader.",0,[[["self"]],["result",["u64"]]]],[11,"read_i64","","Reads a signed 64 bit integer from the underlying reader.",0,[[["self"]],["result",["i64"]]]],[11,"read_uint","","Reads an unsigned n-bytes integer from the underlying reader.",0,[[["self"],["usize"]],["result",["u64"]]]],[11,"read_int","","Reads a signed n-bytes integer from the underlying reader.",0,[[["self"],["usize"]],["result",["i64"]]]],[11,"read_f32","","Reads a IEEE754 single-precision (4 bytes) floating point number from the underlying reader.",0,[[["self"]],["result",["f32"]]]],[11,"read_f64","","Reads a IEEE754 double-precision (8 bytes) floating point number from the underlying reader.",0,[[["self"]],["result",["f64"]]]],[11,"read_u16_into","","Reads a sequence of unsigned 16 bit integers from the underlying reader.",0,N],[11,"read_u32_into","","Reads a sequence of unsigned 32 bit integers from the underlying reader.",0,N],[11,"read_u64_into","","Reads a sequence of unsigned 64 bit integers from the underlying reader.",0,N],[11,"read_i16_into","","Reads a sequence of signed 16 bit integers from the underlying reader.",0,N],[11,"read_i32_into","","Reads a sequence of signed 32 bit integers from the underlying reader.",0,N],[11,"read_i64_into","","Reads a sequence of signed 64 bit integers from the underlying reader.",0,N],[11,"read_f32_into","","Reads a sequence of IEEE754 single-precision (4 bytes) floating point numbers from the underlying reader.",0,N],[11,"read_f32_into_unchecked","","DEPRECATED.",0,N],[11,"read_f64_into","","Reads a sequence of IEEE754 double-precision (8 bytes) floating point numbers from the underlying reader.",0,N],[11,"read_f64_into_unchecked","","DEPRECATED.",0,N],[8,"WriteBytesExt","","Extends [`Write`] with methods for writing numbers. (For `std::io`.)",N,N],[11,"write_u8","","Writes an unsigned 8 bit integer to the underlying writer.",1,[[["self"],["u8"]],["result"]]],[11,"write_i8","","Writes a signed 8 bit integer to the underlying writer.",1,[[["self"],["i8"]],["result"]]],[11,"write_u16","","Writes an unsigned 16 bit integer to the underlying writer.",1,[[["self"],["u16"]],["result"]]],[11,"write_i16","","Writes a signed 16 bit integer to the underlying writer.",1,[[["self"],["i16"]],["result"]]],[1
searchIndex["cfg_if"]={"doc":"A macro for defining `#[cfg]` if-else statements.","items":[[14,"cfg_if","cfg_if","",N,N]],"paths":[]};
searchIndex["color_quant"]={"doc":"Color quantization library This library provides a color quantizer based on the NEUQUANT quantization algorithm by Anthony Dekker. ### Usage `let data = vec![0; 40]; let nq = color_quant::NeuQuant::new(10, 256, &data); let indixes: Vec<u8> = data.chunks(4).map(|pix| nq.index_of(pix) as u8).collect(); let color_map = nq.color_map_rgba();`","items":[[3,"NeuQuant","color_quant","Neural network based color quantizer.",N,N],[11,"new","","Creates a new neuronal network and trains it with the supplied data.",0,N],[11,"init","","Initializes the neuronal network and trains it with the supplied data.",0,N],[11,"map_pixel","","Maps the rgba-pixel in-place to the best-matching color in the color map.",0,N],[11,"index_of","","Finds the best-matching index in the color map.",0,N],[11,"color_map_rgba","","Returns the RGBA color map calculated from the sample. ",0,[[["self"]],["vec",["u8"]]]],[11,"color_map_rgb","","Returns the RGBA color map calculated from the sample. ",0,[[["self"]],["vec",["u8"]]]]],"paths":[[3,"NeuQuant"]]};
searchIndex["crossbeam_deque"]={"doc":"A concurrent work-stealing deque.","items":[[3,"Deque","crossbeam_deque","A concurrent work-stealing deque.",N,N],[3,"Stealer","","A stealer that steals elements from the top of a deque.",N,N],[4,"Steal","","Possible outcomes of a steal operation.",N,N],[13,"Empty","","The deque was empty at the time of stealing.",0,N],[13,"Data","","Some data has been successfully stolen.",0,N],[13,"Retry","","Lost the race for stealing data to another concurrent operation. Try again.",0,N],[11,"fmt","","",0,[[["self"],["formatter"]],["result"]]],[11,"eq","","",0,[[["self"],["steal"]],["bool"]]],[11,"ne","","",0,[[["self"],["steal"]],["bool"]]],[11,"partial_cmp","","",0,[[["self"],["steal"]],["option",["ordering"]]]],[11,"lt","","",0,[[["self"],["steal"]],["bool"]]],[11,"le","","",0,[[["self"],["steal"]],["bool"]]],[11,"gt","","",0,[[["self"],["steal"]],["bool"]]],[11,"ge","","",0,[[["self"],["steal"]],["bool"]]],[11,"cmp","","",0,[[["self"],["steal"]],["ordering"]]],[11,"clone","","",0,[[["self"]],["steal"]]],[11,"new","","Returns a new deque.",1,[[],["deque"]]],[11,"with_min_capacity","","Returns a new deque with the specified minimum capacity.",1,[[["usize"]],["deque"]]],[11,"is_empty","","Returns `true` if the deque is empty.",1,[[["self"]],["bool"]]],[11,"len","","Returns the number of elements in the deque.",1,[[["self"]],["usize"]]],[11,"push","","Pushes an element into the bottom of the deque.",1,[[["self"],["t"]]]],[11,"pop","","Pops an element from the bottom of the deque.",1,[[["self"]],["option"]]],[11,"steal","","Steals an element from the top of the deque.",1,[[["self"]],["steal"]]],[11,"stealer","","Creates a stealer that can be shared with other threads.",1,[[["self"]],["stealer"]]],[11,"fmt","","",1,[[["self"],["formatter"]],["result"]]],[11,"default","","",1,[[],["deque"]]],[11,"is_empty","","Returns `true` if the deque is empty.",2,[[["self"]],["bool"]]],[11,"len","","Returns the number of elements in the deque.",2,[[["self"]],["usize"]]],[11,"steal","","Steals an element from the top of the deque.",2,[[["self"]],["steal"]]],[11,"clone","","Creates another stealer.",2,[[["self"]],["stealer"]]],[11,"fmt","","",2,[[["self"],["formatter"]],["result"]]]],"paths":[[4,"Steal"],[3,"Deque"],[3,"Stealer"]]};
searchIndex["crossbeam_epoch"]={"doc":"Epoch-based memory reclamation.","items":[[3,"Atomic","crossbeam_epoch","An atomic pointer that can be safely shared between threads.",N,N],[3,"CompareAndSetError","","The error returned on failed compare-and-set operation.",N,N],[12,"current","","The value in the atomic pointer at the time of the failed operation.",0,N],[12,"new","","The new value, which the operation failed to store.",0,N],[3,"Owned","","An owned heap-allocated object.",N,N],[3,"Shared","","A pointer to an object protected by the epoch GC.",N,N],[3,"Guard","","A guard that keeps the current thread pinned.",N,N],[3,"Collector","","An epoch-based garbage collector.",N,N],[3,"Handle","","A handle to a garbage collector.",N,N],[5,"unprotected","","Returns a reference to a dummy guard that allows unprotected access to [`Atomic`]s.",N,[[],["guard"]]],[5,"default_handle","","Returns the default handle associated with the current thread.",N,[[],["handle"]]],[5,"is_pinned","","Returns `true` if the current thread is pinned.",N,[[],["bool"]]],[5,"pin","","Pins the current thread.",N,[[],["guard"]]],[11,"fmt","","",0,[[["self"],["formatter"]],["result"]]],[11,"null","","Returns a new null atomic pointer.",1,[[],["atomic"]]],[11,"new","","Allocates `value` on the heap and returns a new atomic pointer pointing to it.",1,[[["t"]],["atomic"]]],[11,"load","","Loads a `Shared` from the atomic pointer.",1,[[["self"],["ordering"],["guard"]],["shared"]]],[11,"store","","Stores a `Shared` or `Owned` pointer into the atomic pointer.",1,[[["self"],["p"],["ordering"]]]],[11,"swap","","Stores a `Shared` or `Owned` pointer into the atomic pointer, returning the previous `Shared`.",1,[[["self"],["p"],["ordering"],["guard"]],["shared"]]],[11,"compare_and_set","","Stores the pointer `new` (either `Shared` or `Owned`) into the atomic pointer if the current value is the same as `current`. The tag is also taken into account, so two pointers to the same object, but with different tags, will not be considered equal.",1,[[["self"],["shared"],["p"],["o"],["guard"]],["result",["shared","compareandseterror"]]]],[11,"compare_and_set_weak","","Stores the pointer `new` (either `Shared` or `Owned`) into the atomic pointer if the current value is the same as `current`. The tag is also taken into account, so two pointers to the same object, but with different tags, will not be considered equal.",1,[[["self"],["shared"],["p"],["o"],["guard"]],["result",["shared","compareandseterror"]]]],[11,"fetch_and","","Bitwise \"and\" with the current tag.",1,[[["self"],["usize"],["ordering"],["guard"]],["shared"]]],[11,"fetch_or","","Bitwise \"or\" with the current tag.",1,[[["self"],["usize"],["ordering"],["guard"]],["shared"]]],[11,"fetch_xor","","Bitwise \"xor\" with the current tag.",1,[[["self"],["usize"],["ordering"],["guard"]],["shared"]]],[11,"fmt","","",1,[[["self"],["formatter"]],["result"]]],[11,"fmt","","",1,[[["self"],["formatter"]],["result"]]],[11,"clone","","Returns a copy of the atomic value.",1,[[["self"]],["self"]]],[11,"default","","",1,[[],["self"]]],[11,"from","","Returns a new atomic pointer pointing to `owned`.",1,[[["owned"]],["self"]]],[11,"from","","",1,[[["box"]],["self"]]],[11,"from","","",1,[[["t"]],["self"]]],[11,"from","","Returns a new atomic pointer pointing to `ptr`.",1,[[["shared"]],["self"]]],[11,"from","","Returns a new atomic pointer pointing to `raw`.",1,N],[11,"new","","Allocates `value` on the heap and returns a new owned pointer pointing to it.",2,[[["t"]],["owned"]]],[11,"from_raw","","Returns a new owned pointer pointing to `raw`.",2,N],[11,"into_shared","","Converts the owned pointer into a [`Shared`].",2,[[["self"],["guard"]],["shared"]]],[11,"into_box","","Converts the owned pointer into a `Box`.",2,[[["self"]],["box"]]],[11,"tag","","Returns the tag stored within the pointer.",2,[[["self"]],["usize"]]],[11,"with_tag","","Returns the same pointer, but tagged with `tag`. `tag` is truncated to be fit into the unused bits of the pointer to `T`.",2,[[["self"],["usize"]],["owned"]]],[11,"drop","","",2,[[["self"]]]],[11,"fmt","
searchIndex["crossbeam_utils"]={"doc":"","items":[[0,"cache_padded","crossbeam_utils","",N,N],[3,"CachePadded","crossbeam_utils::cache_padded","Pads `T` to the length of a cache line.",N,N],[11,"drop","","",0,[[["self"]]]],[11,"new","","Pads a value to the length of a cache line.",0,[[["t"]],["cachepadded"]]],[11,"deref","","",0,[[["self"]],["t"]]],[11,"deref_mut","","",0,[[["self"]],["t"]]],[11,"default","","",0,[[],["self"]]],[11,"clone","","",0,[[["self"]],["self"]]],[11,"fmt","","",0,[[["self"],["formatter"]],["result"]]],[11,"from","","",0,[[["t"]],["self"]]],[0,"atomic_option","crossbeam_utils","",N,N],[3,"AtomicOption","crossbeam_utils::atomic_option","",N,N],[11,"fmt","","",1,[[["self"],["formatter"]],["result"]]],[11,"drop","","",1,[[["self"]]]],[11,"new","","",1,[[],["self"]]],[11,"swap_box","","",1,[[["self"],["box"],["ordering"]],["option",["box"]]]],[11,"swap","","",1,[[["self"],["t"],["ordering"]],["option"]]],[11,"take","","",1,[[["self"],["ordering"]],["option"]]],[11,"default","","",1,[[],["self"]]],[0,"scoped","crossbeam_utils","",N,N],[3,"Scope","crossbeam_utils::scoped","",N,N],[3,"ScopedJoinHandle","","A handle to a scoped thread",N,N],[3,"ScopedThreadBuilder","","Scoped thread configuration. Provides detailed control over the properties and behavior of new scoped threads.",N,N],[5,"spawn_unsafe","","Like `std::thread::spawn`, but without the closure bounds.",N,[[["f"]],["joinhandle"]]],[5,"builder_spawn_unsafe","","Like `std::thread::Builder::spawn`, but without the closure bounds.",N,[[["builder"],["f"]],["result",["joinhandle"]]]],[5,"scope","","Create a new `scope`, for deferred destructors.",N,[[["f"]],["r"]]],[11,"fmt","","",2,[[["self"],["formatter"]],["result"]]],[11,"fmt","","",3,[[["self"],["formatter"]],["result"]]],[11,"defer","","Schedule code to be executed when exiting the scope.",2,[[["self"],["f"]]]],[11,"spawn","","Create a scoped thread.",2,[[["self"],["f"]],["scopedjoinhandle"]]],[11,"builder","","Generates the base configuration for spawning a scoped thread, from which configuration methods can be chained.",2,[[["self"]],["scopedthreadbuilder"]]],[11,"name","","Names the thread-to-be. Currently the name is used for identification only in panic messages.",4,[[["self"],["string"]],["scopedthreadbuilder"]]],[11,"stack_size","","Sets the size of the stack for the new thread.",4,[[["self"],["usize"]],["scopedthreadbuilder"]]],[11,"spawn","","Spawns a new thread, and returns a join handle for it.",4,[[["self"],["f"]],["result",["scopedjoinhandle"]]]],[11,"join","","Join the scoped thread, returning the result it produced.",3,[[["self"]],["t"]]],[11,"thread","","Get the underlying thread handle.",3,[[["self"]],["thread"]]],[11,"drop","","",2,[[["self"]]]]],"paths":[[3,"CachePadded"],[3,"AtomicOption"],[3,"Scope"],[3,"ScopedJoinHandle"],[3,"ScopedThreadBuilder"]]};
searchIndex["deflate"]={"doc":"An implementation an encoder using DEFLATE compression algorightm in pure rust.","items":[[3,"CompressionOptions","deflate","A struct describing the options for a compressor or compression function.",N,N],[12,"max_hash_checks","","The maximum number of checks to make in the hash table for matches.",0,N],[12,"lazy_if_less_than","","Only lazy match if we have a length less than this value.",0,N],[12,"matching_type","","Whether to use lazy or greedy matching.",0,N],[12,"special","","Force fixed/stored blocks (Not implemented yet). * Default value: `SpecialOptions::Normal`",0,N],[4,"SpecialOptions","","Enum allowing some special options (not implemented yet)!",N,N],[13,"Normal","","Compress normally.",1,N],[13,"_ForceFixed","","Force fixed huffman tables. (Unimplemented!).",1,N],[13,"_ForceStored","","Force stored (uncompressed) blocks only. (Unimplemented!).",1,N],[4,"Compression","","An enum describing the level of compression to be used by the encoder",N,N],[13,"Fast","","Fast minimal compression (`CompressionOptions::fast()`).",2,N],[13,"Default","","Default level (`CompressionOptions::default()`).",2,N],[13,"Best","","Higher compression level (`CompressionOptions::high()`).",2,N],[4,"MatchingType","","An enum describing whether we use lazy or greedy matching.",N,N],[13,"Greedy","","Use greedy matching: the matching algorithm simply uses a match right away if found.",3,N],[13,"Lazy","","Use lazy matching: after finding a match, the next input byte is checked, to see if there is a better match starting at that byte.",3,N],[5,"deflate_bytes_conf","","Compress the given slice of bytes with DEFLATE compression.",N,N],[5,"deflate_bytes","","Compress the given slice of bytes with DEFLATE compression using the default compression level.",N,N],[5,"deflate_bytes_zlib_conf","","Compress the given slice of bytes with DEFLATE compression, including a zlib header and trailer.",N,N],[5,"deflate_bytes_zlib","","Compress the given slice of bytes with DEFLATE compression, including a zlib header and trailer, using the default compression level.",N,N],[11,"clone","","",2,[[["self"]],["compression"]]],[11,"fmt","","",2,[[["self"],["formatter"]],["result"]]],[11,"eq","","",2,[[["self"],["compression"]],["bool"]]],[11,"cmp","","",2,[[["self"],["compression"]],["ordering"]]],[11,"partial_cmp","","",2,[[["self"],["compression"]],["option",["ordering"]]]],[11,"hash","","",2,N],[11,"default","","",2,[[],["compression"]]],[11,"clone","","",1,[[["self"]],["specialoptions"]]],[11,"fmt","","",1,[[["self"],["formatter"]],["result"]]],[11,"eq","","",1,[[["self"],["specialoptions"]],["bool"]]],[11,"hash","","",1,N],[11,"default","","",1,[[],["specialoptions"]]],[11,"clone","","",0,[[["self"]],["compressionoptions"]]],[11,"fmt","","",0,[[["self"],["formatter"]],["result"]]],[11,"eq","","",0,[[["self"],["compressionoptions"]],["bool"]]],[11,"ne","","",0,[[["self"],["compressionoptions"]],["bool"]]],[11,"hash","","",0,N],[11,"high","","Returns compression settings rouhgly corresponding to the `HIGH(9)` setting in miniz.",0,[[],["compressionoptions"]]],[11,"fast","","Returns a fast set of compression settings",0,[[],["compressionoptions"]]],[11,"huffman_only","","Returns a set of compression settings that makes the compressor only compress using huffman coding. (Ignoring any length/distance matching)",0,[[],["compressionoptions"]]],[11,"rle","","Returns a set of compression settings that makes the compressor compress only using run-length encoding (i.e only looking for matches one byte back).",0,[[],["compressionoptions"]]],[11,"default","","Returns the options describing the default compression level.",0,[[],["compressionoptions"]]],[11,"from","","",0,[[["compression"]],["compressionoptions"]]],[11,"clone","","",3,[[["self"]],["matchingtype"]]],[11,"fmt","","",3,[[["self"],["formatter"]],["result"]]],[11,"eq","","",3,[[["self"],["matchingtype"]],["bool"]]],[11,"cmp","","",3,[[["self"],["matchingtype"]],["ordering"]]],[11,"partial_cmp","","",3,[[["self"],["matchingtype"]],["option",["ordering"]]]],[11,"hash","","",3,N],[11,
searchIndex["dlib"]={"doc":"","items":[[3,"Library","dlib","A loaded dynamic library.",N,N],[3,"Symbol","","Symbol from a library.",N,N],[4,"DlError","","",N,N],[13,"NotFound","","",0,N],[13,"MissingSymbol","","",0,N],[14,"ffi_dispatch","","",N,N],[14,"ffi_dispatch_static","","",N,N],[14,"link_external_library","","",N,N],[14,"dlopen_external_library","","",N,N],[14,"external_library","","",N,N],[11,"new","","Find and load a dynamic library.",1,[[["p"]],["result",["library","error"]]]],[11,"get","","Get a pointer to function or static variable by symbol name.",1,N],[11,"clone","","",2,[[["self"]],["symbol"]]],[11,"fmt","","",2,[[["self"],["formatter"]],["result",["error"]]]],[11,"fmt","","",1,[[["self"],["formatter"]],["result",["error"]]]],[11,"deref","","",2,[[["self"]],["t"]]],[11,"from","","",1,[[["library"]],["library"]]],[11,"into_raw","","Extract the wrapped `os::platform::Symbol`.",2,[[["self"]],["symbol"]]],[11,"from_raw","","Wrap the `os::platform::Symbol` into this safe wrapper.",2,[[["symbol"],["l"]],["symbol"]]],[11,"lift_option","","Lift Option out of the symbol.",2,[[["self"]],["option",["symbol"]]]]],"paths":[[4,"DlError"],[3,"Library"],[3,"Symbol"]]};
searchIndex["downcast_rs"]={"doc":"Rust enums are great for types where all variations are known beforehand. But in the case where you want to implement a container of user-defined types, an open-ended type like a trait object is needed. In some cases, it is useful to cast the trait object back into its original concrete type to access additional functionality and performant inlined implementations.","items":[[8,"Downcast","downcast_rs","Supports conversion to `Any`. Traits to be extended by `impl_downcast!` must extend `Downcast`.",N,N],[10,"into_any","","Convert `Box<Trait>` (where `Trait: Downcast`) to `Box<Any>`. `Box<Any>` can then be further `downcast` into `Box<ConcreteType>` where `ConcreteType` implements `Trait`.",0,[[["box"]],["box",["any"]]]],[10,"as_any","","Convert `&Trait` (where `Trait: Downcast`) to `&Any`. This is needed since Rust cannot generate `&Any`'s vtable from `&Trait`'s.",0,[[["self"]],["any"]]],[10,"as_any_mut","","Convert `&mut Trait` (where `Trait: Downcast`) to `&Any`. This is needed since Rust cannot generate `&mut Any`'s vtable from `&mut Trait`'s.",0,[[["self"]],["any"]]],[14,"impl_downcast","","Adds downcasting support to traits that extend `downcast::Downcast` by defining forwarding methods to the corresponding implementations on `std::any::Any` in the standard library.",N,N]],"paths":[[8,"Downcast"]]};
searchIndex["either"]={"doc":"The enum [`Either`] with variants `Left` and `Right` is a general purpose sum type with two cases.","items":[[4,"Either","either","The enum `Either` with variants `Left` and `Right` is a general purpose sum type with two cases.",N,N],[13,"Left","","A value of type `L`.",0,N],[13,"Right","","A value of type `R`.",0,N],[11,"clone","","",0,[[["self"]],["either"]]],[11,"eq","","",0,[[["self"],["either"]],["bool"]]],[11,"ne","","",0,[[["self"],["either"]],["bool"]]],[11,"partial_cmp","","",0,[[["self"],["either"]],["option",["ordering"]]]],[11,"lt","","",0,[[["self"],["either"]],["bool"]]],[11,"le","","",0,[[["self"],["either"]],["bool"]]],[11,"gt","","",0,[[["self"],["either"]],["bool"]]],[11,"ge","","",0,[[["self"],["either"]],["bool"]]],[11,"cmp","","",0,[[["self"],["either"]],["ordering"]]],[11,"hash","","",0,N],[11,"fmt","","",0,[[["self"],["formatter"]],["result"]]],[11,"is_left","","Return true if the value is the `Left` variant.",0,[[["self"]],["bool"]]],[11,"is_right","","Return true if the value is the `Right` variant.",0,[[["self"]],["bool"]]],[11,"left","","Convert the left side of `Either<L, R>` to an `Option<L>`.",0,[[["self"]],["option"]]],[11,"right","","Convert the right side of `Either<L, R>` to an `Option<R>`.",0,[[["self"]],["option"]]],[11,"as_ref","","Convert `&Either<L, R>` to `Either<&L, &R>`.",0,[[["self"]],["either"]]],[11,"as_mut","","Convert `&mut Either<L, R>` to `Either<&mut L, &mut R>`.",0,[[["self"]],["either"]]],[11,"flip","","Convert `Either<L, R>` to `Either<R, L>`.",0,[[["self"]],["either"]]],[11,"map_left","","Apply the function `f` on the value in the `Left` variant if it is present rewrapping the result in `Left`.",0,[[["self"],["f"]],["either"]]],[11,"map_right","","Apply the function `f` on the value in the `Right` variant if it is present rewrapping the result in `Right`.",0,[[["self"],["f"]],["either"]]],[11,"either","","Apply one of two functions depending on contents, unifying their result. If the value is `Left(L)` then the first function `f` is applied; if it is `Right(R)` then the second function `g` is applied.",0,[[["self"],["f"],["g"]],["t"]]],[11,"either_with","","Like `either`, but provide some context to whichever of the functions ends up being called.",0,[[["self"],["ctx"],["f"],["g"]],["t"]]],[11,"left_and_then","","Apply the function `f` on the value in the `Left` variant if it is present.",0,[[["self"],["f"]],["either"]]],[11,"right_and_then","","Apply the function `f` on the value in the `Right` variant if it is present.",0,[[["self"],["f"]],["either"]]],[11,"into_iter","","Convert the inner value to an iterator.",0,[[["self"]],["either"]]],[11,"factor_first","","Factor out a homogeneous type from an either of pairs.",0,N],[11,"factor_second","","Factor out a homogeneous type from an either of pairs.",0,N],[11,"into_inner","","Extract the value of an either over two equivalent types.",0,[[["self"]],["t"]]],[11,"from","","",0,[[["result"]],["self"]]],[11,"into","","",0,[[["self"]],["result"]]],[11,"extend","","",0,[[["self"],["t"]]]],[11,"next","","",0,[[["self"]],["option"]]],[11,"size_hint","","",0,N],[11,"fold","","",0,[[["self"],["acc"],["g"]],["acc"]]],[11,"count","","",0,[[["self"]],["usize"]]],[11,"last","","",0,[[["self"]],["option"]]],[11,"nth","","",0,[[["self"],["usize"]],["option"]]],[11,"collect","","",0,[[["self"]],["b"]]],[11,"all","","",0,[[["self"],["f"]],["bool"]]],[11,"next_back","","",0,[[["self"]],["option"]]],[11,"as_ref","","",0,[[["self"]],["target"]]],[11,"as_mut","","",0,[[["self"]],["target"]]],[11,"deref","","",0,N],[11,"deref_mut","","",0,N],[11,"fmt","","",0,[[["self"],["formatter"]],["result"]]],[14,"try_left","","Macro for unwrapping the left side of an `Either`, which fails early with the opposite side. Can only be used in functions that return `Either` because of the early return of `Right` that it provides.",N,N],[14,"try_right","","Dual to `try_left!`, see its documentation for more information.",N,N]],"paths":[[4,"Either"]]};
searchIndex["event_loop"]={"doc":"A Piston event loop for games and interactive applications","items":[[3,"EventSettings","event_loop","Stores event loop settings.",N,N],[12,"max_fps","","The maximum number of frames per second",0,N],[12,"ups","","The number of updates per second",0,N],[12,"ups_reset","","The number of delayed updates before skipping them to catch up. When set to `0`, it will always try to catch up.",0,N],[12,"swap_buffers","","Enable or disable automatic swapping of buffers.",0,N],[12,"bench_mode","","Enable or disable benchmark mode. When enabled, it will render and update without sleep and ignore input. Used to test performance by playing through as fast as possible. Requires `lazy` to be set to `false`.",0,N],[12,"lazy","","Enable or disable rendering only when receiving input. When enabled, update and idle events are disabled.",0,N],[3,"Events","","An event loop iterator",N,N],[17,"DEFAULT_UPS","","The default updates per second.",N,N],[17,"DEFAULT_UPS_RESET","","The default delayed updates reset.",N,N],[17,"DEFAULT_MAX_FPS","","The default maximum frames per second.",N,N],[8,"EventLoop","","Methods implemented for changing event loop settings.",N,N],[10,"get_event_settings","","Returns event loop settings.",1,[[["self"]],["eventsettings"]]],[10,"set_event_settings","","Sets event loop settings.",1,[[["self"],["eventsettings"]]]],[11,"set_ups","","The number of updates per second",1,[[["self"],["u64"]]]],[11,"ups","","The number of updates per second",1,[[["self"],["u64"]],["self"]]],[11,"set_ups_reset","","The number of delayed updates before skipping them to catch up. When set to `0`, it will always try to catch up.",1,[[["self"],["u64"]]]],[11,"ups_reset","","The number of delayed updates before skipping them to catch up. When set to `0`, it will always try to catch up.",1,[[["self"],["u64"]],["self"]]],[11,"set_max_fps","","The maximum number of frames per second",1,[[["self"],["u64"]]]],[11,"max_fps","","The maximum number of frames per second",1,[[["self"],["u64"]],["self"]]],[11,"set_swap_buffers","","Enable or disable automatic swapping of buffers.",1,[[["self"],["bool"]]]],[11,"swap_buffers","","Enable or disable automatic swapping of buffers.",1,[[["self"],["bool"]],["self"]]],[11,"set_bench_mode","","Enable or disable benchmark mode. When enabled, it will render and update without sleep and ignore input. Used to test performance by playing through as fast as possible. Requires `lazy` to be set to `false`.",1,[[["self"],["bool"]]]],[11,"bench_mode","","Enable or disable benchmark mode. When enabled, it will render and update without sleep and ignore input. Used to test performance by playing through as fast as possible. Requires `lazy` to be set to `false`.",1,[[["self"],["bool"]],["self"]]],[11,"set_lazy","","Enable or disable rendering only when receiving input. When enabled, update events are disabled. Idle events are emitted while receiving input.",1,[[["self"],["bool"]]]],[11,"lazy","","Enable or disable rendering only when receiving input. When enabled, update events are disabled. Idle events are emitted while receiving input.",1,[[["self"],["bool"]],["self"]]],[11,"clone","","",0,[[["self"]],["eventsettings"]]],[11,"fmt","","",0,[[["self"],["formatter"]],["result"]]],[11,"new","","Creates new with default settings.",0,[[],["eventsettings"]]],[11,"default","","",0,[[],["eventsettings"]]],[11,"clone","","",2,[[["self"]],["events"]]],[11,"new","","Creates a new event iterator with default UPS and FPS settings.",2,[[["eventsettings"]],["events"]]],[11,"next","","Returns the next event.",2,[[["self"],["w"]],["option",["event"]]]],[11,"get_event_settings","","",0,[[["self"]],["self"]]],[11,"set_event_settings","","",0,[[["self"],["self"]]]],[11,"get_event_settings","","",2,[[["self"]],["eventsettings"]]],[11,"set_event_settings","","",2,[[["self"],["eventsettings"]]]]],"paths":[[3,"EventSettings"],[8,"EventLoop"],[3,"Events"]]};
searchIndex["float"]={"doc":"Traits for generic floats in game programming","items":[[8,"Float","float","Convenience trait for floats.",N,N],[8,"Min","","Minimum value.",N,N],[10,"min","","Returns the minimum value of self or other.",0,[[["self"],["self"]],["self"]]],[8,"Max","","Maximum value.",N,N],[10,"max","","Returns the maximum value of self or other.",1,[[["self"],["self"]],["self"]]],[8,"Signum","","The sign of the number.",N,N],[10,"signum","","Returns number representing the sign of self",2,[[["self"]],["self"]]],[8,"Powf","","Floating number power.",N,N],[10,"powf","","Returns floating power of the number.",3,[[["self"],["self"]],["self"]]],[8,"Radians","","Useful constants for radians.",N,N],[10,"_90","","Returns radians corresponding to 90 degrees.",4,[[],["self"]]],[10,"_180","","Returns radians corresponding to 180 degrees.",4,[[],["self"]]],[10,"_360","","Returns radians corresponding to 360 degrees.",4,[[],["self"]]],[10,"deg_to_rad","","Convert a value to radians from degrees. Equivalent to `value * (π / 180)`.",4,[[["self"]],["self"]]],[10,"rad_to_deg","","Convert a value to degrees from radians. Equivalent to `value * (180 / π)`.",4,[[["self"]],["self"]]],[8,"One","","Number 1.",N,N],[10,"one","","Returns 1.",5,[[],["self"]]],[8,"Zero","","Number 0.",N,N],[10,"zero","","Returns 0.",6,[[],["self"]]],[8,"Sqrt","","Square root.",N,N],[10,"sqrt","","Returns square root.",7,[[["self"]],["self"]]],[8,"Trig","","Basic trigonometry functions",N,N],[10,"sin","","Returns sine of self.",8,[[["self"]],["self"]]],[10,"cos","","Returns cosine of self.",8,[[["self"]],["self"]]],[10,"tan","","Returns tangent of self.",8,[[["self"]],["self"]]],[10,"asin","","Returns inverse sine of self.",8,[[["self"]],["self"]]],[10,"acos","","Returns inverse cosine of self.",8,[[["self"]],["self"]]],[10,"atan","","Returns inverse tangent of self.",8,[[["self"]],["self"]]],[10,"atan2","","Returns the four quadrant arctangent of self (y) and other (x).",8,[[["self"],["self"]],["self"]]],[10,"sinh","","Returns hyperbolic sine of self.",8,[[["self"]],["self"]]],[10,"cosh","","Returns hyperbolic cosine of self.",8,[[["self"]],["self"]]],[10,"tanh","","Returns hyperbolic tangent of self.",8,[[["self"]],["self"]]],[10,"asinh","","Returns inverse hyperbolic sine of self.",8,[[["self"]],["self"]]],[10,"acosh","","Returns inverse hyperbolic cosine of self.",8,[[["self"]],["self"]]],[10,"atanh","","Returns inverse hyperbolic tangent of self.",8,[[["self"]],["self"]]],[8,"Cast","","Casts into another type.",N,N],[10,"cast","","Casts into other type.",9,[[["self"]],["t"]]],[8,"FromPrimitive","","Trait for converting from different numeric types",N,N],[10,"from_f64","","from a f64",10,[[["f64"]],["self"]]],[10,"from_f32","","from a f32",10,[[["f32"]],["self"]]],[10,"from_isize","","from a isze",10,[[["isize"]],["self"]]],[10,"from_u32","","from a u32",10,[[["u32"]],["self"]]],[10,"from_i32","","from a i32",10,[[["i32"]],["self"]]]],"paths":[[8,"Min"],[8,"Max"],[8,"Signum"],[8,"Powf"],[8,"Radians"],[8,"One"],[8,"Zero"],[8,"Sqrt"],[8,"Trig"],[8,"Cast"],[8,"FromPrimitive"]]};
searchIndex["fnv"]={"doc":"An implementation of the [FowlerNollVo hash function][chongo].","items":[[3,"FnvHasher","fnv","An implementation of the FowlerNollVo hash function.",N,N],[6,"FnvBuildHasher","","A builder for default FNV hashers.",N,N],[6,"FnvHashMap","","A `HashMap` using a default FNV hasher.",N,N],[6,"FnvHashSet","","A `HashSet` using a default FNV hasher.",N,N],[11,"default","","",0,[[],["fnvhasher"]]],[11,"with_key","","Create an FNV hasher starting with a state corresponding to the hash `key`.",0,[[["u64"]],["fnvhasher"]]],[11,"finish","","",0,[[["self"]],["u64"]]],[11,"write","","",0,N]],"paths":[[3,"FnvHasher"]]};
searchIndex["gif"]={"doc":"GIF en- and decoding library Build Status","items":[[3,"Frame","gif","A GIF frame",N,N],[12,"delay","","Frame delay in units of 10 ms.",0,N],[12,"dispose","","Disposal method.",0,N],[12,"transparent","","Transparent index (if available).",0,N],[12,"needs_user_input","","True if the frame needs user input to be displayed.",0,N],[12,"top","","Offset from the top border of the canvas.",0,N],[12,"left","","Offset from the left border of the canvas.",0,N],[12,"width","","Width of the frame.",0,N],[12,"height","","Height of the frame.",0,N],[12,"interlaced","","True if the image is interlaced.",0,N],[12,"palette","","Frame local color palette if available.",0,N],[12,"buffer","","Buffer containing the image data. Only indices unless configured differently.",0,N],[3,"StreamingDecoder","","GIF decoder which supports streaming",N,N],[3,"MemoryLimit","","Memory limit in bytes. `MemoryLimit::Some(0)` means that there is no memory limit set.",N,N],[12,"0","","",1,N],[3,"Reader","","GIF decoder",N,N],[3,"Decoder","","GIF decoder",N,N],[3,"Encoder","","GIF encoder.",N,N],[4,"Block","","Known GIF block types",N,N],[13,"Image","","Image block.",2,N],[13,"Extension","","Extension block.",2,N],[13,"Trailer","","Image trailer.",2,N],[4,"Extension","","Known GIF extensions",N,N],[13,"Text","","Text extension.",3,N],[13,"Control","","Control extension.",3,N],[13,"Comment","","Comment extension.",3,N],[13,"Application","","Application extension.",3,N],[4,"DisposalMethod","","Disposal method",N,N],[13,"Any","","StreamingDecoder is not required to take any action.",4,N],[13,"Keep","","Do not dispose.",4,N],[13,"Background","","Restore to background color.",4,N],[13,"Previous","","Restore to previous.",4,N],[4,"Decoded","","Indicates whether a certain object has been decoded",N,N],[13,"Nothing","","Decoded nothing.",5,N],[13,"GlobalPalette","","Global palette.",5,N],[13,"BackgroundColor","","Index of the background color in the global palette.",5,N],[13,"Trailer","","Decoded the image trailer.",5,N],[13,"BlockStart","","The start of a block.",5,N],[13,"SubBlockFinished","","Decoded a sub-block. More sub-block are available.",5,N],[13,"BlockFinished","","Decoded the last (or only) sub-block of a block.",5,N],[13,"Frame","","Decoded all information of the next frame. The returned frame does not any image data.",5,N],[13,"Data","","Decoded some data of the current frame.",5,N],[13,"DataEnd","","No more data available the current frame.",5,N],[4,"DecodingError","","Decoding error.",N,N],[13,"Format","","Returned if the image is found to be malformed.",6,N],[13,"Internal","","Internal (logic) error.",6,N],[13,"Io","","Wraps `std::io::Error`.",6,N],[4,"ColorOutput","","Output mode for the image data",N,N],[13,"RGBA","","The decoder expands the image data to 32bit RGBA. This affects:",7,N],[13,"Indexed","","The decoder returns the raw indexed data.",7,N],[4,"Extensions","","Configures how extensions should be handled",N,N],[13,"Save","","Saves all extention data",8,N],[13,"Skip","","Skips the data of unknown extensions and extracts the data from known ones",8,N],[4,"ExtensionData","","Extension data.",N,N],[13,"Control","","Control extension. Use `ExtensionData::new_control_ext` to construct.",9,N],[12,"flags","gif::ExtensionData","Flags.",9,N],[12,"delay","","Frame delay.",9,N],[12,"trns","","Transparent index.",9,N],[13,"Repetitions","gif","Sets the number of repetitions",9,N],[4,"Repeat","","Number of repetitions",N,N],[13,"Finite","","Finite number of repetitions",10,N],[13,"Infinite","","Infinite number of repetitions",10,N],[11,"fmt","","",4,[[["self"],["formatter"]],["result"]]],[11,"clone","","",4,[[["self"]],["disposalmethod"]]],[11,"eq","","",4,[[["self"],["disposalmethod"]],["bool"]]],[11,"from_u8","","Converts `u8` to `Option<Self>`",4,[[["u8"]],["option",["disposalmethod"]]]],[11,"fmt","","",2,[[["self"],["formatter"]],["result"]]],[11,"clone","","",2,[[["self"]],["block"]]],[11,"eq","","",2,[[["self"],["block"]],["bool"]]],[11,"from_u8","","Converts `u8` to `Option<Self>`",2,[[["u8"]],["option",["block"]]]],[11
searchIndex["gl"]={"doc":"Usage","items":[[3,"FnPtr","gl","",N,N],[5,"ActiveShaderProgram","","",N,N],[5,"ActiveTexture","","Fallbacks: ActiveTextureARB",N,N],[5,"AttachShader","","Fallbacks: AttachObjectARB",N,N],[5,"BeginConditionalRender","","Fallbacks: BeginConditionalRenderNV",N,N],[5,"BeginQuery","","Fallbacks: BeginQueryARB",N,N],[5,"BeginQueryIndexed","","",N,N],[5,"BeginTransformFeedback","","Fallbacks: BeginTransformFeedbackEXT, BeginTransformFeedbackNV",N,N],[5,"BindAttribLocation","","Fallbacks: BindAttribLocationARB",N,N],[5,"BindBuffer","","Fallbacks: BindBufferARB",N,N],[5,"BindBufferBase","","Fallbacks: BindBufferBaseEXT, BindBufferBaseNV",N,N],[5,"BindBufferRange","","Fallbacks: BindBufferRangeEXT, BindBufferRangeNV",N,N],[5,"BindBuffersBase","","",N,N],[5,"BindBuffersRange","","",N,N],[5,"BindFragDataLocation","","Fallbacks: BindFragDataLocationEXT",N,N],[5,"BindFragDataLocationIndexed","","Fallbacks: BindFragDataLocationIndexedEXT",N,N],[5,"BindFramebuffer","","",N,N],[5,"BindImageTexture","","",N,N],[5,"BindImageTextures","","",N,N],[5,"BindProgramPipeline","","",N,N],[5,"BindRenderbuffer","","",N,N],[5,"BindSampler","","",N,N],[5,"BindSamplers","","",N,N],[5,"BindTexture","","Fallbacks: BindTextureEXT",N,N],[5,"BindTextureUnit","","",N,N],[5,"BindTextures","","",N,N],[5,"BindTransformFeedback","","",N,N],[5,"BindVertexArray","","Fallbacks: BindVertexArrayOES",N,N],[5,"BindVertexBuffer","","",N,N],[5,"BindVertexBuffers","","",N,N],[5,"BlendColor","","Fallbacks: BlendColorEXT",N,N],[5,"BlendEquation","","Fallbacks: BlendEquationEXT",N,N],[5,"BlendEquationSeparate","","Fallbacks: BlendEquationSeparateEXT",N,N],[5,"BlendEquationSeparatei","","Fallbacks: BlendEquationSeparateIndexedAMD, BlendEquationSeparateiARB, BlendEquationSeparateiEXT, BlendEquationSeparateiOES",N,N],[5,"BlendEquationi","","Fallbacks: BlendEquationIndexedAMD, BlendEquationiARB, BlendEquationiEXT, BlendEquationiOES",N,N],[5,"BlendFunc","","",N,N],[5,"BlendFuncSeparate","","Fallbacks: BlendFuncSeparateEXT, BlendFuncSeparateINGR",N,N],[5,"BlendFuncSeparatei","","Fallbacks: BlendFuncSeparateIndexedAMD, BlendFuncSeparateiARB, BlendFuncSeparateiEXT, BlendFuncSeparateiOES",N,N],[5,"BlendFunci","","Fallbacks: BlendFuncIndexedAMD, BlendFunciARB, BlendFunciEXT, BlendFunciOES",N,N],[5,"BlitFramebuffer","","Fallbacks: BlitFramebufferEXT, BlitFramebufferNV",N,N],[5,"BlitNamedFramebuffer","","",N,N],[5,"BufferData","","Fallbacks: BufferDataARB",N,N],[5,"BufferStorage","","Fallbacks: BufferStorageEXT",N,N],[5,"BufferSubData","","Fallbacks: BufferSubDataARB",N,N],[5,"CheckFramebufferStatus","","Fallbacks: CheckFramebufferStatusEXT",N,[[["glenum"]],["glenum"]]],[5,"CheckNamedFramebufferStatus","","",N,[[["gluint"],["glenum"]],["glenum"]]],[5,"ClampColor","","Fallbacks: ClampColorARB",N,N],[5,"Clear","","",N,N],[5,"ClearBufferData","","",N,N],[5,"ClearBufferSubData","","",N,N],[5,"ClearBufferfi","","",N,N],[5,"ClearBufferfv","","",N,N],[5,"ClearBufferiv","","",N,N],[5,"ClearBufferuiv","","",N,N],[5,"ClearColor","","",N,N],[5,"ClearDepth","","",N,N],[5,"ClearDepthf","","Fallbacks: ClearDepthfOES",N,N],[5,"ClearNamedBufferData","","",N,N],[5,"ClearNamedBufferSubData","","",N,N],[5,"ClearNamedFramebufferfi","","",N,N],[5,"ClearNamedFramebufferfv","","",N,N],[5,"ClearNamedFramebufferiv","","",N,N],[5,"ClearNamedFramebufferuiv","","",N,N],[5,"ClearStencil","","",N,N],[5,"ClearTexImage","","Fallbacks: ClearTexImageEXT",N,N],[5,"ClearTexSubImage","","Fallbacks: ClearTexSubImageEXT",N,N],[5,"ClientWaitSync","","Fallbacks: ClientWaitSyncAPPLE",N,[[["glsync"],["glbitfield"],["gluint64"]],["glenum"]]],[5,"ClipControl","","",N,N],[5,"ColorMask","","",N,N],[5,"ColorMaski","","Fallbacks: ColorMaskIndexedEXT, ColorMaskiEXT, ColorMaskiOES",N,N],[5,"ColorP3ui","","",N,N],[5,"ColorP3uiv","","",N,N],[5,"ColorP4ui","","",N,N],[5,"ColorP4uiv","","",N,N],[5,"CompileShader","","Fallbacks: CompileShaderARB",N,N],[5,"CompressedTexImage1D","","Fallbacks: CompressedTexImage1DARB",N,N],[5,"CompressedTexImage2D","","Fallbacks: CompressedTexImage2DARB",N,N],[5,"CompressedTexImage3
searchIndex["glutin"]={"doc":"The purpose of this library is to provide an OpenGL context on as many platforms as possible.","items":[[3,"AvailableMonitorsIter","glutin","An iterator for the list of available monitors.",N,N],[6,"AxisId","","Identifier for a specific analog axis on some device.",N,N],[6,"ButtonId","","Identifier for a specific button on some device.",N,N],[4,"ControlFlow","","Returned by the user callback given to the `EventsLoop::run_forever` method.",N,N],[13,"Continue","","Continue looping and waiting for events.",0,N],[13,"Break","","Break from the event loop.",0,N],[4,"WindowCreationError","","Error that can happen while creating a window or a headless renderer.",N,N],[13,"OsError","","",1,N],[13,"NotSupported","","TODO: remove this error",1,N],[4,"DeviceEvent","","Represents raw hardware events that are not associated with any particular window.",N,N],[13,"Added","","",2,N],[13,"Removed","","",2,N],[13,"MouseMotion","","Change in physical position of a pointing device.",2,N],[12,"delta","glutin::DeviceEvent","(x, y) change in position in unspecified units.",2,N],[13,"MouseWheel","glutin","Physical scroll event",2,N],[12,"delta","glutin::DeviceEvent","",2,N],[13,"Motion","glutin","Motion on some analog axis. This event will be reported for all arbitrary input devices that winit supports on this platform, including mouse devices. If the device is a mouse device then this will be reported alongside the MouseMotion event.",2,N],[12,"axis","glutin::DeviceEvent","",2,N],[12,"value","","",2,N],[13,"Button","glutin","",2,N],[12,"button","glutin::DeviceEvent","",2,N],[12,"state","","",2,N],[13,"Key","glutin","",2,N],[13,"Text","","",2,N],[12,"codepoint","glutin::DeviceEvent","",2,N],[3,"DeviceId","glutin","Identifier of an input device.",N,N],[0,"dpi","","DPI is important, so read the docs for this module if you don't want to be confused.",N,N],[5,"validate_hidpi_factor","glutin::dpi","Checks that the DPI factor is a normal positive `f64`.",N,[[["f64"]],["bool"]]],[3,"LogicalPosition","","A position represented in logical pixels.",N,N],[12,"x","","",3,N],[12,"y","","",3,N],[3,"PhysicalPosition","","A position represented in physical pixels.",N,N],[12,"x","","",4,N],[12,"y","","",4,N],[3,"LogicalSize","","A size represented in logical pixels.",N,N],[12,"width","","",5,N],[12,"height","","",5,N],[3,"PhysicalSize","","A size represented in physical pixels.",N,N],[12,"width","","",6,N],[12,"height","","",6,N],[4,"ElementState","glutin","Describes the input state of a key.",N,N],[13,"Pressed","","",7,N],[13,"Released","","",7,N],[4,"Event","","Describes a generic event.",N,N],[13,"WindowEvent","","",8,N],[12,"window_id","glutin::Event","",8,N],[12,"event","","",8,N],[13,"DeviceEvent","glutin","",8,N],[12,"device_id","glutin::Event","",8,N],[12,"event","","",8,N],[13,"Awakened","glutin","",8,N],[13,"Suspended","","The application has been suspended or resumed.",8,N],[3,"EventsLoop","","Provides a way to retrieve events from the system and from the windows that were registered to the events loop.",N,N],[3,"EventsLoopClosed","","The error that is returned when an `EventsLoopProxy` attempts to wake up an `EventsLoop` that no longer exists.",N,N],[3,"EventsLoopProxy","","Used to wake up the `EventsLoop` from another thread.",N,N],[3,"Icon","","An icon used for the window titlebar, taskbar, etc.",N,N],[3,"KeyboardInput","","Describes a keyboard input event.",N,N],[12,"scancode","","Identifies the physical key pressed",9,N],[12,"state","","",9,N],[12,"virtual_keycode","","Identifies the semantic meaning of the key",9,N],[12,"modifiers","","Modifier keys active at the time of this input.",9,N],[3,"ModifiersState","","Represents the current state of the keyboard modifiers",N,N],[12,"shift","","The \"shift\" key",10,N],[12,"ctrl","","The \"control\" key",10,N],[12,"alt","","The \"alt\" key",10,N],[12,"logo","","The \"logo\" key",10,N],[3,"MonitorId","","Identifier for a monitor.",N,N],[4,"MouseButton","","Describes a button of a mouse controller.",N,N],[13,"Left","","",11,N],[13,"Right","","",11,N],[13,"Middle","","",11
searchIndex["glutin_window"]={"doc":"A Glutin window back-end for the Piston game engine.","items":[[4,"OpenGL","glutin_window","",N,N],[13,"V2_0","","",0,N],[13,"V2_1","","",0,N],[13,"V3_0","","",0,N],[13,"V3_1","","",0,N],[13,"V3_2","","",0,N],[13,"V3_3","","",0,N],[13,"V4_0","","",0,N],[13,"V4_1","","",0,N],[13,"V4_2","","",0,N],[13,"V4_3","","",0,N],[13,"V4_4","","",0,N],[13,"V4_5","","",0,N],[3,"GlutinWindow","","Contains stuff for game window.",N,N],[12,"window","","The window.",1,N],[5,"map_key","","Maps Glutin's key to Piston's key.",N,[[["virtualkeycode"]],["key"]]],[5,"map_mouse","","Maps Glutin's mouse button to Piston's mouse button.",N,[[["mousebutton"]],["mousebutton"]]],[11,"new","","Creates a new game window for Glutin.",1,[[["windowsettings"]],["result",["string"]]]],[11,"size","","",1,[[["self"]],["size"]]],[11,"draw_size","","",1,[[["self"]],["size"]]],[11,"should_close","","",1,[[["self"]],["bool"]]],[11,"set_should_close","","",1,[[["self"],["bool"]]]],[11,"swap_buffers","","",1,[[["self"]]]],[11,"wait_event","","",1,[[["self"]],["input"]]],[11,"wait_event_timeout","","",1,[[["self"],["duration"]],["option",["input"]]]],[11,"poll_event","","",1,[[["self"]],["option",["input"]]]],[11,"build_from_window_settings","","",1,[[["windowsettings"]],["result",["string"]]]],[11,"get_title","","",1,[[["self"]],["string"]]],[11,"set_title","","",1,[[["self"],["string"]]]],[11,"get_exit_on_esc","","",1,[[["self"]],["bool"]]],[11,"set_exit_on_esc","","",1,[[["self"],["bool"]]]],[11,"set_capture_cursor","","",1,[[["self"],["bool"]]]],[11,"show","","",1,[[["self"]]]],[11,"hide","","",1,[[["self"]]]],[11,"get_position","","",1,[[["self"]],["option",["position"]]]],[11,"set_position","","",1,[[["self"],["p"]]]],[11,"set_size","","",1,[[["self"],["s"]]]],[11,"get_proc_address","","",1,[[["self"],["str"]],["procaddress"]]],[11,"is_current","","",1,[[["self"]],["bool"]]],[11,"make_current","","",1,[[["self"]]]],[11,"get_major_minor","","Gets the minor version of OpenGL.",0,N],[11,"to_glsl","","Gets GLSL version associated with OpenGL.",0,[[["self"]],["glsl"]]],[11,"clone","","",0,[[["self"]],["opengl"]]],[11,"fmt","","",0,[[["self"],["formatter"]],["result",["error"]]]],[11,"partial_cmp","","",0,[[["self"],["opengl"]],["option",["ordering"]]]],[11,"cmp","","",0,[[["self"],["opengl"]],["ordering"]]],[11,"from_str","","",0,[[["str"]],["result",["opengl"]]]],[11,"eq","","",0,[[["self"],["opengl"]],["bool"]]]],"paths":[[4,"OpenGL"],[3,"GlutinWindow"]]};
searchIndex["graphics"]={"doc":"A library for 2D graphics that works with multiple back-ends.","items":[[8,"ImageSize","graphics","Implemented by all images to be used with generic algorithms.",N,N],[10,"get_size","","Get the image size.",0,N],[11,"get_width","","Gets the image width.",0,[[["self"]],["u32"]]],[11,"get_height","","Gets the image height.",0,[[["self"]],["u32"]]],[3,"Viewport","","Stores viewport information.",N,N],[12,"rect","","Viewport in pixels. `[x, y, width height]` where `(x, y)` is lower left corner.",1,N],[12,"draw_size","","The size of frame buffer in pixels.",1,N],[12,"window_size","","The size of window in points.",1,N],[5,"clear","","Clears the screen.",N,[[["color"],["g"]]]],[5,"image","","Draws image.",N,N],[5,"ellipse","","Draws ellipse.",N,[[["color"],["r"],["matrix2d"],["g"]]]],[5,"circle_arc","","Draws arc",N,[[["color"],["radius"],["scalar"],["scalar"],["r"],["matrix2d"],["g"]]]],[5,"rectangle","","Draws rectangle.",N,[[["color"],["r"],["matrix2d"],["g"]]]],[5,"polygon","","Draws polygon.",N,[[["color"],["polygon"],["matrix2d"],["g"]]]],[5,"line","","Draws line.",N,[[["color"],["radius"],["l"],["matrix2d"],["g"]]]],[5,"text","","Draws text.",N,[[["color"],["fontsize"],["str"],["c"],["matrix2d"],["g"]],["result"]]],[0,"draw_state","","Graphics draw state.",N,N],[3,"DrawState","graphics::draw_state","Graphics draw state used for blending, clipping and stencil rendering.",N,N],[12,"scissor","","Scissor mask to use. If set, no pixel outside of this rectangle (in screen space) will be written to as a result of rendering.",2,N],[12,"stencil","","Stencil test to use. If None, no stencil testing is done.",2,N],[12,"blend","","Blend function to use. If None, blending is disabled.",2,N],[4,"Blend","","The blend setting to use when drawing.",N,N],[13,"Alpha","","Alpha blending (allows semi-transparent pixels).",3,N],[13,"Add","","Additive blending.",3,N],[13,"Multiply","","Multiply color components.",3,N],[13,"Invert","","Invert colors when rendering a white shape.",3,N],[4,"Stencil","","Stencil buffer settings.",N,N],[13,"Clip","","Draw to stencil buffer.",4,N],[13,"Inside","","Draw pixels that have stencil value.",4,N],[13,"Outside","","Draw pixels that does not have stencil value.",4,N],[11,"clone","","",2,[[["self"]],["drawstate"]]],[11,"eq","","",2,[[["self"],["drawstate"]],["bool"]]],[11,"ne","","",2,[[["self"],["drawstate"]],["bool"]]],[11,"fmt","","",2,[[["self"],["formatter"]],["result"]]],[11,"partial_cmp","","",2,[[["self"],["drawstate"]],["option",["ordering"]]]],[11,"lt","","",2,[[["self"],["drawstate"]],["bool"]]],[11,"le","","",2,[[["self"],["drawstate"]],["bool"]]],[11,"gt","","",2,[[["self"],["drawstate"]],["bool"]]],[11,"ge","","",2,[[["self"],["drawstate"]],["bool"]]],[11,"default","","",2,[[],["self"]]],[11,"new_alpha","","Uses alpha blending.",2,[[],["drawstate"]]],[11,"new_clip","","Draws to stencil buffer with value 255. This can be used for clipping.",2,[[],["drawstate"]]],[11,"new_inside","","Tests against stencil buffer with value 255. Draws inside the shape defined by stencil buffer.",2,[[],["drawstate"]]],[11,"new_outside","","Tests against stencil buffer with value 255. Draws outside the shape defined by stencil buffer.",2,[[],["drawstate"]]],[11,"blend","","Sets blending.",2,[[["self"],["blend"]],["drawstate"]]],[11,"scissor","","Sets scissor `[x, y, w, h]`.",2,N],[11,"clone","","",3,[[["self"]],["blend"]]],[11,"fmt","","",3,[[["self"],["formatter"]],["result"]]],[11,"eq","","",3,[[["self"],["blend"]],["bool"]]],[11,"partial_cmp","","",3,[[["self"],["blend"]],["option",["ordering"]]]],[11,"clone","","",4,[[["self"]],["stencil"]]],[11,"fmt","","",4,[[["self"],["formatter"]],["result"]]],[11,"eq","","",4,[[["self"],["stencil"]],["bool"]]],[11,"ne","","",4,[[["self"],["stencil"]],["bool"]]],[11,"partial_cmp","","",4,[[["self"],["stencil"]],["option",["ordering"]]]],[11,"lt","","",4,[[["self"],["stencil"]],["bool"]]],[11,"le","","",4,[[["self"],["stencil"]],["bool"]]],[11,"gt","","",4,[[["self"],["stencil"]],["bool"]]],[11,"ge","","",4,[[["self"],["stencil"]],["bool"]]],[
searchIndex["image"]={"doc":"This crate provides native rust implementations of image encoders and decoders and basic image manipulation functions.","items":[[3,"Luma","image","Grayscale colors",N,N],[12,"data","","",0,N],[3,"LumaA","","Grayscale colors + alpha channel",N,N],[12,"data","","",1,N],[3,"Rgb","","RGB colors",N,N],[12,"data","","",2,N],[3,"Rgba","","RGB colors + alpha channel",N,N],[12,"data","","",3,N],[3,"Bgr","","BGR colors",N,N],[12,"data","","",4,N],[3,"Bgra","","BGR colors + alpha channel",N,N],[12,"data","","",5,N],[3,"MutPixels","","Mutable pixel iterator",N,N],[3,"Pixels","","Immutable pixel iterator",N,N],[3,"SubImage","","A View into another image",N,N],[3,"ImageBuffer","","Generic image buffer",N,N],[3,"Frame","","A single animation frame",N,N],[3,"Frames","","Holds the frames of the animated image",N,N],[4,"ColorType","","An enumeration over supported color types and their bit depths",N,N],[13,"Gray","","Pixel is grayscale",6,N],[13,"RGB","","Pixel contains R, G and B channels",6,N],[13,"Palette","","Pixel is an index into a color palette",6,N],[13,"GrayA","","Pixel is grayscale with an alpha channel",6,N],[13,"RGBA","","Pixel is RGB with an alpha channel",6,N],[13,"BGR","","Pixel contains B, G and R channels",6,N],[13,"BGRA","","Pixel is BGR with an alpha channel",6,N],[4,"DecodingResult","","Result of a decoding process",N,N],[13,"U8","","A vector of unsigned bytes",7,N],[13,"U16","","A vector of unsigned words",7,N],[4,"ImageError","","An enumeration of Image errors",N,N],[13,"FormatError","","The Image is not formatted properly",8,N],[13,"DimensionError","","The Image's dimensions are either too small or too large",8,N],[13,"UnsupportedError","","The Decoder does not support this image format",8,N],[13,"UnsupportedColor","","The Decoder does not support this color type",8,N],[13,"NotEnoughData","","Not enough data was provided to the Decoder to decode the image",8,N],[13,"IoError","","An I/O Error occurred while decoding the image",8,N],[13,"ImageEnd","","The end of the image has been reached",8,N],[4,"FilterType","","Available Sampling Filters",N,N],[13,"Nearest","","Nearest Neighbor",9,N],[13,"Triangle","","Linear Filter",9,N],[13,"CatmullRom","","Cubic Filter",9,N],[13,"Gaussian","","Gaussian Filter",9,N],[13,"Lanczos3","","Lanczos with window 3",9,N],[4,"ImageFormat","","An enumeration of supported image formats. Not all formats support both encoding and decoding.",N,N],[13,"PNG","","An Image in PNG Format",10,N],[13,"JPEG","","An Image in JPEG Format",10,N],[13,"GIF","","An Image in GIF Format",10,N],[13,"WEBP","","An Image in WEBP Format",10,N],[13,"PNM","","An Image in general PNM Format",10,N],[13,"TIFF","","An Image in TIFF Format",10,N],[13,"TGA","","An Image in TGA Format",10,N],[13,"BMP","","An Image in BMP Format",10,N],[13,"ICO","","An Image in ICO Format",10,N],[13,"HDR","","An Image in Radiance HDR Format",10,N],[4,"ImageOutputFormat","","An enumeration of supported image formats for encoding.",N,N],[13,"PNG","","An Image in PNG Format",11,N],[13,"JPEG","","An Image in JPEG Format with specified quality",11,N],[13,"PNM","","An Image in one of the PNM Formats",11,N],[13,"GIF","","An Image in GIF Format",11,N],[13,"ICO","","An Image in ICO Format",11,N],[13,"BMP","","An Image in BMP Format",11,N],[13,"Unsupported","","A value for signalling an error: An unsupported format was requested",11,N],[4,"DynamicImage","","A Dynamic Image",N,N],[13,"ImageLuma8","","Each pixel in this image is 8-bit Luma",12,N],[13,"ImageLumaA8","","Each pixel in this image is 8-bit Luma with alpha",12,N],[13,"ImageRgb8","","Each pixel in this image is 8-bit Rgb",12,N],[13,"ImageRgba8","","Each pixel in this image is 8-bit Rgb with alpha",12,N],[13,"ImageBgr8","","Each pixel in this image is 8-bit Bgr",12,N],[13,"ImageBgra8","","Each pixel in this image is 8-bit Bgr with alpha",12,N],[5,"Luma","","",N,N],[5,"LumaA","","",N,N],[5,"Rgb","","",N,N],[5,"Rgba","","",N,N],[5,"Bgr","","",N,N],[5,"Bgra","","",N,N],[5,"guess_format","","Guess image format from memory block",N,N],[5,"load","","Create a new image f
searchIndex["inflate"]={"doc":"A DEFLATE decoder written in rust.","items":[[3,"InflateWriter","inflate","A DEFLATE decoder.",N,N],[3,"DeflateDecoder","","A DEFLATE decoder/decompressor.",N,N],[3,"DeflateDecoderBuf","","A DEFLATE decoder/decompressor.",N,N],[3,"InflateStream","","",N,N],[5,"inflate_bytes","","Decompress the given slice of DEFLATE compressed data.",N,N],[5,"inflate_bytes_zlib","","Decompress the given slice of DEFLATE compressed (with zlib headers and trailers) data.",N,N],[5,"inflate_bytes_zlib_no_checksum","","Decompress the given slice of DEFLATE compressed (with zlib headers and trailers) data, without calculating and validating the checksum.",N,N],[11,"new","","",0,[[["w"]],["inflatewriter"]]],[11,"from_zlib","","",0,[[["w"]],["inflatewriter"]]],[11,"finish","","",0,[[["self"]],["result"]]],[11,"write","","",0,N],[11,"flush","","",0,[[["self"]],["result"]]],[11,"new","","Create a new `Deflatedecoderbuf` to read from a raw deflate stream.",1,[[["r"]],["deflatedecoderbuf"]]],[11,"from_zlib","","Create a new `DeflateDecoderbuf` that reads from a zlib wrapped deflate stream.",1,[[["r"]],["deflatedecoderbuf"]]],[11,"from_zlib_no_checksum","","Create a new `DeflateDecoderbuf` that reads from a zlib wrapped deflate stream. without calculating and validating the checksum.",1,[[["r"]],["deflatedecoderbuf"]]],[11,"reset","","Resets the decompressor, and replaces the current inner `BufRead` instance by `r`. without doing any extra reallocations.",1,[[["self"],["r"]],["r"]]],[11,"reset_data","","Resets the decoder, but continue to read from the same reader.",1,[[["self"]]]],[11,"get_ref","","Returns a reference to the underlying `BufRead` instance.",1,[[["self"]],["r"]]],[11,"get_mut","","Returns a mutable reference to the underlying `BufRead` instance.",1,[[["self"]],["r"]]],[11,"into_inner","","Drops the decoder and return the inner `BufRead` instance.",1,[[["self"]],["r"]]],[11,"total_in","","Returns the total bytes read from the underlying `BufRead` instance.",1,[[["self"]],["u64"]]],[11,"total_out","","Returns the total number of bytes output from this decoder.",1,[[["self"]],["u64"]]],[11,"current_checksum","","Returns the calculated checksum value of the currently decoded data.",1,[[["self"]],["u32"]]],[11,"read","","",1,N],[11,"new","","Create a new `Deflatedecoderbuf` to read from a raw deflate stream.",2,[[["r"]],["deflatedecoder"]]],[11,"from_zlib","","Create a new `DeflateDecoderbuf` that reads from a zlib wrapped deflate stream.",2,[[["r"]],["deflatedecoder"]]],[11,"from_zlib_no_checksum","","Create a new `DeflateDecoderbuf` that reads from a zlib wrapped deflate stream. without calculating and validating the checksum.",2,[[["r"]],["deflatedecoder"]]],[11,"reset","","Resets the decompressor, and replaces the current inner `BufRead` instance by `r`. without doing any extra reallocations.",2,[[["self"],["r"]],["r"]]],[11,"get_ref","","Returns a reference to the underlying reader.",2,[[["self"]],["r"]]],[11,"get_mut","","Returns a mutable reference to the underlying reader.",2,[[["self"]],["r"]]],[11,"into_inner","","Returns the total number of bytes output from this decoder.",2,[[["self"]],["r"]]],[11,"reset_data","","Resets the decoder, but continue to read from the same reader.",2,[[["self"]]]],[11,"total_in","","Returns the total bytes read from the underlying reader.",2,[[["self"]],["u64"]]],[11,"total_out","","Returns the total number of bytes output from this decoder.",2,[[["self"]],["u64"]]],[11,"current_checksum","","Returns the calculated checksum value of the currently decoded data.",2,[[["self"]],["u32"]]],[11,"read","","",2,N],[11,"new","","Create a new stream for decoding raw deflate encoded data.",3,[[],["inflatestream"]]],[11,"from_zlib","","Create a new stream for decoding deflate encoded data with a zlib header and footer",3,[[],["inflatestream"]]],[11,"from_zlib_no_checksum","","Create a new stream for decoding deflate encoded data with a zlib header and footer",3,[[],["inflatestream"]]],[11,"reset","","",3,[[["self"]]]],[11,"reset_to_zlib","","",3,[[["self"]]]],[11,"update","","Try
searchIndex["input"]={"doc":"A flexible structure for user interactions to be used in window frameworks and widgets libraries.","items":[[3,"AfterRenderArgs","input","After render arguments.",N,N],[3,"CloseArgs","","Close arguments.",N,N],[3,"IdleArgs","","Idle arguments, such as expected idle time in seconds.",N,N],[12,"dt","","Expected idle time in seconds.",0,N],[3,"ButtonArgs","","Button arguments",N,N],[12,"state","","New state of the button.",1,N],[12,"button","","The button that changed state.",1,N],[12,"scancode","","An optional scancode that tells the physical layout of a keyboard key. For other devices than keyboard, this is set to `None`.",1,N],[3,"RenderArgs","","Render arguments",N,N],[12,"ext_dt","","Extrapolated time in seconds, used to do smooth animation.",2,N],[12,"width","","The width of rendered area in points.",2,N],[12,"height","","The height of rendered area in points.",2,N],[12,"draw_width","","The width of rendered area in pixels.",2,N],[12,"draw_height","","The height of rendered area in pixels.",2,N],[3,"TouchArgs","","Touch arguments",N,N],[12,"device","","A unique identifier for touch device.",3,N],[12,"id","","A unique identifier for touch event.",3,N],[12,"x","","The x coordinate of the touch position, normalized 0..1.",3,N],[12,"y","","The y coordinate of the touch position, normalized 0..1.",3,N],[12,"z","","The z coordinate of the touch position, normalized 0..1.",3,N],[12,"px","","The x coordinate of the touch pressure direction.",3,N],[12,"py","","The y coordinate of the touch pressure direction.",3,N],[12,"pz","","The z coordinate of the touch pressure direction.",3,N],[12,"is_3d","","Whether the touch is in 3D.",3,N],[12,"touch","","The touch state.",3,N],[3,"UpdateArgs","","Update arguments, such as delta time in seconds",N,N],[12,"dt","","Delta time in seconds.",4,N],[3,"EventId","","Used to identify events arguments provided by traits.",N,N],[12,"0","","",5,N],[4,"ButtonState","","Stores button state.",N,N],[13,"Press","","Button was pressed.",6,N],[13,"Release","","Button was released.",6,N],[4,"Touch","","Stores the touch state.",N,N],[13,"Start","","The start of touch, for example a finger pressed down on a touch screen.",7,N],[13,"Move","","The move of touch, for example a finger moving while touching a touch screen.",7,N],[13,"End","","The end of touch, for example taking a finger away from a touch screen.",7,N],[13,"Cancel","","The cancel of touch, for example the window loses focus.",7,N],[4,"Button","","Models different kinds of buttons.",N,N],[13,"Keyboard","","A keyboard button.",8,N],[13,"Mouse","","A mouse button.",8,N],[13,"Controller","","A controller button.",8,N],[13,"Hat","","A controller hat (d-Pad)",8,N],[4,"Motion","","Models different kinds of motion.",N,N],[13,"MouseCursor","","x and y in window coordinates.",9,N],[13,"MouseRelative","","x and y in relative coordinates.",9,N],[13,"MouseScroll","","x and y in scroll ticks.",9,N],[13,"ControllerAxis","","controller axis move event.",9,N],[13,"Touch","","touch event.",9,N],[4,"HatState","","",N,N],[13,"Centered","","",10,N],[13,"Up","","",10,N],[13,"Right","","",10,N],[13,"Down","","",10,N],[13,"Left","","",10,N],[13,"RightUp","","",10,N],[13,"RightDown","","",10,N],[13,"LeftUp","","",10,N],[13,"LeftDown","","",10,N],[4,"Input","","Models input events.",N,N],[13,"Button","","Changed button state.",11,N],[13,"Move","","Moved mouse cursor.",11,N],[13,"Text","","Text (usually from keyboard).",11,N],[13,"Resize","","Window got resized.",11,N],[13,"Focus","","Window gained or lost focus.",11,N],[13,"Cursor","","Window gained or lost cursor.",11,N],[13,"Close","","Window closed.",11,N],[4,"Loop","","Models loop events.",N,N],[13,"Render","","Render graphics.",12,N],[13,"AfterRender","","After rendering and swapping buffers.",12,N],[13,"Update","","Update the state of the application.",12,N],[13,"Idle","","Do background tasks that can be done incrementally.",12,N],[4,"Event","","Models all events.",N,N],[13,"Input","","Input events.",13,N],[13,"Loop","","Events that commonly used by event loops.",13,N],[13,"Custom",""
searchIndex["interpolation"]={"doc":"Interpolation algorithms.","items":[[4,"EaseFunction","interpolation","",N,N],[13,"QuadraticIn","","",0,N],[13,"QuadraticOut","","",0,N],[13,"QuadraticInOut","","",0,N],[13,"CubicIn","","",0,N],[13,"CubicOut","","",0,N],[13,"CubicInOut","","",0,N],[13,"QuarticIn","","",0,N],[13,"QuarticOut","","",0,N],[13,"QuarticInOut","","",0,N],[13,"QuinticIn","","",0,N],[13,"QuinticOut","","",0,N],[13,"QuinticInOut","","",0,N],[13,"SineIn","","",0,N],[13,"SineOut","","",0,N],[13,"SineInOut","","",0,N],[13,"CircularIn","","",0,N],[13,"CircularOut","","",0,N],[13,"CircularInOut","","",0,N],[13,"ExponentialIn","","",0,N],[13,"ExponentialOut","","",0,N],[13,"ExponentialInOut","","",0,N],[13,"ElasticIn","","",0,N],[13,"ElasticOut","","",0,N],[13,"ElasticInOut","","",0,N],[13,"BackIn","","",0,N],[13,"BackOut","","",0,N],[13,"BackInOut","","",0,N],[13,"BounceIn","","",0,N],[13,"BounceOut","","",0,N],[13,"BounceInOut","","",0,N],[5,"lerp","","Performs linear interpolation. A linear interpolation consists of two states 'a' and 'b'. The 't' variable is a factor between 0 and 1 that gives weight to 'a' or 'b'. When 't' is zero then 'a' has full weight. When 't' is one then 'b' has full weight.",N,N],[5,"quad_bez","","Performs quadratic beziér interpolation. This is done by nesting linear interpolations. For more information, see:",N,N],[5,"cub_bez","","Performs cubic beziér interpolation. This is done by interpolation between two quadratic beziér. For more information, see:",N,N],[11,"clone","","",0,[[["self"]],["easefunction"]]],[11,"eq","","",0,[[["self"],["easefunction"]],["bool"]]],[8,"Ease","","",N,N],[10,"calc","","Calculate the eased value, normalized",1,[[["self"],["easefunction"]],["self"]]],[10,"quadratic_in","","",1,[[["self"]],["self"]]],[10,"quadratic_out","","",1,[[["self"]],["self"]]],[10,"quadratic_in_out","","",1,[[["self"]],["self"]]],[10,"cubic_in","","",1,[[["self"]],["self"]]],[10,"cubic_out","","",1,[[["self"]],["self"]]],[10,"cubic_in_out","","",1,[[["self"]],["self"]]],[10,"quartic_in","","",1,[[["self"]],["self"]]],[10,"quartic_out","","",1,[[["self"]],["self"]]],[10,"quartic_in_out","","",1,[[["self"]],["self"]]],[10,"quintic_in","","",1,[[["self"]],["self"]]],[10,"quintic_out","","",1,[[["self"]],["self"]]],[10,"quintic_in_out","","",1,[[["self"]],["self"]]],[10,"sine_in","","",1,[[["self"]],["self"]]],[10,"sine_out","","",1,[[["self"]],["self"]]],[10,"sine_in_out","","",1,[[["self"]],["self"]]],[10,"circular_in","","",1,[[["self"]],["self"]]],[10,"circular_out","","",1,[[["self"]],["self"]]],[10,"circular_in_out","","",1,[[["self"]],["self"]]],[10,"exponential_in","","",1,[[["self"]],["self"]]],[10,"exponential_out","","",1,[[["self"]],["self"]]],[10,"exponential_in_out","","",1,[[["self"]],["self"]]],[10,"elastic_in","","",1,[[["self"]],["self"]]],[10,"elastic_out","","",1,[[["self"]],["self"]]],[10,"elastic_in_out","","",1,[[["self"]],["self"]]],[10,"back_in","","",1,[[["self"]],["self"]]],[10,"back_out","","",1,[[["self"]],["self"]]],[10,"back_in_out","","",1,[[["self"]],["self"]]],[10,"bounce_in","","",1,[[["self"]],["self"]]],[10,"bounce_out","","",1,[[["self"]],["self"]]],[10,"bounce_in_out","","",1,[[["self"]],["self"]]],[8,"Spatial","","Used for interpolation over spatial structures.",N,N],[16,"Scalar","","The scalar type.",2,N],[10,"add","","Add",2,[[["self"],["self"]],["self"]]],[10,"sub","","Subtract",2,[[["self"],["self"]],["self"]]],[10,"scale","","Scales with a scalar.",2,N]],"paths":[[4,"EaseFunction"],[8,"Ease"],[8,"Spatial"]]};
searchIndex["jpeg_decoder"]={"doc":"This crate contains a JPEG decoder.","items":[[3,"Decoder","jpeg_decoder","JPEG decoder",N,N],[3,"ImageInfo","","Represents metadata of an image.",N,N],[12,"width","","The width of the image, in pixels.",0,N],[12,"height","","The height of the image, in pixels.",0,N],[12,"pixel_format","","The pixel format of the image.",0,N],[4,"PixelFormat","","An enumeration over combinations of color spaces and bit depths a pixel can have.",N,N],[13,"L8","","Luminance (grayscale), 8 bits",1,N],[13,"RGB24","","RGB, 8 bits per channel",1,N],[13,"CMYK32","","CMYK, 8 bits per channel",1,N],[4,"Error","","Errors that can occur while decoding a JPEG image.",N,N],[13,"Format","","The image is not formatted properly. The string contains detailed information about the error.",2,N],[13,"Unsupported","","The image makes use of a JPEG feature not (currently) supported by this library.",2,N],[13,"Io","","An I/O error occurred while decoding the image.",2,N],[13,"Internal","","An internal error occurred while decoding the image.",2,N],[4,"UnsupportedFeature","","An enumeration over JPEG features (currently) unsupported by this library.",N,N],[13,"Hierarchical","","Hierarchical JPEG.",3,N],[13,"Lossless","","Lossless JPEG.",3,N],[13,"ArithmeticEntropyCoding","","JPEG using arithmetic entropy coding instead of Huffman coding.",3,N],[13,"SamplePrecision","","Sample precision in bits. 8 bit sample precision is what is currently supported.",3,N],[13,"ComponentCount","","Number of components in an image. 1, 3 and 4 components are currently supported.",3,N],[13,"DNL","","An image can specify a zero height in the frame header and use the DNL (Define Number of Lines) marker at the end of the first scan to define the number of lines in the frame.",3,N],[13,"SubsamplingRatio","","Subsampling ratio.",3,N],[13,"NonIntegerSubsamplingRatio","","A subsampling ratio not representable as an integer.",3,N],[11,"clone","","",1,[[["self"]],["pixelformat"]]],[11,"fmt","","",1,[[["self"],["formatter"]],["result"]]],[11,"eq","","",1,[[["self"],["pixelformat"]],["bool"]]],[11,"clone","","",0,[[["self"]],["imageinfo"]]],[11,"fmt","","",0,[[["self"],["formatter"]],["result"]]],[11,"eq","","",0,[[["self"],["imageinfo"]],["bool"]]],[11,"ne","","",0,[[["self"],["imageinfo"]],["bool"]]],[11,"new","","Creates a new `Decoder` using the reader `reader`.",4,[[["r"]],["decoder"]]],[11,"info","","Returns metadata about the image.",4,[[["self"]],["option",["imageinfo"]]]],[11,"read_info","","Tries to read metadata from the image without decoding it.",4,[[["self"]],["result",["error"]]]],[11,"decode","","Decodes the image and returns the decoded pixels if successful.",4,[[["self"]],["result",["vec","error"]]]],[11,"fmt","","",3,[[["self"],["formatter"]],["result"]]],[11,"fmt","","",2,[[["self"],["formatter"]],["result"]]],[11,"fmt","","",2,[[["self"],["formatter"]],["result"]]],[11,"description","","",2,[[["self"]],["str"]]],[11,"cause","","",2,[[["self"]],["option",["stderror"]]]],[11,"from","","",2,[[["ioerror"]],["error"]]],[11,"from","","",2,[[["recverror"]],["error"]]],[11,"from","","",2,[[["senderror"]],["error"]]]],"paths":[[3,"ImageInfo"],[4,"PixelFormat"],[4,"Error"],[4,"UnsupportedFeature"],[3,"Decoder"]]};
searchIndex["lazy_static"]={"doc":"A macro for declaring lazily evaluated statics.","items":[[5,"initialize","lazy_static","Takes a shared reference to a lazy static and initializes it if it has not been already.",N,[[["t"]]]],[8,"LazyStatic","","Support trait for enabling a few common operation on lazy static values.",N,N],[14,"lazy_static","","",N,N]],"paths":[]};
searchIndex["libc"]={"doc":"Crate docs","items":[[3,"group","libc","",N,N],[12,"gr_name","","",0,N],[12,"gr_passwd","","",0,N],[12,"gr_gid","","",0,N],[12,"gr_mem","","",0,N],[3,"utimbuf","","",N,N],[12,"actime","","",1,N],[12,"modtime","","",1,N],[3,"timeval","","",N,N],[12,"tv_sec","","",2,N],[12,"tv_usec","","",2,N],[3,"timespec","","",N,N],[12,"tv_sec","","",3,N],[12,"tv_nsec","","",3,N],[3,"rlimit","","",N,N],[12,"rlim_cur","","",4,N],[12,"rlim_max","","",4,N],[3,"rusage","","",N,N],[12,"ru_utime","","",5,N],[12,"ru_stime","","",5,N],[12,"ru_maxrss","","",5,N],[12,"ru_ixrss","","",5,N],[12,"ru_idrss","","",5,N],[12,"ru_isrss","","",5,N],[12,"ru_minflt","","",5,N],[12,"ru_majflt","","",5,N],[12,"ru_nswap","","",5,N],[12,"ru_inblock","","",5,N],[12,"ru_oublock","","",5,N],[12,"ru_msgsnd","","",5,N],[12,"ru_msgrcv","","",5,N],[12,"ru_nsignals","","",5,N],[12,"ru_nvcsw","","",5,N],[12,"ru_nivcsw","","",5,N],[3,"in_addr","","",N,N],[12,"s_addr","","",6,N],[3,"in6_addr","","",N,N],[12,"s6_addr","","",7,N],[3,"ip_mreq","","",N,N],[12,"imr_multiaddr","","",8,N],[12,"imr_interface","","",8,N],[3,"ipv6_mreq","","",N,N],[12,"ipv6mr_multiaddr","","",9,N],[12,"ipv6mr_interface","","",9,N],[3,"hostent","","",N,N],[12,"h_name","","",10,N],[12,"h_aliases","","",10,N],[12,"h_addrtype","","",10,N],[12,"h_length","","",10,N],[12,"h_addr_list","","",10,N],[3,"iovec","","",N,N],[12,"iov_base","","",11,N],[12,"iov_len","","",11,N],[3,"pollfd","","",N,N],[12,"fd","","",12,N],[12,"events","","",12,N],[12,"revents","","",12,N],[3,"winsize","","",N,N],[12,"ws_row","","",13,N],[12,"ws_col","","",13,N],[12,"ws_xpixel","","",13,N],[12,"ws_ypixel","","",13,N],[3,"linger","","",N,N],[12,"l_onoff","","",14,N],[12,"l_linger","","",14,N],[3,"sigval","","",N,N],[12,"sival_ptr","","",15,N],[3,"itimerval","","",N,N],[12,"it_interval","","",16,N],[12,"it_value","","",16,N],[3,"tms","","",N,N],[12,"tms_utime","","",17,N],[12,"tms_stime","","",17,N],[12,"tms_cutime","","",17,N],[12,"tms_cstime","","",17,N],[3,"servent","","",N,N],[12,"s_name","","",18,N],[12,"s_aliases","","",18,N],[12,"s_port","","",18,N],[12,"s_proto","","",18,N],[3,"protoent","","",N,N],[12,"p_name","","",19,N],[12,"p_aliases","","",19,N],[12,"p_proto","","",19,N],[3,"sockaddr","","",N,N],[12,"sa_family","","",20,N],[12,"sa_data","","",20,N],[3,"sockaddr_in","","",N,N],[12,"sin_family","","",21,N],[12,"sin_port","","",21,N],[12,"sin_addr","","",21,N],[12,"sin_zero","","",21,N],[3,"sockaddr_in6","","",N,N],[12,"sin6_family","","",22,N],[12,"sin6_port","","",22,N],[12,"sin6_flowinfo","","",22,N],[12,"sin6_addr","","",22,N],[12,"sin6_scope_id","","",22,N],[3,"sockaddr_un","","",N,N],[12,"sun_family","","",23,N],[12,"sun_path","","",23,N],[3,"sockaddr_storage","","",N,N],[12,"ss_family","","",24,N],[3,"addrinfo","","",N,N],[12,"ai_flags","","",25,N],[12,"ai_family","","",25,N],[12,"ai_socktype","","",25,N],[12,"ai_protocol","","",25,N],[12,"ai_addrlen","","",25,N],[12,"ai_addr","","",25,N],[12,"ai_canonname","","",25,N],[12,"ai_next","","",25,N],[3,"sockaddr_nl","","",N,N],[12,"nl_family","","",26,N],[12,"nl_pid","","",26,N],[12,"nl_groups","","",26,N],[3,"sockaddr_ll","","",N,N],[12,"sll_family","","",27,N],[12,"sll_protocol","","",27,N],[12,"sll_ifindex","","",27,N],[12,"sll_hatype","","",27,N],[12,"sll_pkttype","","",27,N],[12,"sll_halen","","",27,N],[12,"sll_addr","","",27,N],[3,"fd_set","","",N,N],[3,"tm","","",N,N],[12,"tm_sec","","",28,N],[12,"tm_min","","",28,N],[12,"tm_hour","","",28,N],[12,"tm_mday","","",28,N],[12,"tm_mon","","",28,N],[12,"tm_year","","",28,N],[12,"tm_wday","","",28,N],[12,"tm_yday","","",28,N],[12,"tm_isdst","","",28,N],[12,"tm_gmtoff","","",28,N],[12,"tm_zone","","",28,N],[3,"sched_param","","",N,N],[12,"sched_priority","","",29,N],[3,"Dl_info","","",N,N],[12,"dli_fname","","",30,N],[12,"dli_fbase","","",30,N],[12,"dli_sname","","",30,N],[12,"dli_saddr","","",30,N],[3,"epoll_event","","",N,N],[12,"events","","",31,N],[12,"u64","","",31,N],[3,"utsname","","",N,N],[12,"sysname","","",32,N],[12,"nodename","","",32,N],[12,"release","","",32,N],[12,"version","",""
searchIndex["libloading"]={"doc":"A memory-safer wrapper around system dynamic library loading primitives.","items":[[3,"Library","libloading","A loaded dynamic library.",N,N],[3,"Symbol","","Symbol from a library.",N,N],[0,"os","","Unsafe, platform specific bindings to dynamic library loading facilities.",N,N],[0,"unix","libloading::os","UNIX implementation of dynamic library loading.",N,N],[3,"Library","libloading::os::unix","A platform-specific equivalent of the cross-platform `Library`.",N,N],[3,"Symbol","","Symbol from a library.",N,N],[11,"new","","Find and load a shared library (module).",0,[[["p"]],["result",["library"]]]],[11,"this","","Load the dynamic libraries linked into main program.",0,[[],["library"]]],[11,"open","","Find and load a shared library (module).",0,[[["option"],["c_int"]],["result",["library"]]]],[11,"get","","Get a pointer to function or static variable by symbol name.",0,N],[11,"drop","","",0,[[["self"]]]],[11,"fmt","","",0,[[["self"],["formatter"]],["result"]]],[11,"lift_option","","Lift Option out of the symbol.",1,[[["self"]],["option",["symbol"]]]],[11,"clone","","",1,[[["self"]],["symbol"]]],[11,"deref","","",1,[[["self"]],["t"]]],[11,"fmt","","",1,[[["self"],["formatter"]],["result"]]],[0,"windows","libloading::os","Windows implementation of dynamic library loading.",N,N],[0,"changelog","libloading","Project changelog",N,N],[0,"r0_5_0","libloading::changelog","Release 0.5.0 (2018-01-11)",N,N],[0,"r0_4_3","","Release 0.4.3 (2017-12-07)",N,N],[0,"r0_4_2","","Release 0.4.2 (2017-09-24)",N,N],[0,"r0_4_1","","Release 0.4.1 (2017-08-29)",N,N],[0,"r0_4_0","","Release 0.4.0 (2017-05-01)",N,N],[0,"r0_3_4","","Release 0.3.4 (2017-03-25)",N,N],[0,"r0_3_3","","Release 0.3.3 (2017-03-25)",N,N],[0,"r0_3_2","","Release 0.3.2 (2017-02-10)",N,N],[0,"r0_3_1","","Release 0.3.1 (2016-10-01)",N,N],[0,"r0_3_0","","Release 0.3.0 (2016-07-27)",N,N],[6,"Result","libloading","",N,N],[11,"new","","Find and load a dynamic library.",2,[[["p"]],["result",["library"]]]],[11,"get","","Get a pointer to function or static variable by symbol name.",2,N],[11,"fmt","","",2,[[["self"],["formatter"]],["result"]]],[11,"from","","",2,[[["library"]],["library"]]],[11,"from","libloading::os::unix","",0,[[["library"]],["library"]]],[11,"into_raw","libloading","Extract the wrapped `os::platform::Symbol`.",3,[[["self"]],["symbol"]]],[11,"from_raw","","Wrap the `os::platform::Symbol` into this safe wrapper.",3,[[["symbol"],["l"]],["symbol"]]],[11,"lift_option","","Lift Option out of the symbol.",3,[[["self"]],["option",["symbol"]]]],[11,"clone","","",3,[[["self"]],["symbol"]]],[11,"deref","","",3,[[["self"]],["t"]]],[11,"fmt","","",3,[[["self"],["formatter"]],["result"]]]],"paths":[[3,"Library"],[3,"Symbol"],[3,"Library"],[3,"Symbol"]]};
searchIndex["lock_api"]={"doc":"This library provides type-safe and fully-featured `Mutex` and `RwLock` types which wrap a simple raw mutex or rwlock type. This has several benefits: not only does it eliminate a large portion of the work in implementing custom lock types, it also allows users to write code which is generic with regards to different lock implementations.","items":[[3,"GuardSend","lock_api","Marker type which indicates that the Guard type for a lock is `Send`.",N,N],[3,"GuardNoSend","","Marker type which indicates that the Guard type for a lock is not `Send`.",N,N],[3,"Mutex","","A mutual exclusion primitive useful for protecting shared data",N,N],[3,"MutexGuard","","An RAII implementation of a \"scoped lock\" of a mutex. When this structure is dropped (falls out of scope), the lock will be unlocked.",N,N],[3,"MappedMutexGuard","","An RAII mutex guard returned by `MutexGuard::map`, which can point to a subfield of the protected data.",N,N],[3,"ReentrantMutex","","A mutex which can be recursively locked by a single thread.",N,N],[3,"ReentrantMutexGuard","","An RAII implementation of a \"scoped lock\" of a reentrant mutex. When this structure is dropped (falls out of scope), the lock will be unlocked.",N,N],[3,"MappedReentrantMutexGuard","","An RAII mutex guard returned by `ReentrantMutexGuard::map`, which can point to a subfield of the protected data.",N,N],[3,"RwLock","","A reader-writer lock",N,N],[3,"RwLockReadGuard","","RAII structure used to release the shared read access of a lock when dropped.",N,N],[3,"RwLockWriteGuard","","RAII structure used to release the exclusive write access of a lock when dropped.",N,N],[3,"RwLockUpgradableReadGuard","","RAII structure used to release the upgradable read access of a lock when dropped.",N,N],[3,"MappedRwLockReadGuard","","An RAII read lock guard returned by `RwLockReadGuard::map`, which can point to a subfield of the protected data.",N,N],[3,"MappedRwLockWriteGuard","","An RAII write lock guard returned by `RwLockWriteGuard::map`, which can point to a subfield of the protected data.",N,N],[11,"new","","Creates a new mutex in an unlocked state ready for use.",0,[[["t"]],["mutex"]]],[11,"into_inner","","Consumes this mutex, returning the underlying data.",0,[[["self"]],["t"]]],[11,"lock","","Acquires a mutex, blocking the current thread until it is able to do so.",0,[[["self"]],["mutexguard"]]],[11,"try_lock","","Attempts to acquire this lock.",0,[[["self"]],["option",["mutexguard"]]]],[11,"get_mut","","Returns a mutable reference to the underlying data.",0,[[["self"]],["t"]]],[11,"force_unlock","","Forcibly unlocks the mutex.",0,[[["self"]]]],[11,"raw","","Returns the underlying raw mutex object.",0,[[["self"]],["r"]]],[11,"force_unlock_fair","","Forcibly unlocks the mutex using a fair unlock procotol.",0,[[["self"]]]],[11,"try_lock_for","","Attempts to acquire this lock until a timeout is reached.",0,N],[11,"try_lock_until","","Attempts to acquire this lock until a timeout is reached.",0,N],[11,"default","","",0,[[],["mutex"]]],[11,"from","","",0,[[["t"]],["mutex"]]],[11,"fmt","","",0,[[["self"],["formatter"]],["result"]]],[11,"mutex","","Returns a reference to the original `Mutex` object.",1,[[["self"]],["mutex"]]],[11,"map","","Makes a new `MappedMutexGuard` for a component of the locked data.",1,[[["self"],["f"]],["mappedmutexguard"]]],[11,"try_map","","Attempts to make a new `MappedMutexGuard` for a component of the locked data. The original guard is return if the closure returns `None`.",1,[[["self"],["f"]],["result",["mappedmutexguard"]]]],[11,"unlocked","","Temporarily unlocks the mutex to execute the given function.",1,[[["self"],["f"]],["u"]]],[11,"unlock_fair","","Unlocks the mutex using a fair unlock protocol.",1,[[["self"]]]],[11,"unlocked_fair","","Temporarily unlocks the mutex to execute the given function.",1,[[["self"],["f"]],["u"]]],[11,"bump","","Temporarily yields the mutex to a waiting thread if there is one.",1,[[["self"]]]],[11,"deref","","",1,[[["self"]],["t"]]],[11,"deref_mut","","",1,[[["self"]],["t"]]],[11,"drop","","",1,[[["self"]]
searchIndex["log"]={"doc":"A lightweight logging facade.","items":[[3,"Record","log","The \"payload\" of a log message.",N,N],[3,"RecordBuilder","","Builder for `Record`.",N,N],[3,"Metadata","","Metadata about a log message.",N,N],[3,"MetadataBuilder","","Builder for `Metadata`.",N,N],[3,"SetLoggerError","","The type returned by [`set_logger`] if [`set_logger`] has already been called.",N,N],[3,"ParseLevelError","","The type returned by [`from_str`] when the string doesn't match any of the log levels.",N,N],[4,"Level","","An enum representing the available verbosity levels of the logger.",N,N],[13,"Error","","The \"error\" level.",0,N],[13,"Warn","","The \"warn\" level.",0,N],[13,"Info","","The \"info\" level.",0,N],[13,"Debug","","The \"debug\" level.",0,N],[13,"Trace","","The \"trace\" level.",0,N],[4,"LevelFilter","","An enum representing the available verbosity level filters of the logger.",N,N],[13,"Off","","A level lower than all log levels.",1,N],[13,"Error","","Corresponds to the `Error` log level.",1,N],[13,"Warn","","Corresponds to the `Warn` log level.",1,N],[13,"Info","","Corresponds to the `Info` log level.",1,N],[13,"Debug","","Corresponds to the `Debug` log level.",1,N],[13,"Trace","","Corresponds to the `Trace` log level.",1,N],[5,"set_max_level","","Sets the global maximum log level.",N,[[["levelfilter"]]]],[5,"max_level","","Returns the current maximum log level.",N,[[],["levelfilter"]]],[5,"set_logger","","Sets the global logger to a `&'static Log`.",N,[[["log"]],["result",["setloggererror"]]]],[5,"logger","","Returns a reference to the logger.",N,[[],["log"]]],[17,"STATIC_MAX_LEVEL","","The statically resolved maximum log level.",N,N],[8,"Log","","A trait encapsulating the operations required of a logger.",N,N],[10,"enabled","","Determines if a log message with the specified metadata would be logged.",2,[[["self"],["metadata"]],["bool"]]],[10,"log","","Logs the `Record`.",2,[[["self"],["record"]]]],[10,"flush","","Flushes any buffered records.",2,[[["self"]]]],[11,"fmt","","",0,[[["self"],["formatter"]],["result"]]],[11,"hash","","",0,N],[11,"clone","","",0,[[["self"]],["level"]]],[11,"eq","","",0,[[["self"],["level"]],["bool"]]],[11,"eq","","",0,[[["self"],["levelfilter"]],["bool"]]],[11,"partial_cmp","","",0,[[["self"],["level"]],["option",["ordering"]]]],[11,"lt","","",0,[[["self"],["level"]],["bool"]]],[11,"le","","",0,[[["self"],["level"]],["bool"]]],[11,"gt","","",0,[[["self"],["level"]],["bool"]]],[11,"ge","","",0,[[["self"],["level"]],["bool"]]],[11,"partial_cmp","","",0,[[["self"],["levelfilter"]],["option",["ordering"]]]],[11,"lt","","",0,[[["self"],["levelfilter"]],["bool"]]],[11,"le","","",0,[[["self"],["levelfilter"]],["bool"]]],[11,"gt","","",0,[[["self"],["levelfilter"]],["bool"]]],[11,"ge","","",0,[[["self"],["levelfilter"]],["bool"]]],[11,"cmp","","",0,[[["self"],["level"]],["ordering"]]],[11,"from_str","","",0,[[["str"]],["result",["level"]]]],[11,"fmt","","",0,[[["self"],["formatter"]],["result"]]],[11,"max","","Returns the most verbose logging level.",0,[[],["level"]]],[11,"to_level_filter","","Converts the `Level` to the equivalent `LevelFilter`.",0,[[["self"]],["levelfilter"]]],[11,"fmt","","",1,[[["self"],["formatter"]],["result"]]],[11,"hash","","",1,N],[11,"clone","","",1,[[["self"]],["levelfilter"]]],[11,"eq","","",1,[[["self"],["levelfilter"]],["bool"]]],[11,"eq","","",1,[[["self"],["level"]],["bool"]]],[11,"partial_cmp","","",1,[[["self"],["levelfilter"]],["option",["ordering"]]]],[11,"lt","","",1,[[["self"],["levelfilter"]],["bool"]]],[11,"le","","",1,[[["self"],["levelfilter"]],["bool"]]],[11,"gt","","",1,[[["self"],["levelfilter"]],["bool"]]],[11,"ge","","",1,[[["self"],["levelfilter"]],["bool"]]],[11,"partial_cmp","","",1,[[["self"],["level"]],["option",["ordering"]]]],[11,"lt","","",1,[[["self"],["level"]],["bool"]]],[11,"le","","",1,[[["self"],["level"]],["bool"]]],[11,"gt","","",1,[[["self"],["level"]],["bool"]]],[11,"ge","","",1,[[["self"],["level"]],["bool"]]],[11,"cmp","","",1,[[["self"],["levelfilter"]],["ordering"]]],[11,"from_str","","",1,[[["str"]],["result",
searchIndex["lzw"]={"doc":"LZW decoder and encoder","items":[[3,"Decoder","lzw","Decoder for a LZW compressed stream (this algorithm is used for GIF files).",N,N],[3,"DecoderEarlyChange","","Decoder for a LZW compressed stream using an “early change” algorithm (used in TIFF files).",N,N],[3,"Encoder","","LZW encoder using the algorithm of GIF files.",N,N],[3,"LsbReader","","Reads bits from a byte stream, LSB first.",N,N],[3,"LsbWriter","","Writes bits to a byte stream, LSB first.",N,N],[3,"MsbReader","","Reads bits from a byte stream, MSB first.",N,N],[3,"MsbWriter","","Writes bits to a byte stream, MSB first.",N,N],[4,"Bits","","Containes either the consumed bytes and reconstructed bits or only the consumed bytes if the supplied buffer was not bit enough",N,N],[13,"Some","","Consumed bytes, reconstructed bits",0,N],[13,"None","","Consumed bytes",0,N],[5,"encode","","Convenience function that reads and compresses all bytes from `R`.",N,[[["r"],["w"],["u8"]],["result"]]],[11,"fmt","","",1,[[["self"],["formatter"]],["result"]]],[11,"new","","Creates a new LZW decoder. ",1,[[["r"],["u8"]],["decoder"]]],[11,"decode_bytes","","Tries to obtain and decode a code word from `bytes`.",1,N],[11,"fmt","","",2,[[["self"],["formatter"]],["result"]]],[11,"new","","Creates a new LZW decoder. ",2,[[["r"],["u8"]],["decoderearlychange"]]],[11,"decode_bytes","","Tries to obtain and decode a code word from `bytes`.",2,N],[11,"new","","Creates a new LZW encoder.",3,[[["w"],["u8"]],["result",["encoder"]]]],[11,"encode_bytes","","Compresses `bytes` and writes the result into the writer.",3,N],[11,"drop","","",3,[[["self"]]]],[11,"fmt","","",4,[[["self"],["formatter"]],["result"]]],[11,"new","","Creates a new bit reader",4,[[],["lsbreader"]]],[11,"fmt","","",5,[[["self"],["formatter"]],["result"]]],[11,"new","","Creates a new bit reader",5,[[],["msbreader"]]],[11,"read_bits","","",4,N],[11,"read_bits","","",5,N],[11,"new","","Creates a new bit reader",6,[[["w"]],["lsbwriter"]]],[11,"write","","",6,N],[11,"flush","","",6,[[["self"]],["result"]]],[11,"new","","Creates a new bit reader",7,[[["w"]],["msbwriter"]]],[11,"write","","",7,N],[11,"flush","","",7,[[["self"]],["result"]]],[11,"write_bits","","",6,[[["self"],["u16"],["u8"]],["result"]]],[11,"write_bits","","",7,[[["self"],["u16"],["u8"]],["result"]]],[8,"BitReader","","A bit reader.",N,N],[10,"read_bits","","Returns the next `n` bits.",8,N],[8,"BitWriter","","A bit writer.",N,N],[10,"write_bits","","Writes the next `n` bits.",9,[[["self"],["u16"],["u8"]],["result"]]]],"paths":[[4,"Bits"],[3,"Decoder"],[3,"DecoderEarlyChange"],[3,"Encoder"],[3,"LsbReader"],[3,"MsbReader"],[3,"LsbWriter"],[3,"MsbWriter"],[8,"BitReader"],[8,"BitWriter"]]};
searchIndex["memmap"]={"doc":"A cross-platform Rust API for memory mapped buffers.","items":[[3,"MmapOptions","memmap","A memory map builder, providing advanced options and flags for specifying memory map behavior.",N,N],[3,"Mmap","","An immutable memory mapped buffer.",N,N],[3,"MmapMut","","A mutable memory mapped buffer.",N,N],[11,"clone","","",0,[[["self"]],["mmapoptions"]]],[11,"fmt","","",0,[[["self"],["formatter"]],["result"]]],[11,"default","","",0,[[],["mmapoptions"]]],[11,"new","","Creates a new set of options for configuring and creating a memory map.",0,[[],["mmapoptions"]]],[11,"offset","","Configures the memory map to start at byte `offset` from the beginning of the file.",0,[[["self"],["usize"]],["self"]]],[11,"len","","Configures the created memory mapped buffer to be `len` bytes long.",0,[[["self"],["usize"]],["self"]]],[11,"stack","","Configures the anonymous memory map to be suitable for a process or thread stack.",0,[[["self"]],["self"]]],[11,"map","","Creates a read-only memory map backed by a file.",0,[[["self"],["file"]],["result",["mmap"]]]],[11,"map_exec","","Creates a readable and executable memory map backed by a file.",0,[[["self"],["file"]],["result",["mmap"]]]],[11,"map_mut","","Creates a writeable memory map backed by a file.",0,[[["self"],["file"]],["result",["mmapmut"]]]],[11,"map_copy","","Creates a copy-on-write memory map backed by a file.",0,[[["self"],["file"]],["result",["mmapmut"]]]],[11,"map_anon","","Creates an anonymous memory map.",0,[[["self"]],["result",["mmapmut"]]]],[11,"map","","Creates a read-only memory map backed by a file.",1,[[["file"]],["result",["mmap"]]]],[11,"make_mut","","Transition the memory map to be writable.",1,[[["self"]],["result",["mmapmut"]]]],[11,"deref","","",1,N],[11,"as_ref","","",1,N],[11,"fmt","","",1,[[["self"],["formatter"]],["result"]]],[11,"map_mut","","Creates a writeable memory map backed by a file.",2,[[["file"]],["result",["mmapmut"]]]],[11,"map_anon","","Creates an anonymous memory map.",2,[[["usize"]],["result",["mmapmut"]]]],[11,"flush","","Flushes outstanding memory map modifications to disk.",2,[[["self"]],["result"]]],[11,"flush_async","","Asynchronously flushes outstanding memory map modifications to disk.",2,[[["self"]],["result"]]],[11,"flush_range","","Flushes outstanding memory map modifications in the range to disk.",2,[[["self"],["usize"],["usize"]],["result"]]],[11,"flush_async_range","","Asynchronously flushes outstanding memory map modifications in the range to disk.",2,[[["self"],["usize"],["usize"]],["result"]]],[11,"make_read_only","","Returns an immutable version of this memory mapped buffer.",2,[[["self"]],["result",["mmap"]]]],[11,"make_exec","","Transition the memory map to be readable and executable.",2,[[["self"]],["result",["mmap"]]]],[11,"deref","","",2,N],[11,"deref_mut","","",2,N],[11,"as_ref","","",2,N],[11,"as_mut","","",2,N],[11,"fmt","","",2,[[["self"],["formatter"]],["result"]]]],"paths":[[3,"MmapOptions"],[3,"Mmap"],[3,"MmapMut"]]};
searchIndex["memoffset"]={"doc":"A crate used for calculating offsets of struct members and their spans.","items":[[14,"offset_of","memoffset","Calculates the offset of the specified field from the start of the struct. This macro supports arbitrary amount of subscripts and recursive member-accesses.",N,N],[14,"span_of","","Produces a range instance representing the sub-slice containing the specified member.",N,N]],"paths":[]};
searchIndex["nix"]={"doc":"Rust friendly bindings to the various *nix system functions.","items":[[4,"Error","nix","Nix Error Type",N,N],[13,"Sys","","",0,N],[13,"InvalidPath","","",0,N],[13,"InvalidUtf8","","The operation involved a conversion to Rust's native String type, which failed because the string did not contain all valid UTF-8.",0,N],[13,"UnsupportedOperation","","The operation is not supported by Nix, in this instance either use the libc bindings or consult the module documentation to see if there is a more appropriate interface available.",0,N],[0,"errno","","",N,N],[4,"Errno","nix::errno","",N,N],[13,"UnknownErrno","","",1,N],[13,"EPERM","","",1,N],[13,"ENOENT","","",1,N],[13,"ESRCH","","",1,N],[13,"EINTR","","",1,N],[13,"EIO","","",1,N],[13,"ENXIO","","",1,N],[13,"E2BIG","","",1,N],[13,"ENOEXEC","","",1,N],[13,"EBADF","","",1,N],[13,"ECHILD","","",1,N],[13,"EAGAIN","","",1,N],[13,"ENOMEM","","",1,N],[13,"EACCES","","",1,N],[13,"EFAULT","","",1,N],[13,"ENOTBLK","","",1,N],[13,"EBUSY","","",1,N],[13,"EEXIST","","",1,N],[13,"EXDEV","","",1,N],[13,"ENODEV","","",1,N],[13,"ENOTDIR","","",1,N],[13,"EISDIR","","",1,N],[13,"EINVAL","","",1,N],[13,"ENFILE","","",1,N],[13,"EMFILE","","",1,N],[13,"ENOTTY","","",1,N],[13,"ETXTBSY","","",1,N],[13,"EFBIG","","",1,N],[13,"ENOSPC","","",1,N],[13,"ESPIPE","","",1,N],[13,"EROFS","","",1,N],[13,"EMLINK","","",1,N],[13,"EPIPE","","",1,N],[13,"EDOM","","",1,N],[13,"ERANGE","","",1,N],[13,"EDEADLK","","",1,N],[13,"ENAMETOOLONG","","",1,N],[13,"ENOLCK","","",1,N],[13,"ENOSYS","","",1,N],[13,"ENOTEMPTY","","",1,N],[13,"ELOOP","","",1,N],[13,"ENOMSG","","",1,N],[13,"EIDRM","","",1,N],[13,"ECHRNG","","",1,N],[13,"EL2NSYNC","","",1,N],[13,"EL3HLT","","",1,N],[13,"EL3RST","","",1,N],[13,"ELNRNG","","",1,N],[13,"EUNATCH","","",1,N],[13,"ENOCSI","","",1,N],[13,"EL2HLT","","",1,N],[13,"EBADE","","",1,N],[13,"EBADR","","",1,N],[13,"EXFULL","","",1,N],[13,"ENOANO","","",1,N],[13,"EBADRQC","","",1,N],[13,"EBADSLT","","",1,N],[13,"EBFONT","","",1,N],[13,"ENOSTR","","",1,N],[13,"ENODATA","","",1,N],[13,"ETIME","","",1,N],[13,"ENOSR","","",1,N],[13,"ENONET","","",1,N],[13,"ENOPKG","","",1,N],[13,"EREMOTE","","",1,N],[13,"ENOLINK","","",1,N],[13,"EADV","","",1,N],[13,"ESRMNT","","",1,N],[13,"ECOMM","","",1,N],[13,"EPROTO","","",1,N],[13,"EMULTIHOP","","",1,N],[13,"EDOTDOT","","",1,N],[13,"EBADMSG","","",1,N],[13,"EOVERFLOW","","",1,N],[13,"ENOTUNIQ","","",1,N],[13,"EBADFD","","",1,N],[13,"EREMCHG","","",1,N],[13,"ELIBACC","","",1,N],[13,"ELIBBAD","","",1,N],[13,"ELIBSCN","","",1,N],[13,"ELIBMAX","","",1,N],[13,"ELIBEXEC","","",1,N],[13,"EILSEQ","","",1,N],[13,"ERESTART","","",1,N],[13,"ESTRPIPE","","",1,N],[13,"EUSERS","","",1,N],[13,"ENOTSOCK","","",1,N],[13,"EDESTADDRREQ","","",1,N],[13,"EMSGSIZE","","",1,N],[13,"EPROTOTYPE","","",1,N],[13,"ENOPROTOOPT","","",1,N],[13,"EPROTONOSUPPORT","","",1,N],[13,"ESOCKTNOSUPPORT","","",1,N],[13,"EOPNOTSUPP","","",1,N],[13,"EPFNOSUPPORT","","",1,N],[13,"EAFNOSUPPORT","","",1,N],[13,"EADDRINUSE","","",1,N],[13,"EADDRNOTAVAIL","","",1,N],[13,"ENETDOWN","","",1,N],[13,"ENETUNREACH","","",1,N],[13,"ENETRESET","","",1,N],[13,"ECONNABORTED","","",1,N],[13,"ECONNRESET","","",1,N],[13,"ENOBUFS","","",1,N],[13,"EISCONN","","",1,N],[13,"ENOTCONN","","",1,N],[13,"ESHUTDOWN","","",1,N],[13,"ETOOMANYREFS","","",1,N],[13,"ETIMEDOUT","","",1,N],[13,"ECONNREFUSED","","",1,N],[13,"EHOSTDOWN","","",1,N],[13,"EHOSTUNREACH","","",1,N],[13,"EALREADY","","",1,N],[13,"EINPROGRESS","","",1,N],[13,"ESTALE","","",1,N],[13,"EUCLEAN","","",1,N],[13,"ENOTNAM","","",1,N],[13,"ENAVAIL","","",1,N],[13,"EISNAM","","",1,N],[13,"EREMOTEIO","","",1,N],[13,"EDQUOT","","",1,N],[13,"ENOMEDIUM","","",1,N],[13,"EMEDIUMTYPE","","",1,N],[13,"ECANCELED","","",1,N],[13,"ENOKEY","","",1,N],[13,"EKEYEXPIRED","","",1,N],[13,"EKEYREVOKED","","",1,N],[13,"EKEYREJECTED","","",1,N],[13,"EOWNERDEAD","","",1,N],[13,"ENOTRECOVERABLE","","",1,N],[13,"ERFKILL","","",1,N],[13,"EHWPOISON","","",1,N],[5,"from_i32","","",N,[[["i32"]],["errno"]]],[5,"errno","","Returns the platform-specific value of errno",N,[[],["
searchIndex["nodrop"]={"doc":"The nodrop crate has the following cargo feature flags:","items":[[3,"NoDrop","nodrop","A type holding T that will not call its destructor on drop",N,N],[11,"new","","Create a new NoDrop.",0,[[["t"]],["nodrop"]]],[11,"into_inner","","Extract the inner value.",0,[[["self"]],["t"]]],[11,"drop","","",0,[[["self"]]]],[11,"deref","","",0,[[["self"]],["t"]]],[11,"deref_mut","","",0,[[["self"]],["t"]]]],"paths":[[3,"NoDrop"]]};
searchIndex["num_cpus"]={"doc":"A crate with utilities to determine the number of CPUs available on the current system.","items":[[5,"get","num_cpus","Returns the number of available CPUs of the current system.",N,[[],["usize"]]],[5,"get_physical","","Returns the number of physical cores of the current system.",N,[[],["usize"]]]],"paths":[]};
searchIndex["num_derive"]={"doc":"Procedural macros to derive numeric traits in Rust.","items":[[5,"from_primitive","num_derive","Derives [`num_traits::FromPrimitive`][from] for simple enums and newtypes.",N,[[["tokenstream"]],["tokenstream"]]],[5,"to_primitive","","Derives [`num_traits::ToPrimitive`][to] for simple enums and newtypes.",N,[[["tokenstream"]],["tokenstream"]]],[5,"num_ops","","Derives [`num_traits::NumOps`][num_ops] for newtypes. The inner type must already implement `NumOps`.",N,[[["tokenstream"]],["tokenstream"]]],[5,"num_cast","","Derives [`num_traits::NumCast`][num_cast] for newtypes. The inner type must already implement `NumCast`.",N,[[["tokenstream"]],["tokenstream"]]],[5,"zero","","Derives [`num_traits::Zero`][zero] for newtypes. The inner type must already implement `Zero`.",N,[[["tokenstream"]],["tokenstream"]]],[5,"one","","Derives [`num_traits::One`][one] for newtypes. The inner type must already implement `One`.",N,[[["tokenstream"]],["tokenstream"]]],[5,"num","","Derives [`num_traits::Num`][num] for newtypes. The inner type must already implement `Num`.",N,[[["tokenstream"]],["tokenstream"]]],[5,"float","","Derives [`num_traits::Float`][float] for newtypes. The inner type must already implement `Float`.",N,[[["tokenstream"]],["tokenstream"]]]],"paths":[]};
searchIndex["num_integer"]={"doc":"Integer trait and functions.","items":[[3,"IterBinomial","num_integer","An iterator over binomial coefficients.",N,N],[5,"sqrt","","Returns the truncated principal square root of an integer -- see Roots::sqrt.",N,[[["t"]],["t"]]],[5,"cbrt","","Returns the truncated principal cube root of an integer -- see Roots::cbrt.",N,[[["t"]],["t"]]],[5,"nth_root","","Returns the truncated principal `n`th root of an integer -- see Roots::nth_root.",N,[[["t"],["u32"]],["t"]]],[5,"div_rem","","Simultaneous integer division and modulus",N,N],[5,"div_floor","","Floored integer division",N,[[["t"],["t"]],["t"]]],[5,"mod_floor","","Floored integer modulus",N,[[["t"],["t"]],["t"]]],[5,"div_mod_floor","","Simultaneous floored integer division and modulus",N,N],[5,"gcd","","Calculates the Greatest Common Divisor (GCD) of the number and `other`. The result is always positive.",N,[[["t"],["t"]],["t"]]],[5,"lcm","","Calculates the Lowest Common Multiple (LCM) of the number and `other`.",N,[[["t"],["t"]],["t"]]],[5,"binomial","","Calculate the binomial coefficient.",N,[[["t"],["t"]],["t"]]],[5,"multinomial","","Calculate the multinomial coefficient.",N,N],[8,"Roots","","Provides methods to compute an integer's square root, cube root, and arbitrary `n`th root.",N,N],[10,"nth_root","","Returns the truncated principal `n`th root of an integer -- `if x >= 0 { ⌊ⁿ√x⌋ } else { ⌈ⁿ√x⌉ }`",0,[[["self"],["u32"]],["self"]]],[11,"sqrt","","Returns the truncated principal square root of an integer -- `⌊√x⌋`",0,[[["self"]],["self"]]],[11,"cbrt","","Returns the truncated principal cube root of an integer -- `if x >= 0 { ⌊∛x⌋ } else { ⌈∛x⌉ }`",0,[[["self"]],["self"]]],[8,"Integer","","",N,N],[10,"div_floor","","Floored integer division.",1,[[["self"],["self"]],["self"]]],[10,"mod_floor","","Floored integer modulo, satisfying:",1,[[["self"],["self"]],["self"]]],[10,"gcd","","Greatest Common Divisor (GCD).",1,[[["self"],["self"]],["self"]]],[10,"lcm","","Lowest Common Multiple (LCM).",1,[[["self"],["self"]],["self"]]],[10,"divides","","Deprecated, use `is_multiple_of` instead.",1,[[["self"],["self"]],["bool"]]],[10,"is_multiple_of","","Returns `true` if `self` is a multiple of `other`.",1,[[["self"],["self"]],["bool"]]],[10,"is_even","","Returns `true` if the number is even.",1,[[["self"]],["bool"]]],[10,"is_odd","","Returns `true` if the number is odd.",1,[[["self"]],["bool"]]],[10,"div_rem","","Simultaneous truncated integer division and modulus. Returns `(quotient, remainder)`.",1,N],[11,"div_mod_floor","","Simultaneous floored integer division and modulus. Returns `(quotient, remainder)`.",1,N],[11,"new","","For a given n, iterate over all binomial coefficients binomial(n, k), for k=0...n.",2,[[["t"]],["iterbinomial"]]],[11,"next","","",2,[[["self"]],["option"]]],[11,"sqrt","","Returns the truncated principal square root of an integer -- `⌊√x⌋`",0,[[["self"]],["self"]]],[11,"cbrt","","Returns the truncated principal cube root of an integer -- `if x >= 0 { ⌊∛x⌋ } else { ⌈∛x⌉ }`",0,[[["self"]],["self"]]]],"paths":[[8,"Roots"],[8,"Integer"],[3,"IterBinomial"]]};
searchIndex["num_iter"]={"doc":"External iterators for generic mathematics","items":[[3,"Range","num_iter","An iterator over the range [start, stop)",N,N],[3,"RangeInclusive","","An iterator over the range [start, stop]",N,N],[3,"RangeStep","","An iterator over the range [start, stop) by `step`. It handles overflow by stopping.",N,N],[3,"RangeStepInclusive","","An iterator over the range [start, stop] by `step`. It handles overflow by stopping.",N,N],[5,"range","","Returns an iterator over the given range [start, stop) (that is, starting at start (inclusive), and ending at stop (exclusive)).",N,[[["a"],["a"]],["range"]]],[5,"range_inclusive","","Return an iterator over the range [start, stop]",N,[[["a"],["a"]],["rangeinclusive"]]],[5,"range_step","","Return an iterator over the range [start, stop) by `step`. It handles overflow by stopping.",N,[[["a"],["a"],["a"]],["rangestep"]]],[5,"range_step_inclusive","","Return an iterator over the range [start, stop] by `step`. It handles overflow by stopping.",N,[[["a"],["a"],["a"]],["rangestepinclusive"]]],[11,"clone","","",0,[[["self"]],["range"]]],[11,"next","","",0,[[["self"]],["option"]]],[11,"size_hint","","",0,N],[11,"next_back","","",0,[[["self"]],["option"]]],[11,"clone","","",1,[[["self"]],["rangeinclusive"]]],[11,"next","","",1,[[["self"]],["option"]]],[11,"size_hint","","",1,N],[11,"next_back","","",1,[[["self"]],["option"]]],[11,"clone","","",2,[[["self"]],["rangestep"]]],[11,"next","","",2,[[["self"]],["option"]]],[11,"clone","","",3,[[["self"]],["rangestepinclusive"]]],[11,"next","","",3,[[["self"]],["option"]]]],"paths":[[3,"Range"],[3,"RangeInclusive"],[3,"RangeStep"],[3,"RangeStepInclusive"]]};
searchIndex["num_rational"]={"doc":"Rational numbers","items":[[3,"Ratio","num_rational","Represents the ratio between two numbers.",N,N],[3,"ParseRatioError","","",N,N],[11,"sum","","",0,[[["i"]],["self"]]],[11,"sum","","",0,[[["i"]],["self"]]],[11,"product","","",0,[[["i"]],["self"]]],[11,"product","","",0,[[["i"]],["self"]]],[11,"add_assign","","",0,[[["self"],["ratio"]]]],[11,"div_assign","","",0,[[["self"],["ratio"]]]],[11,"mul_assign","","",0,[[["self"],["ratio"]]]],[11,"rem_assign","","",0,[[["self"],["ratio"]]]],[11,"sub_assign","","",0,[[["self"],["ratio"]]]],[11,"add_assign","","",0,[[["self"],["t"]]]],[11,"div_assign","","",0,[[["self"],["t"]]]],[11,"mul_assign","","",0,[[["self"],["t"]]]],[11,"rem_assign","","",0,[[["self"],["t"]]]],[11,"sub_assign","","",0,[[["self"],["t"]]]],[11,"add_assign","","",0,[[["self"],["ratio"]]]],[11,"add_assign","","",0,[[["self"],["t"]]]],[11,"div_assign","","",0,[[["self"],["ratio"]]]],[11,"div_assign","","",0,[[["self"],["t"]]]],[11,"mul_assign","","",0,[[["self"],["ratio"]]]],[11,"mul_assign","","",0,[[["self"],["t"]]]],[11,"rem_assign","","",0,[[["self"],["ratio"]]]],[11,"rem_assign","","",0,[[["self"],["t"]]]],[11,"sub_assign","","",0,[[["self"],["ratio"]]]],[11,"sub_assign","","",0,[[["self"],["t"]]]],[6,"Rational","","Alias for a `Ratio` of machine-sized integers.",N,N],[6,"Rational32","","Alias for a `Ratio` of 32-bit-sized integers.",N,N],[6,"Rational64","","Alias for a `Ratio` of 64-bit-sized integers.",N,N],[11,"clone","","",0,[[["self"]],["ratio"]]],[11,"fmt","","",0,[[["self"],["formatter"]],["result"]]],[11,"new","","Creates a new `Ratio`. Fails if `denom` is zero.",0,[[["t"],["t"]],["ratio"]]],[11,"from_integer","","Creates a `Ratio` representing the integer `t`.",0,[[["t"]],["ratio"]]],[11,"new_raw","","Creates a `Ratio` without checking for `denom == 0` or reducing.",0,[[["t"],["t"]],["ratio"]]],[11,"to_integer","","Converts to an integer, rounding towards zero.",0,[[["self"]],["t"]]],[11,"numer","","Gets an immutable reference to the numerator.",0,[[["self"]],["t"]]],[11,"denom","","Gets an immutable reference to the denominator.",0,[[["self"]],["t"]]],[11,"is_integer","","Returns true if the rational number is an integer (denominator is 1).",0,[[["self"]],["bool"]]],[11,"reduced","","Returns a reduced copy of self.",0,[[["self"]],["ratio"]]],[11,"recip","","Returns the reciprocal.",0,[[["self"]],["ratio"]]],[11,"floor","","Rounds towards minus infinity.",0,[[["self"]],["ratio"]]],[11,"ceil","","Rounds towards plus infinity.",0,[[["self"]],["ratio"]]],[11,"round","","Rounds to the nearest integer. Rounds half-way cases away from zero.",0,[[["self"]],["ratio"]]],[11,"trunc","","Rounds towards zero.",0,[[["self"]],["ratio"]]],[11,"fract","","Returns the fractional part of a number, with division rounded towards zero.",0,[[["self"]],["ratio"]]],[11,"pow","","Raises the `Ratio` to the power of an exponent.",0,[[["self"],["i32"]],["ratio"]]],[11,"pow","","",0,[[["self"],["i8"]],["ratio"]]],[11,"pow","","",0,[[["self"],["i8"]],["ratio"]]],[11,"pow","","",0,[[["self"],["i16"]],["ratio"]]],[11,"pow","","",0,[[["self"],["i16"]],["ratio"]]],[11,"pow","","",0,[[["self"],["i32"]],["ratio"]]],[11,"pow","","",0,[[["self"],["i32"]],["ratio"]]],[11,"pow","","",0,[[["self"],["i64"]],["ratio"]]],[11,"pow","","",0,[[["self"],["i64"]],["ratio"]]],[11,"pow","","",0,[[["self"],["isize"]],["ratio"]]],[11,"pow","","",0,[[["self"],["isize"]],["ratio"]]],[11,"pow","","",0,[[["self"],["u8"]],["ratio"]]],[11,"pow","","",0,[[["self"],["u8"]],["ratio"]]],[11,"pow","","",0,[[["self"],["u16"]],["ratio"]]],[11,"pow","","",0,[[["self"],["u16"]],["ratio"]]],[11,"pow","","",0,[[["self"],["u32"]],["ratio"]]],[11,"pow","","",0,[[["self"],["u32"]],["ratio"]]],[11,"pow","","",0,[[["self"],["u64"]],["ratio"]]],[11,"pow","","",0,[[["self"],["u64"]],["ratio"]]],[11,"pow","","",0,[[["self"],["usize"]],["ratio"]]],[11,"pow","","",0,[[["self"],["usize"]],["ratio"]]],[11,"from","","",0,[[["t"]],["ratio"]]],[11,"from","","",0,N],[11,"cmp","","",0,[[["self"],["self"]],["ordering"]]],[11,"partial_cmp","","",0
searchIndex["num_traits"]={"doc":"Numeric traits for generic mathematics","items":[[8,"Bounded","num_traits","Numbers which have upper and lower bounds",N,N],[10,"min_value","","returns the smallest finite number this type can represent",0,[[],["self"]]],[10,"max_value","","returns the largest finite number this type can represent",0,[[],["self"]]],[8,"Float","","Generic trait for floating point numbers",N,N],[10,"nan","","Returns the `NaN` value.",1,[[],["self"]]],[10,"infinity","","Returns the infinite value.",1,[[],["self"]]],[10,"neg_infinity","","Returns the negative infinite value.",1,[[],["self"]]],[10,"neg_zero","","Returns `-0.0`.",1,[[],["self"]]],[10,"min_value","","Returns the smallest finite value that this type can represent.",1,[[],["self"]]],[10,"min_positive_value","","Returns the smallest positive, normalized value that this type can represent.",1,[[],["self"]]],[11,"epsilon","","Returns epsilon, a small positive value.",1,[[],["self"]]],[10,"max_value","","Returns the largest finite value that this type can represent.",1,[[],["self"]]],[10,"is_nan","","Returns `true` if this value is `NaN` and false otherwise.",1,[[["self"]],["bool"]]],[10,"is_infinite","","Returns `true` if this value is positive infinity or negative infinity and false otherwise.",1,[[["self"]],["bool"]]],[10,"is_finite","","Returns `true` if this number is neither infinite nor `NaN`.",1,[[["self"]],["bool"]]],[10,"is_normal","","Returns `true` if the number is neither zero, infinite, [subnormal][subnormal], or `NaN`.",1,[[["self"]],["bool"]]],[10,"classify","","Returns the floating point category of the number. If only one property is going to be tested, it is generally faster to use the specific predicate instead.",1,[[["self"]],["fpcategory"]]],[10,"floor","","Returns the largest integer less than or equal to a number.",1,[[["self"]],["self"]]],[10,"ceil","","Returns the smallest integer greater than or equal to a number.",1,[[["self"]],["self"]]],[10,"round","","Returns the nearest integer to a number. Round half-way cases away from `0.0`.",1,[[["self"]],["self"]]],[10,"trunc","","Return the integer part of a number.",1,[[["self"]],["self"]]],[10,"fract","","Returns the fractional part of a number.",1,[[["self"]],["self"]]],[10,"abs","","Computes the absolute value of `self`. Returns `Float::nan()` if the number is `Float::nan()`.",1,[[["self"]],["self"]]],[10,"signum","","Returns a number that represents the sign of `self`.",1,[[["self"]],["self"]]],[10,"is_sign_positive","","Returns `true` if `self` is positive, including `+0.0`, `Float::infinity()`, and since Rust 1.20 also `Float::nan()`.",1,[[["self"]],["bool"]]],[10,"is_sign_negative","","Returns `true` if `self` is negative, including `-0.0`, `Float::neg_infinity()`, and since Rust 1.20 also `-Float::nan()`.",1,[[["self"]],["bool"]]],[10,"mul_add","","Fused multiply-add. Computes `(self * a) + b` with only one rounding error, yielding a more accurate result than an unfused multiply-add.",1,[[["self"],["self"],["self"]],["self"]]],[10,"recip","","Take the reciprocal (inverse) of a number, `1/x`.",1,[[["self"]],["self"]]],[10,"powi","","Raise a number to an integer power.",1,[[["self"],["i32"]],["self"]]],[10,"powf","","Raise a number to a floating point power.",1,[[["self"],["self"]],["self"]]],[10,"sqrt","","Take the square root of a number.",1,[[["self"]],["self"]]],[10,"exp","","Returns `e^(self)`, (the exponential function).",1,[[["self"]],["self"]]],[10,"exp2","","Returns `2^(self)`.",1,[[["self"]],["self"]]],[10,"ln","","Returns the natural logarithm of the number.",1,[[["self"]],["self"]]],[10,"log","","Returns the logarithm of the number with respect to an arbitrary base.",1,[[["self"],["self"]],["self"]]],[10,"log2","","Returns the base 2 logarithm of the number.",1,[[["self"]],["self"]]],[10,"log10","","Returns the base 10 logarithm of the number.",1,[[["self"]],["self"]]],[11,"to_degrees","","Converts radians to degrees.",1,[[["self"]],["self"]]],[11,"to_radians","","Converts degrees to radians.",1,[[["self"]],["self"]]],[10,"max","","Returns the maximum of the t
searchIndex["opengl_graphics"]={"doc":"An OpenGL back-end for Rust-Graphics","items":[[4,"OpenGL","opengl_graphics","",N,N],[13,"V2_0","","",0,N],[13,"V2_1","","",0,N],[13,"V3_0","","",0,N],[13,"V3_1","","",0,N],[13,"V3_2","","",0,N],[13,"V3_3","","",0,N],[13,"V4_0","","",0,N],[13,"V4_1","","",0,N],[13,"V4_2","","",0,N],[13,"V4_3","","",0,N],[13,"V4_4","","",0,N],[13,"V4_5","","",0,N],[3,"Shaders","","Shader picker.",N,N],[4,"GLSL","","For OpenGL version 3.3 and above, the GLSL version is the same as the OpenGL version.",N,N],[13,"V1_10","","",1,N],[13,"V1_20","","",1,N],[13,"V1_30","","",1,N],[13,"V1_40","","",1,N],[13,"V1_50","","",1,N],[13,"V3_30","","",1,N],[13,"V4_00","","",1,N],[13,"V4_10","","",1,N],[13,"V4_20","","",1,N],[13,"V4_30","","",1,N],[13,"V4_40","","",1,N],[13,"V4_50","","",1,N],[0,"ops","","Image operations for textures.",N,N],[5,"flip_vertical","opengl_graphics::ops","Flips the image vertically.",N,N],[5,"alpha_to_rgba8","","Converts from alpha to rgba8.",N,N],[8,"ImageSize","opengl_graphics","Implemented by all images to be used with generic algorithms.",N,N],[10,"get_size","","Get the image size.",2,N],[11,"get_width","","Gets the image width.",2,[[["self"]],["u32"]]],[11,"get_height","","Gets the image height.",2,[[["self"]],["u32"]]],[3,"TextureSettings","","Texture creation parameters.",N,N],[4,"Format","","Texture format.",N,N],[13,"Rgba8","","`(red, green, blue, alpha)` with values 0-255.",3,N],[8,"CreateTexture","","Implemented by textures for creation.",N,N],[16,"Error","","The error when creating texture.",4,N],[10,"create","","Create texture from memory.",4,N],[8,"UpdateTexture","","Implemented by textures for updating.",N,N],[16,"Error","","The error when updating texture.",5,N],[10,"update","","Update the texture.",5,N],[4,"Filter","","Sampling filter",N,N],[13,"Linear","","A Weighted Linear Blend",6,N],[13,"Nearest","","Nearest Texel",6,N],[3,"Colored","","Describes how to render colored objects.",N,N],[3,"Textured","","Describes how to render textured objects.",N,N],[3,"GlGraphics","","Contains OpenGL data.",N,N],[3,"Texture","","Wraps OpenGL texture data. The texture gets deleted when running out of scope.",N,N],[0,"shader_utils","","Helper functions for dealing with shaders.",N,N],[3,"DynamicAttribute","opengl_graphics::shader_utils","Describes a shader attribute.",N,N],[5,"compile_shader","","Compiles a shader.",N,[[["glenum"],["str"]],["result",["gluint","string"]]]],[5,"attribute_location","","Finds attribute location from a program.",N,[[["gluint"],["str"]],["result",["gluint","string"]]]],[5,"uniform_location","","Finds uniform location from a program.",N,[[["gluint"],["str"]],["result",["gluint","string"]]]],[11,"drop","","",7,[[["self"]]]],[11,"xyz","","Create XYZ vertex attribute.",7,[[["gluint"],["str"],["gluint"]],["result",["dynamicattribute","string"]]]],[11,"xy","","Create XY vertex attribute.",7,[[["gluint"],["str"],["gluint"]],["result",["dynamicattribute","string"]]]],[11,"rgb","","Create RGB color attribute.",7,[[["gluint"],["str"],["gluint"]],["result",["dynamicattribute","string"]]]],[11,"rgba","","Create RGBA color attribute.",7,[[["gluint"],["str"],["gluint"]],["result",["dynamicattribute","string"]]]],[11,"uv","","Create texture coordinate attribute.",7,[[["gluint"],["str"],["gluint"]],["result",["dynamicattribute","string"]]]],[11,"set","","Sets attribute data.",7,N],[0,"error","opengl_graphics","Errors",N,N],[4,"Error","opengl_graphics::error","An enum to represent various possible run-time errors that may occur.",N,N],[13,"IoError","","An error happened with I/O.",8,N],[11,"fmt","","",8,[[["self"],["formatter"]],["result"]]],[11,"fmt","","",8,[[["self"],["formatter"]],["result"]]],[11,"from","","",8,[[["error"]],["error"]]],[0,"shader_uniforms","opengl_graphics","Types and methods for setting shader uniforms",N,N],[3,"ShaderUniform","opengl_graphics::shader_uniforms","Describes a shader uniform of a given type.",N,N],[3,"SUFloat","","Shader uniform float",N,N],[3,"SUInt","","Shader uniform integer",N,N],[3,"SUVec2","","Shader uniform vector of size 2 Vector e
searchIndex["ordered_float"]={"doc":"Wrappers for total order on Floats.","items":[[3,"OrderedFloat","ordered_float","A wrapper around Floats providing an implementation of Ord and Hash.",N,N],[12,"0","","",0,N],[3,"NotNaN","","A wrapper around Floats providing an implementation of Ord and Hash.",N,N],[3,"FloatIsNaN","","An error indicating an attempt to construct NotNaN from a NaN",N,N],[11,"fmt","","",0,[[["self"],["formatter"]],["result"]]],[11,"default","","",0,[[],["orderedfloat"]]],[11,"clone","","",0,[[["self"]],["orderedfloat"]]],[11,"into_inner","","Get the value out.",0,[[["self"]],["t"]]],[11,"as_ref","","",0,[[["self"]],["t"]]],[11,"as_mut","","",0,[[["self"]],["t"]]],[11,"partial_cmp","","",0,[[["self"],["self"]],["option",["ordering"]]]],[11,"cmp","","",0,[[["self"],["self"]],["ordering"]]],[11,"eq","","",0,[[["self"],["orderedfloat"]],["bool"]]],[11,"hash","","",0,[[["self"],["h"]]]],[11,"fmt","","",0,[[["self"],["formatter"]],["result"]]],[11,"into","","",0,[[["self"]],["f32"]]],[11,"into","","",0,[[["self"]],["f64"]]],[11,"from","","",0,[[["t"]],["self"]]],[11,"deref","","",0,N],[11,"deref_mut","","",0,N],[11,"partial_cmp","","",1,[[["self"],["notnan"]],["option",["ordering"]]]],[11,"lt","","",1,[[["self"],["notnan"]],["bool"]]],[11,"le","","",1,[[["self"],["notnan"]],["bool"]]],[11,"gt","","",1,[[["self"],["notnan"]],["bool"]]],[11,"ge","","",1,[[["self"],["notnan"]],["bool"]]],[11,"eq","","",1,[[["self"],["notnan"]],["bool"]]],[11,"ne","","",1,[[["self"],["notnan"]],["bool"]]],[11,"fmt","","",1,[[["self"],["formatter"]],["result"]]],[11,"default","","",1,[[],["notnan"]]],[11,"clone","","",1,[[["self"]],["notnan"]]],[11,"new","","Create a NotNaN value.",1,[[["t"]],["result",["floatisnan"]]]],[11,"unchecked_new","","Create a NotNaN value from a value that is guaranteed to not be NaN",1,[[["t"]],["self"]]],[11,"into_inner","","Get the value out.",1,[[["self"]],["t"]]],[11,"as_ref","","",1,[[["self"]],["t"]]],[11,"cmp","","",1,[[["self"],["notnan"]],["ordering"]]],[11,"hash","","",1,[[["self"],["h"]]]],[11,"fmt","","",1,[[["self"],["formatter"]],["result"]]],[11,"into","","",1,[[["self"]],["f32"]]],[11,"into","","",1,[[["self"]],["f64"]]],[11,"from","","",1,[[["t"]],["self"]]],[11,"deref","","",1,N],[11,"add","","",1,[[["self"],["self"]],["self"]]],[11,"add","","",1,[[["self"],["t"]],["self"]]],[11,"add_assign","","",1,[[["self"],["self"]]]],[11,"add_assign","","",1,[[["self"],["self"]]]],[11,"add_assign","","",1,[[["self"],["f64"]]]],[11,"add_assign","","",1,[[["self"],["f32"]]]],[11,"sub","","",1,[[["self"],["self"]],["self"]]],[11,"sub","","",1,[[["self"],["t"]],["self"]]],[11,"sub_assign","","",1,[[["self"],["self"]]]],[11,"sub_assign","","",1,[[["self"],["self"]]]],[11,"sub_assign","","",1,[[["self"],["f64"]]]],[11,"sub_assign","","",1,[[["self"],["f32"]]]],[11,"mul","","",1,[[["self"],["self"]],["self"]]],[11,"mul","","",1,[[["self"],["t"]],["self"]]],[11,"mul_assign","","",1,[[["self"],["self"]]]],[11,"mul_assign","","",1,[[["self"],["self"]]]],[11,"mul_assign","","",1,[[["self"],["f64"]]]],[11,"mul_assign","","",1,[[["self"],["f32"]]]],[11,"div","","",1,[[["self"],["self"]],["self"]]],[11,"div","","",1,[[["self"],["t"]],["self"]]],[11,"div_assign","","",1,[[["self"],["self"]]]],[11,"div_assign","","",1,[[["self"],["self"]]]],[11,"div_assign","","",1,[[["self"],["f64"]]]],[11,"div_assign","","",1,[[["self"],["f32"]]]],[11,"rem","","",1,[[["self"],["self"]],["self"]]],[11,"rem","","",1,[[["self"],["t"]],["self"]]],[11,"rem_assign","","",1,[[["self"],["self"]]]],[11,"rem_assign","","",1,[[["self"],["self"]]]],[11,"rem_assign","","",1,[[["self"],["f64"]]]],[11,"rem_assign","","",1,[[["self"],["f32"]]]],[11,"neg","","",1,[[["self"]],["self"]]],[11,"clone","","",2,[[["self"]],["floatisnan"]]],[11,"eq","","",2,[[["self"],["floatisnan"]],["bool"]]],[11,"fmt","","",2,[[["self"],["formatter"]],["result"]]],[11,"description","","",2,[[["self"]],["str"]]],[11,"fmt","","",2,[[["self"],["formatter"]],["result"]]],[11,"into","","",2,[[["self"]],["error"]]]],"paths":[[3,"OrderedFloat"],[3,"NotNaN"],[3,"FloatIsNaN
searchIndex["osmesa_sys"]={"doc":"","items":[[3,"OsMesa","osmesa_sys","Symbols loaded from a shared library.",N,N],[12,"OSMesaColorClamp","","",0,N],[12,"OSMesaCreateContext","","",0,N],[12,"OSMesaCreateContextExt","","",0,N],[12,"OSMesaCreateContextAttribs","","",0,N],[12,"OSMesaDestroyContext","","",0,N],[12,"OSMesaGetColorBuffer","","",0,N],[12,"OSMesaGetCurrentContext","","",0,N],[12,"OSMesaGetDepthBuffer","","",0,N],[12,"OSMesaGetIntegerv","","",0,N],[12,"OSMesaGetProcAddress","","",0,N],[12,"OSMesaMakeCurrent","","",0,N],[12,"OSMesaPixelStore","","",0,N],[3,"osmesa_context","","",N,N],[5,"OSMesaColorClamp","","",N,N],[5,"OSMesaCreateContext","","",N,[[["c_uint"],["osmesacontext"]],["osmesacontext"]]],[5,"OSMesaCreateContextExt","","",N,[[["c_uint"],["c_int"],["c_int"],["c_int"],["osmesacontext"]],["osmesacontext"]]],[5,"OSMesaCreateContextAttribs","","",N,N],[5,"OSMesaDestroyContext","","",N,N],[5,"OSMesaGetColorBuffer","","",N,N],[5,"OSMesaGetCurrentContext","","",N,[[],["osmesacontext"]]],[5,"OSMesaGetDepthBuffer","","",N,N],[5,"OSMesaGetIntegerv","","",N,N],[5,"OSMesaGetProcAddress","","",N,N],[5,"OSMesaMakeCurrent","","",N,N],[5,"OSMesaPixelStore","","",N,N],[6,"OSMesaContext","","",N,N],[6,"OSMESAproc","","",N,N],[17,"OSMESA_BGRA","","",N,N],[17,"OSMESA_ARGB","","",N,N],[17,"OSMESA_BGR","","",N,N],[17,"OSMESA_RGB_565","","",N,N],[17,"OSMESA_COLOR_INDEX","","",N,N],[17,"OSMESA_RGB","","",N,N],[17,"OSMESA_RGBA","","",N,N],[17,"OSMESA_WIDTH","","",N,N],[17,"OSMESA_HEIGHT","","",N,N],[17,"OSMESA_FORMAT","","",N,N],[17,"OSMESA_TYPE","","",N,N],[17,"OSMESA_MAX_WIDTH","","",N,N],[17,"OSMESA_MAX_HEIGHT","","",N,N],[17,"OSMESA_ROW_LENGTH","","",N,N],[17,"OSMESA_Y_UP","","",N,N],[17,"OSMESA_DEPTH_BITS","","",N,N],[17,"OSMESA_STENCIL_BITS","","",N,N],[17,"OSMESA_ACCUM_BITS","","",N,N],[17,"OSMESA_PROFILE","","",N,N],[17,"OSMESA_CORE_PROFILE","","",N,N],[17,"OSMESA_COMPAT_PROFILE","","",N,N],[17,"OSMESA_CONTEXT_MAJOR_VERSION","","",N,N],[17,"OSMESA_CONTEXT_MINOR_VERSION","","",N,N],[11,"open","","Tries to open the dynamic library.",0,[[["path"]],["result",["osmesa","loadingerror"]]]],[11,"try_loading","","Try loading the static symbols linked to this library.",0,[[],["result",["osmesa","loadingerror"]]]]],"paths":[[3,"OsMesa"]]};
searchIndex["owning_ref"]={"doc":"An owning reference.","items":[[8,"StableAddress","owning_ref","An unsafe marker trait for types that deref to a stable address, even when moved. For example, this is implemented by Box, Vec, Rc, Arc and String, among others. Even when a Box is moved, the underlying storage remains at a fixed location.",N,N],[8,"CloneStableAddress","","An unsafe marker trait for types where clones deref to the same address. This has all the requirements of StableDeref, and additionally requires that after calling clone(), both the old and new value deref to the same address. For example, Rc and Arc implement CloneStableDeref, but Box and Vec do not.",N,N],[3,"OwningRef","","An owning reference.",N,N],[3,"OwningRefMut","","An mutable owning reference.",N,N],[3,"OwningHandle","","`OwningHandle` is a complement to `OwningRef`. Where `OwningRef` allows consumers to pass around an owned object and a dependent reference, `OwningHandle` contains an owned object and a dependent object.",N,N],[6,"BoxRef","","Typedef of a owning reference that uses a `Box` as the owner.",N,N],[6,"VecRef","","Typedef of a owning reference that uses a `Vec` as the owner.",N,N],[6,"StringRef","","Typedef of a owning reference that uses a `String` as the owner.",N,N],[6,"RcRef","","Typedef of a owning reference that uses a `Rc` as the owner.",N,N],[6,"ArcRef","","Typedef of a owning reference that uses a `Arc` as the owner.",N,N],[6,"RefRef","","Typedef of a owning reference that uses a `Ref` as the owner.",N,N],[6,"RefMutRef","","Typedef of a owning reference that uses a `RefMut` as the owner.",N,N],[6,"MutexGuardRef","","Typedef of a owning reference that uses a `MutexGuard` as the owner.",N,N],[6,"RwLockReadGuardRef","","Typedef of a owning reference that uses a `RwLockReadGuard` as the owner.",N,N],[6,"RwLockWriteGuardRef","","Typedef of a owning reference that uses a `RwLockWriteGuard` as the owner.",N,N],[6,"BoxRefMut","","Typedef of a mutable owning reference that uses a `Box` as the owner.",N,N],[6,"VecRefMut","","Typedef of a mutable owning reference that uses a `Vec` as the owner.",N,N],[6,"StringRefMut","","Typedef of a mutable owning reference that uses a `String` as the owner.",N,N],[6,"RefMutRefMut","","Typedef of a mutable owning reference that uses a `RefMut` as the owner.",N,N],[6,"MutexGuardRefMut","","Typedef of a mutable owning reference that uses a `MutexGuard` as the owner.",N,N],[6,"RwLockWriteGuardRefMut","","Typedef of a mutable owning reference that uses a `RwLockWriteGuard` as the owner.",N,N],[6,"ErasedBoxRef","","Typedef of a owning reference that uses an erased `Box` as the owner.",N,N],[6,"ErasedRcRef","","Typedef of a owning reference that uses an erased `Rc` as the owner.",N,N],[6,"ErasedArcRef","","Typedef of a owning reference that uses an erased `Arc` as the owner.",N,N],[6,"ErasedBoxRefMut","","Typedef of a mutable owning reference that uses an erased `Box` as the owner.",N,N],[8,"Erased","","Helper trait for an erased concrete type an owner dereferences to. This is used in form of a trait object for keeping something around to (virtually) call the destructor.",N,N],[8,"IntoErased","","Helper trait for erasing the concrete type of what an owner derferences to, for example `Box<T> -> Box<Erased>`. This would be unneeded with higher kinded types support in the language.",N,N],[16,"Erased","","Owner with the dereference type substituted to `Erased`.",0,N],[10,"into_erased","","Perform the type erasure.",0,N],[8,"ToHandle","","Trait to implement the conversion of owner to handle for common types.",N,N],[16,"Handle","","The type of handle to be encapsulated by the OwningHandle.",1,N],[10,"to_handle","","Given an appropriately-long-lived pointer to ourselves, create a handle to be encapsulated by the `OwningHandle`.",1,N],[8,"ToHandleMut","","Trait to implement the conversion of owner to mutable handle for common types.",N,N],[16,"HandleMut","","The type of handle to be encapsulated by the OwningHandle.",2,N],[10,"to_handle_mut","","Given an appropriately-long-lived pointer to ourselves, create a mutabl
searchIndex["parking_lot"]={"doc":"This library provides implementations of `Mutex`, `RwLock`, `Condvar` and `Once` that are smaller, faster and more flexible than those in the Rust standard library. It also provides a `ReentrantMutex` type.","items":[[3,"Condvar","parking_lot","A Condition Variable",N,N],[3,"WaitTimeoutResult","","A type indicating whether a timed wait on a condition variable returned due to a time out or not.",N,N],[3,"Once","","A synchronization primitive which can be used to run a one-time initialization. Useful for one-time initialization for globals, FFI or related functionality.",N,N],[3,"RawMutex","","Raw mutex type backed by the parking lot.",N,N],[3,"RawRwLock","","Raw reader-writer lock type backed by the parking lot.",N,N],[3,"RawThreadId","","Implementation of the `GetThreadId` trait for `lock_api::ReentrantMutex`.",N,N],[4,"OnceState","","Current state of a `Once`.",N,N],[13,"New","","A closure has not been executed yet",0,N],[13,"Poisoned","","A closure was executed but panicked.",0,N],[13,"InProgress","","A thread is currently executing a closure.",0,N],[13,"Done","","A closure has completed sucessfully.",0,N],[11,"fmt","","",1,[[["self"],["formatter"]],["result"]]],[11,"eq","","",1,[[["self"],["waittimeoutresult"]],["bool"]]],[11,"ne","","",1,[[["self"],["waittimeoutresult"]],["bool"]]],[11,"clone","","",1,[[["self"]],["waittimeoutresult"]]],[11,"timed_out","","Returns whether the wait was known to have timed out.",1,[[["self"]],["bool"]]],[11,"new","","Creates a new condition variable which is ready to be waited on and notified.",2,[[],["condvar"]]],[11,"notify_one","","Wakes up one blocked thread on this condvar.",2,[[["self"]]]],[11,"notify_all","","Wakes up all blocked threads on this condvar.",2,[[["self"]]]],[11,"wait","","Blocks the current thread until this condition variable receives a notification.",2,[[["self"],["mutexguard"]]]],[11,"wait_until","","Waits on this condition variable for a notification, timing out after the specified time instant.",2,[[["self"],["mutexguard"],["instant"]],["waittimeoutresult"]]],[11,"wait_for","","Waits on this condition variable for a notification, timing out after a specified duration.",2,[[["self"],["mutexguard"],["duration"]],["waittimeoutresult"]]],[11,"default","","",2,[[],["condvar"]]],[11,"fmt","","",2,[[["self"],["formatter"]],["result"]]],[11,"clone","","",0,[[["self"]],["oncestate"]]],[11,"eq","","",0,[[["self"],["oncestate"]],["bool"]]],[11,"fmt","","",0,[[["self"],["formatter"]],["result"]]],[11,"poisoned","","Returns whether the associated `Once` has been poisoned.",0,[[["self"]],["bool"]]],[11,"done","","Returns whether the associated `Once` has successfullly executed a closure.",0,[[["self"]],["bool"]]],[11,"new","","Creates a new `Once` value.",3,[[],["once"]]],[11,"state","","Returns the current state of this `Once`.",3,[[["self"]],["oncestate"]]],[11,"call_once","","Performs an initialization routine once and only once. The given closure will be executed if this is the first time `call_once` has been called, and otherwise the routine will not be invoked.",3,[[["self"],["f"]]]],[11,"call_once_force","","Performs the same function as `call_once` except ignores poisoning.",3,[[["self"],["f"]]]],[11,"default","","",3,[[],["once"]]],[11,"fmt","","",3,[[["self"],["formatter"]],["result"]]],[11,"lock","","",4,[[["self"]]]],[11,"try_lock","","",4,[[["self"]],["bool"]]],[11,"unlock","","",4,[[["self"]]]],[11,"unlock_fair","","",4,[[["self"]]]],[11,"bump","","",4,[[["self"]]]],[11,"try_lock_until","","",4,[[["self"],["instant"]],["bool"]]],[11,"try_lock_for","","",4,[[["self"],["duration"]],["bool"]]],[11,"lock_exclusive","","",5,[[["self"]]]],[11,"try_lock_exclusive","","",5,[[["self"]],["bool"]]],[11,"unlock_exclusive","","",5,[[["self"]]]],[11,"lock_shared","","",5,[[["self"]]]],[11,"try_lock_shared","","",5,[[["self"]],["bool"]]],[11,"unlock_shared","","",5,[[["self"]]]],[11,"unlock_shared_fair","","",5,[[["self"]]]],[11,"unlock_exclusive_fair","","",5,[[["self"]]]],[11,"bump_shared","","",5,[[["self"]]]],[11,"bump_exclusive","",""
searchIndex["parking_lot_core"]={"doc":"This library exposes a low-level API for creating your own efficient synchronization primitives.","items":[[3,"ParkToken","parking_lot_core","A value associated with a parked thread which can be used by `unpark_filter`.",N,N],[12,"0","","",0,N],[3,"UnparkResult","","Result of an unpark operation.",N,N],[12,"unparked_threads","","The number of threads that were unparked.",1,N],[12,"have_more_threads","","Whether there are any threads remaining in the queue. This only returns true if a thread was unparked.",1,N],[12,"be_fair","","This is set to true on average once every 0.5ms for any given key. It should be used to switch to a fair unlocking mechanism for a particular unlock.",1,N],[3,"UnparkToken","","A value which is passed from an unparker to a parked thread.",N,N],[12,"0","","",2,N],[3,"SpinWait","","A counter used to perform exponential backoff in spin loops.",N,N],[4,"FilterOp","","Operation that `unpark_filter` should perform for each thread.",N,N],[13,"Unpark","","Unpark the thread and continue scanning the list of parked threads.",3,N],[13,"Skip","","Don't unpark the thread and continue scanning the list of parked threads.",3,N],[13,"Stop","","Don't unpark the thread and stop scanning the list of parked threads.",3,N],[4,"ParkResult","","Result of a park operation.",N,N],[13,"Unparked","","We were unparked by another thread with the given token.",4,N],[13,"Invalid","","The validation callback returned false.",4,N],[13,"TimedOut","","The timeout expired.",4,N],[4,"RequeueOp","","Operation that `unpark_requeue` should perform.",N,N],[13,"Abort","","Abort the operation without doing anything.",5,N],[13,"UnparkOneRequeueRest","","Unpark one thread and requeue the rest onto the target queue.",5,N],[13,"RequeueAll","","Requeue all threads onto the target queue.",5,N],[5,"park","","Parks the current thread in the queue associated with the given key.",N,[[["usize"],["v"],["b"],["t"],["parktoken"],["option",["instant"]]],["parkresult"]]],[5,"unpark_all","","Unparks all threads in the queue associated with the given key.",N,[[["usize"],["unparktoken"]],["usize"]]],[5,"unpark_filter","","Unparks a number of threads from the front of the queue associated with `key` depending on the results of a filter function which inspects the `ParkToken` associated with each thread.",N,[[["usize"],["f"],["c"]],["unparkresult"]]],[5,"unpark_one","","Unparks one thread from the queue associated with the given key.",N,[[["usize"],["c"]],["unparkresult"]]],[5,"unpark_requeue","","Removes all threads from the queue associated with `key_from`, optionally unparks the first one and requeues the rest onto the queue associated with `key_to`.",N,[[["usize"],["usize"],["v"],["c"]],["unparkresult"]]],[11,"clone","","",4,[[["self"]],["parkresult"]]],[11,"eq","","",4,[[["self"],["parkresult"]],["bool"]]],[11,"ne","","",4,[[["self"],["parkresult"]],["bool"]]],[11,"fmt","","",4,[[["self"],["formatter"]],["result"]]],[11,"is_unparked","","Returns true if we were unparked by another thread.",4,[[["self"]],["bool"]]],[11,"clone","","",1,[[["self"]],["unparkresult"]]],[11,"eq","","",1,[[["self"],["unparkresult"]],["bool"]]],[11,"ne","","",1,[[["self"],["unparkresult"]],["bool"]]],[11,"fmt","","",1,[[["self"],["formatter"]],["result"]]],[11,"clone","","",5,[[["self"]],["requeueop"]]],[11,"eq","","",5,[[["self"],["requeueop"]],["bool"]]],[11,"fmt","","",5,[[["self"],["formatter"]],["result"]]],[11,"clone","","",3,[[["self"]],["filterop"]]],[11,"eq","","",3,[[["self"],["filterop"]],["bool"]]],[11,"fmt","","",3,[[["self"],["formatter"]],["result"]]],[11,"clone","","",2,[[["self"]],["unparktoken"]]],[11,"eq","","",2,[[["self"],["unparktoken"]],["bool"]]],[11,"ne","","",2,[[["self"],["unparktoken"]],["bool"]]],[11,"fmt","","",2,[[["self"],["formatter"]],["result"]]],[11,"clone","","",0,[[["self"]],["parktoken"]]],[11,"eq","","",0,[[["self"],["parktoken"]],["bool"]]],[11,"ne","","",0,[[["self"],["parktoken"]],["bool"]]],[11,"fmt","","",0,[[["self"],["formatter"]],["result"]]],[11,"new","","Creates a new `SpinWait`.",6,[[],["s
searchIndex["percent_encoding"]={"doc":"URLs use special chacters to indicate the parts of the request. For example, a forward slash indicates a path. In order for that charcter to exist outside of a path separator, that charcter would need to be encoded.","items":[[3,"SIMPLE_ENCODE_SET","percent_encoding","This encode set is used for the path of cannot-be-a-base URLs.",N,N],[3,"QUERY_ENCODE_SET","","This encode set is used in the URL parser for query strings.",N,N],[3,"DEFAULT_ENCODE_SET","","This encode set is used for path components.",N,N],[3,"PATH_SEGMENT_ENCODE_SET","","This encode set is used for on '/'-separated path segment",N,N],[3,"USERINFO_ENCODE_SET","","This encode set is used for username and password.",N,N],[3,"PercentEncode","","The return type of `percent_encode()` and `utf8_percent_encode()`.",N,N],[3,"PercentDecode","","The return type of `percent_decode()`.",N,N],[5,"percent_encode_byte","","Return the percent-encoding of the given bytes.",N,[[["u8"]],["str"]]],[5,"percent_encode","","Percent-encode the given bytes with the given encode set.",N,N],[5,"utf8_percent_encode","","Percent-encode the UTF-8 encoding of the given string.",N,[[["str"],["e"]],["percentencode"]]],[5,"percent_decode","","Percent-decode the given bytes.",N,N],[8,"EncodeSet","","Represents a set of characters / bytes that should be percent-encoded.",N,N],[10,"contains","","Called with UTF-8 bytes rather than code points. Should return true for all non-ASCII bytes.",0,[[["self"],["u8"]],["bool"]]],[11,"clone","","",1,[[["self"]],["simple_encode_set"]]],[11,"fmt","","",1,[[["self"],["formatter"]],["result"]]],[11,"contains","","",1,[[["self"],["u8"]],["bool"]]],[11,"clone","","",2,[[["self"]],["query_encode_set"]]],[11,"fmt","","",2,[[["self"],["formatter"]],["result"]]],[11,"contains","","",2,[[["self"],["u8"]],["bool"]]],[11,"clone","","",3,[[["self"]],["default_encode_set"]]],[11,"fmt","","",3,[[["self"],["formatter"]],["result"]]],[11,"contains","","",3,[[["self"],["u8"]],["bool"]]],[11,"clone","","",4,[[["self"]],["path_segment_encode_set"]]],[11,"fmt","","",4,[[["self"],["formatter"]],["result"]]],[11,"contains","","",4,[[["self"],["u8"]],["bool"]]],[11,"clone","","",5,[[["self"]],["userinfo_encode_set"]]],[11,"fmt","","",5,[[["self"],["formatter"]],["result"]]],[11,"contains","","",5,[[["self"],["u8"]],["bool"]]],[11,"clone","","",6,[[["self"]],["percentencode"]]],[11,"fmt","","",6,[[["self"],["formatter"]],["result"]]],[11,"next","","",6,[[["self"]],["option",["str"]]]],[11,"size_hint","","",6,N],[11,"fmt","","",6,[[["self"],["formatter"]],["result"]]],[11,"clone","","",7,[[["self"]],["percentdecode"]]],[11,"fmt","","",7,[[["self"],["formatter"]],["result"]]],[11,"next","","",7,[[["self"]],["option",["u8"]]]],[11,"size_hint","","",7,N],[11,"if_any","","If the percent-decoding is different from the input, return it as a new bytes vector.",7,[[["self"]],["option",["vec"]]]],[11,"decode_utf8","","Decode the result of percent-decoding as UTF-8.",7,[[["self"]],["result",["cow","utf8error"]]]],[11,"decode_utf8_lossy","","Decode the result of percent-decoding as UTF-8, lossily.",7,[[["self"]],["cow",["str"]]]],[14,"define_encode_set","","Define a new struct that implements the `EncodeSet` trait, for use in `percent_decode()` and related functions.",N,N]],"paths":[[8,"EncodeSet"],[3,"SIMPLE_ENCODE_SET"],[3,"QUERY_ENCODE_SET"],[3,"DEFAULT_ENCODE_SET"],[3,"PATH_SEGMENT_ENCODE_SET"],[3,"USERINFO_ENCODE_SET"],[3,"PercentEncode"],[3,"PercentDecode"]]};
searchIndex["piston"]={"doc":"A user friendly game engine written in Rust.","items":[],"paths":[]};
searchIndex["png"]={"doc":"PNG encoder and decoder This crate contains a PNG encoder and decoder. It supports reading of single lines or whole frames. ## The decoder The most important types for decoding purposes are `Decoder` and `Reader`. They both wrap a `std::io::Read`. `Decoder` serves as a builder for `Reader`. Calling `Decoder::read_info` reads from the `Read` until the image data is reached. ### Using the decoder use std::fs::File;","items":[[3,"PixelDimensions","png","Pixel dimensions information",N,N],[12,"xppu","","Pixels per unit, X axis",0,N],[12,"yppu","","Pixels per unit, Y axis",0,N],[12,"unit","","Either Meter or Unspecified",0,N],[3,"FrameControl","","Frame control information",N,N],[12,"sequence_number","","Sequence number of the animation chunk, starting from 0",1,N],[12,"width","","Width of the following frame",1,N],[12,"height","","Height of the following frame",1,N],[12,"x_offset","","X position at which to render the following frame",1,N],[12,"y_offset","","Y position at which to render the following frame",1,N],[12,"delay_num","","Frame delay fraction numerator",1,N],[12,"delay_den","","Frame delay fraction denominator",1,N],[12,"dispose_op","","Type of frame area disposal to be done after rendering this frame",1,N],[12,"blend_op","","Type of frame area rendering for this frame",1,N],[3,"AnimationControl","","Animation control information",N,N],[12,"num_frames","","Number of frames",2,N],[12,"num_plays","","Number of times to loop this APNG. 0 indicates infinite looping.",2,N],[3,"Info","","PNG info struct",N,N],[12,"width","","",3,N],[12,"height","","",3,N],[12,"bit_depth","","",3,N],[12,"color_type","","",3,N],[12,"interlaced","","",3,N],[12,"trns","","",3,N],[12,"pixel_dims","","",3,N],[12,"palette","","",3,N],[12,"frame_control","","",3,N],[12,"animation_control","","",3,N],[3,"Transformations","","Output transformations",N,N],[3,"Decoder","","PNG Decoder",N,N],[3,"Reader","","PNG reader (mostly high-level interface)",N,N],[3,"OutputInfo","","Output info",N,N],[12,"width","","",4,N],[12,"height","","",4,N],[12,"color_type","","",4,N],[12,"bit_depth","","",4,N],[12,"line_size","","",4,N],[3,"StreamingDecoder","","PNG StreamingDecoder (low-level interface)",N,N],[3,"Encoder","","PNG Encoder",N,N],[3,"Writer","","PNG writer",N,N],[4,"ColorType","","",N,N],[13,"Grayscale","","",5,N],[13,"RGB","","",5,N],[13,"Indexed","","",5,N],[13,"GrayscaleAlpha","","",5,N],[13,"RGBA","","",5,N],[4,"BitDepth","","Bit depth of the png file",N,N],[13,"One","","",6,N],[13,"Two","","",6,N],[13,"Four","","",6,N],[13,"Eight","","",6,N],[13,"Sixteen","","",6,N],[4,"Unit","","Physical unit of the pixel dimensions",N,N],[13,"Unspecified","","",7,N],[13,"Meter","","",7,N],[4,"Decoded","","Result of the decoding process",N,N],[13,"Nothing","","Nothing decoded yet",8,N],[13,"Header","","",8,N],[13,"ChunkBegin","","",8,N],[13,"ChunkComplete","","",8,N],[13,"PixelDimensions","","",8,N],[13,"AnimationControl","","",8,N],[13,"FrameControl","","",8,N],[13,"ImageData","","Decoded raw image data.",8,N],[13,"PartialChunk","","",8,N],[13,"ImageEnd","","",8,N],[4,"DecodingError","","",N,N],[13,"IoError","","",9,N],[13,"Format","","",9,N],[13,"InvalidSignature","","",9,N],[13,"CrcMismatch","","",9,N],[12,"recover","png::DecodingError","bytes to skip to try to recover from this error",9,N],[12,"crc_val","","Stored CRC32 value",9,N],[12,"crc_sum","","Calculated CRC32 sum",9,N],[12,"chunk","","",9,N],[13,"Other","png","",9,N],[13,"CorruptFlateStream","","",9,N],[4,"EncodingError","","",N,N],[13,"IoError","","",10,N],[13,"Format","","",10,N],[0,"chunk","","Chunk types and functions",N,N],[5,"is_critical","png::chunk","Returns true if the chunk is critical.",N,[[["chunktype"]],["bool"]]],[5,"is_private","","Returns true if the chunk is private.",N,[[["chunktype"]],["bool"]]],[5,"reserved_set","","Checks whether the reserved bit of the chunk name is set. If it is set the chunk name is invalid.",N,[[["chunktype"]],["bool"]]],[5,"safe_to_copy","","Returns true if the chunk is safe to copy if unknown.",N,[[["chunktype"]],["bool"]]],[6,"
searchIndex["proc_macro2"]={"doc":"A \"shim crate\" intended to multiplex the [`proc_macro`] API on to stable Rust.","items":[[3,"TokenStream","proc_macro2","An abstract stream of tokens, or more concretely a sequence of token trees.",N,N],[3,"LexError","","Error returned from `TokenStream::from_str`.",N,N],[3,"Span","","A region of source code, along with macro expansion information.",N,N],[3,"Group","","A delimited token stream.",N,N],[3,"Punct","","An `Punct` is an single punctuation character like `+`, `-` or `#`.",N,N],[3,"Ident","","A word of Rust code, which may be a keyword or legal variable name.",N,N],[3,"Literal","","A literal string (`\"hello\"`), byte string (`b\"hello\"`), character (`'a'`), byte character (`b'a'`), an integer or floating point number with or without a suffix (`1`, `1u8`, `2.3`, `2.3f32`).",N,N],[4,"TokenTree","","A single token or a delimited sequence of token trees (e.g. `[1, (), ..]`).",N,N],[13,"Group","","A token stream surrounded by bracket delimiters.",0,N],[13,"Ident","","An identifier.",0,N],[13,"Punct","","A single punctuation character (`+`, `,`, `$`, etc.).",0,N],[13,"Literal","","A literal character (`'a'`), string (`\"hello\"`), number (`2.3`), etc.",0,N],[4,"Delimiter","","Describes how a sequence of token trees is delimited.",N,N],[13,"Parenthesis","","`( ... )`",1,N],[13,"Brace","","`{ ... }`",1,N],[13,"Bracket","","`[ ... ]`",1,N],[13,"None","","`Ø ... Ø`",1,N],[4,"Spacing","","Whether an `Punct` is followed immediately by another `Punct` or followed by another token or whitespace.",N,N],[13,"Alone","","E.g. `+` is `Alone` in `+ =`, `+ident` or `+()`.",2,N],[13,"Joint","","E.g. `+` is `Joint` in `+=` or `'#`.",2,N],[11,"from","","",3,[[["span"]],["span"]]],[0,"token_stream","","Public implementation details for the `TokenStream` type, such as iterators.",N,N],[3,"IntoIter","proc_macro2::token_stream","An iterator over `TokenStream`'s `TokenTree`s.",N,N],[11,"next","","",4,[[["self"]],["option",["tokentree"]]]],[11,"fmt","","",4,[[["self"],["formatter"]],["result"]]],[11,"into_iter","proc_macro2","",5,[[["self"]],["intoiter"]]],[11,"clone","","",5,[[["self"]],["tokenstream"]]],[11,"new","","Returns an empty `TokenStream` containing no token trees.",5,[[],["tokenstream"]]],[11,"empty","","",5,[[],["tokenstream"]]],[11,"is_empty","","Checks if this `TokenStream` is empty.",5,[[["self"]],["bool"]]],[11,"default","","",5,[[],["self"]]],[11,"from_str","","",5,[[["str"]],["result",["tokenstream","lexerror"]]]],[11,"from","","",5,[[["tokenstream"]],["tokenstream"]]],[11,"extend","","",5,[[["self"],["i"]]]],[11,"extend","","",5,[[["self"],["i"]]]],[11,"from_iter","","",5,[[["i"]],["self"]]],[11,"from_iter","","",5,[[["i"]],["self"]]],[11,"fmt","","",5,[[["self"],["formatter"]],["result"]]],[11,"fmt","","",5,[[["self"],["formatter"]],["result"]]],[11,"fmt","","",6,[[["self"],["formatter"]],["result"]]],[11,"clone","","",3,[[["self"]],["span"]]],[11,"call_site","","The span of the invocation of the current procedural macro.",3,[[],["span"]]],[11,"fmt","","",3,[[["self"],["formatter"]],["result"]]],[11,"clone","","",0,[[["self"]],["tokentree"]]],[11,"span","","Returns the span of this tree, delegating to the `span` method of the contained token or a delimited stream.",0,[[["self"]],["span"]]],[11,"set_span","","Configures the span for only this token.",0,[[["self"],["span"]]]],[11,"from","","",0,[[["group"]],["tokentree"]]],[11,"from","","",0,[[["ident"]],["tokentree"]]],[11,"from","","",0,[[["punct"]],["tokentree"]]],[11,"from","","",0,[[["literal"]],["tokentree"]]],[11,"fmt","","",0,[[["self"],["formatter"]],["result"]]],[11,"fmt","","",0,[[["self"],["formatter"]],["result"]]],[11,"clone","","",7,[[["self"]],["group"]]],[11,"clone","","",1,[[["self"]],["delimiter"]]],[11,"fmt","","",1,[[["self"],["formatter"]],["result"]]],[11,"eq","","",1,[[["self"],["delimiter"]],["bool"]]],[11,"new","","Creates a new `Group` with the given delimiter and token stream.",7,[[["delimiter"],["tokenstream"]],["group"]]],[11,"delimiter","","Returns the delimiter of this `Group`",7,[[["self"]],["delim
searchIndex["quote"]={"doc":"This crate provides the [`quote!`] macro for turning Rust syntax tree data structures into tokens of source code.","items":[[8,"TokenStreamExt","quote","TokenStream extension trait with methods for appending tokens.",N,N],[10,"append","","",0,[[["self"],["u"]]]],[10,"append_all","","",0,[[["self"],["i"]]]],[10,"append_separated","","",0,[[["self"],["i"],["u"]]]],[10,"append_terminated","","",0,[[["self"],["i"],["u"]]]],[8,"ToTokens","","Types that can be interpolated inside a [`quote!`] invocation.",N,N],[10,"to_tokens","","Write `self` to the given `TokenStream`.",1,[[["self"],["tokenstream"]]]],[11,"into_token_stream","","Convert `self` directly into a `TokenStream` object.",1,[[["self"]],["tokenstream"]]],[14,"quote","","The whole point.",N,N],[14,"quote_spanned","","Same as `quote!`, but applies a given span to all tokens originating within the macro invocation.",N,N],[11,"into_token_stream","","Convert `self` directly into a `TokenStream` object.",1,[[["self"]],["tokenstream"]]]],"paths":[[8,"TokenStreamExt"],[8,"ToTokens"]]};
searchIndex["rand"]={"doc":"Utilities for random number generation","items":[[8,"RngCore","rand","The core of a random number generator.",N,N],[10,"next_u32","","Return the next random `u32`.",0,[[["self"]],["u32"]]],[10,"next_u64","","Return the next random `u64`.",0,[[["self"]],["u64"]]],[10,"fill_bytes","","Fill `dest` with random data.",0,N],[10,"try_fill_bytes","","Fill `dest` entirely with random data.",0,N],[8,"CryptoRng","","A marker trait used to indicate that an [`RngCore`] or [`BlockRngCore`] implementation is supposed to be cryptographically secure.",N,N],[8,"SeedableRng","","A random number generator that can be explicitly seeded.",N,N],[16,"Seed","","Seed type, which is restricted to types mutably-dereferencable as `u8` arrays (we recommend `[u8; N]` for some `N`).",1,N],[10,"from_seed","","Create a new PRNG using the given seed.",1,N],[11,"seed_from_u64","","Create a new PRNG using a `u64` seed.",1,[[["u64"]],["self"]]],[11,"from_rng","","Create a new PRNG seeded from another `Rng`.",1,[[["r"]],["result",["error"]]]],[4,"ErrorKind","","Error kind which can be matched over.",N,N],[13,"Unavailable","","Feature is not available; not recoverable.",2,N],[13,"Unexpected","","General failure; there may be a chance of recovery on retry.",2,N],[13,"Transient","","A transient failure which likely can be resolved or worked around.",2,N],[13,"NotReady","","Not ready yet: recommended to try again a little later.",2,N],[3,"Error","","Error type of random number generators",N,N],[12,"kind","","The error kind",3,N],[12,"msg","","The error message",3,N],[3,"Generator","","Iterator which will generate a stream of random items.",N,N],[3,"AsciiGenerator","","Iterator which will continuously generate random ascii characters.",N,N],[5,"thread_rng","","Retrieve the lazily-initialized thread-local random number generator, seeded by the system. Intended to be used in method chaining style, e.g. `thread_rng().gen::<i32>()`, or cached locally, e.g. `let mut rng = thread_rng();`.",N,[[],["threadrng"]]],[5,"weak_rng","","DEPRECATED: use [`SmallRng`] instead.",N,[[],["xorshiftrng"]]],[5,"random","","Generates a random value using the thread-local random number generator.",N,[[],["t"]]],[5,"sample","","DEPRECATED: use `seq::sample_iter` instead.",N,[[["r"],["i"],["usize"]],["vec"]]],[0,"distributions","","Generating random samples from probability distributions.",N,N],[3,"Alphanumeric","rand::distributions","Sample a `char`, uniformly distributed over ASCII letters and numbers: a-z, A-Z and 0-9.",N,N],[3,"Uniform","","Sample values uniformly between two bounds.",N,N],[3,"OpenClosed01","","A distribution to sample floating point numbers uniformly in the half-open interval `(0, 1]`, i.e. including 1 but not 0.",N,N],[3,"Open01","","A distribution to sample floating point numbers uniformly in the open interval `(0, 1)`, i.e. not including either endpoint.",N,N],[3,"Gamma","","The Gamma distribution `Gamma(shape, scale)` distribution.",N,N],[3,"ChiSquared","","The chi-squared distribution `χ²(k)`, where `k` is the degrees of freedom.",N,N],[3,"FisherF","","The Fisher F distribution `F(m, n)`.",N,N],[3,"StudentT","","The Student t distribution, `t(nu)`, where `nu` is the degrees of freedom.",N,N],[3,"Normal","","The normal distribution `N(mean, std_dev**2)`.",N,N],[3,"LogNormal","","The log-normal distribution `ln N(mean, std_dev**2)`.",N,N],[3,"StandardNormal","","Samples floating-point numbers according to the normal distribution `N(0, 1)` (a.k.a. a standard normal, or Gaussian). This is equivalent to `Normal::new(0.0, 1.0)` but faster.",N,N],[3,"Exp","","The exponential distribution `Exp(lambda)`.",N,N],[3,"Exp1","","Samples floating-point numbers according to the exponential distribution, with rate parameter `λ = 1`. This is equivalent to `Exp::new(1.0)` or sampling with `-rng.gen::<f64>().ln()`, but faster.",N,N],[3,"Pareto","","Samples floating-point numbers according to the Pareto distribution",N,N],[3,"Poisson","","The Poisson distribution `Poisson(lambda)`.",N,N],[3,"Binomial","","The binomial distribution `Binomial(n, p)`.",N,N
searchIndex["rand_core"]={"doc":"Random number generation traits","items":[[4,"ErrorKind","rand_core","Error kind which can be matched over.",N,N],[13,"Unavailable","","Feature is not available; not recoverable.",0,N],[13,"Unexpected","","General failure; there may be a chance of recovery on retry.",0,N],[13,"Transient","","A transient failure which likely can be resolved or worked around.",0,N],[13,"NotReady","","Not ready yet: recommended to try again a little later.",0,N],[3,"Error","","Error type of random number generators",N,N],[12,"kind","","The error kind",1,N],[12,"msg","","The error message",1,N],[0,"block","","The `BlockRngCore` trait and implementation helpers",N,N],[8,"BlockRngCore","rand_core::block","A trait for RNGs which do not generate random numbers individually, but in blocks (typically `[u32; N]`). This technique is commonly used by cryptographic RNGs to improve performance.",N,N],[16,"Item","","Results element type, e.g. `u32`.",2,N],[16,"Results","","Results type. This is the 'block' an RNG implementing `BlockRngCore` generates, which will usually be an array like `[u32; 16]`.",2,N],[10,"generate","","Generate a new block of results.",2,N],[3,"BlockRng","","A wrapper type implementing [`RngCore`] for some type implementing [`BlockRngCore`] with `u32` array buffer; i.e. this can be used to implement a full RNG from just a `generate` function.",N,N],[12,"core","","The core part of the RNG, implementing the `generate` function.",3,N],[3,"BlockRng64","","A wrapper type implementing [`RngCore`] for some type implementing [`BlockRngCore`] with `u64` array buffer; i.e. this can be used to implement a full RNG from just a `generate` function.",N,N],[12,"core","","The core part of the RNG, implementing the `generate` function.",4,N],[0,"impls","rand_core","Helper functions for implementing `RngCore` functions.",N,N],[5,"next_u64_via_u32","rand_core::impls","Implement `next_u64` via `next_u32`, little-endian order.",N,[[["r"]],["u64"]]],[5,"fill_bytes_via_next","","Implement `fill_bytes` via `next_u64` and `next_u32`, little-endian order.",N,N],[5,"fill_via_u32_chunks","","Implement `fill_bytes` by reading chunks from the output buffer of a block based RNG.",N,N],[5,"fill_via_u64_chunks","","Implement `fill_bytes` by reading chunks from the output buffer of a block based RNG.",N,N],[5,"next_u32_via_fill","","Implement `next_u32` via `fill_bytes`, little-endian order.",N,[[["r"]],["u32"]]],[5,"next_u64_via_fill","","Implement `next_u64` via `fill_bytes`, little-endian order.",N,[[["r"]],["u64"]]],[0,"le","rand_core","Little-Endian utilities",N,N],[5,"read_u32_into","rand_core::le","Reads unsigned 32 bit integers from `src` into `dst`. Borrowed from the `byteorder` crate.",N,N],[5,"read_u64_into","","Reads unsigned 64 bit integers from `src` into `dst`. Borrowed from the `byteorder` crate.",N,N],[8,"RngCore","rand_core","The core of a random number generator.",N,N],[10,"next_u32","","Return the next random `u32`.",5,[[["self"]],["u32"]]],[10,"next_u64","","Return the next random `u64`.",5,[[["self"]],["u64"]]],[10,"fill_bytes","","Fill `dest` with random data.",5,N],[10,"try_fill_bytes","","Fill `dest` entirely with random data.",5,N],[8,"CryptoRng","","A marker trait used to indicate that an [`RngCore`] or [`BlockRngCore`] implementation is supposed to be cryptographically secure.",N,N],[8,"SeedableRng","","A random number generator that can be explicitly seeded.",N,N],[16,"Seed","","Seed type, which is restricted to types mutably-dereferencable as `u8` arrays (we recommend `[u8; N]` for some `N`).",6,N],[10,"from_seed","","Create a new PRNG using the given seed.",6,N],[11,"seed_from_u64","","Create a new PRNG using a `u64` seed.",6,[[["u64"]],["self"]]],[11,"from_rng","","Create a new PRNG seeded from another `Rng`.",6,[[["r"]],["result",["error"]]]],[11,"should_retry","","True if this kind of error may resolve itself on retry.",0,[[["self"]],["bool"]]],[11,"should_wait","","True if we should retry but wait before retrying",0,[[["self"]],["bool"]]],[11,"description","","A description of this error kind",0,[
searchIndex["rayon"]={"doc":"Data-parallelism library that makes it easy to convert sequential computations into parallel","items":[[5,"current_num_threads","rayon","Returns the number of threads in the current registry. If this code is executing within a Rayon thread-pool, then this will be the number of threads for the thread-pool of the current thread. Otherwise, it will be the number of threads for the global thread-pool.",N,[[],["usize"]]],[3,"ThreadPool","","Represents a user created [thread-pool].",N,N],[3,"ThreadPoolBuilder","","Used to create a new [`ThreadPool`] or to configure the global rayon thread pool. ## Creating a ThreadPool The following creates a thread pool with 22 threads.",N,N],[3,"ThreadPoolBuildError","","Error when initializing a thread pool.",N,N],[5,"join","","Takes two closures and potentially runs them in parallel. It returns a pair of the results from those closures.",N,N],[5,"join_context","","Identical to `join`, except that the closures have a parameter that provides context for the way the closure has been called, especially indicating whether they're executing on a different thread than where `join_context` was called. This will occur if the second job is stolen by a different thread, or if `join_context` was called from outside the thread pool to begin with.",N,N],[3,"FnContext","","Provides the calling context to a closure called by `join_context`.",N,N],[5,"scope","","Create a \"fork-join\" scope `s` and invokes the closure with a reference to `s`. This closure can then spawn asynchronous tasks into `s`. Those tasks may run asynchronously with respect to the closure; they may themselves spawn additional tasks into `s`. When the closure returns, it will block until all tasks that have been spawned into `s` complete.",N,[[["op"]],["r"]]],[3,"Scope","","Represents a fork-join scope which can be used to spawn any number of tasks. See [`scope()`] for more information.",N,N],[5,"spawn","","Fires off a task into the Rayon threadpool in the \"static\" or \"global\" scope. Just like a standard thread, this task is not tied to the current stack frame, and hence it cannot hold any references other than those with `'static` lifetime. If you want to spawn a task that references stack data, use [the `scope()` function][scope] to create a scope.",N,N],[0,"collections","","Parallel iterator types for [standard collections][std::collections]",N,N],[0,"binary_heap","rayon::collections","This module contains the parallel iterator types for heaps (`BinaryHeap<T>`). You will rarely need to interact with it directly unless you have need to name one of the iterator types.",N,N],[3,"IntoIter","rayon::collections::binary_heap","Parallel iterator over a binary heap",N,N],[3,"Iter","","Parallel iterator over an immutable reference to a binary heap",N,N],[11,"fmt","","",0,[[["self"],["formatter"]],["result"]]],[11,"clone","","",0,[[["self"]],["intoiter"]]],[11,"drive_unindexed","","",0,N],[11,"opt_len","","",0,[[["self"]],["option",["usize"]]]],[11,"drive","","",0,N],[11,"len","","",0,[[["self"]],["usize"]]],[11,"with_producer","","",0,N],[11,"fmt","","",1,[[["self"],["formatter"]],["result"]]],[11,"clone","","",1,[[["self"]],["self"]]],[11,"drive_unindexed","","",1,N],[11,"opt_len","","",1,[[["self"]],["option",["usize"]]]],[11,"drive","","",1,N],[11,"len","","",1,[[["self"]],["usize"]]],[11,"with_producer","","",1,N],[0,"btree_map","rayon::collections","This module contains the parallel iterator types for B-Tree maps (`BTreeMap<K, V>`). You will rarely need to interact with it directly unless you have need to name one of the iterator types.",N,N],[3,"IntoIter","rayon::collections::btree_map","Parallel iterator over a B-Tree map",N,N],[3,"Iter","","Parallel iterator over an immutable reference to a B-Tree map",N,N],[3,"IterMut","","Parallel iterator over a mutable reference to a B-Tree map",N,N],[11,"fmt","","",2,[[["self"],["formatter"]],["result"]]],[11,"drive_unindexed","","",2,N],[11,"opt_len","","",2,[[["self"]],["option",["usize"]]]],[11,"fmt","","",3,[[["self"],["formatter"]],["result"]]],[11,"clone"
searchIndex["rayon_core"]={"doc":"Under construction","items":[[3,"ThreadPool","rayon_core","Represents a user created [thread-pool].",N,N],[3,"Scope","","Represents a fork-join scope which can be used to spawn any number of tasks. See [`scope()`] for more information.",N,N],[3,"ThreadPoolBuildError","","Error when initializing a thread pool.",N,N],[3,"ThreadPoolBuilder","","Used to create a new [`ThreadPool`] or to configure the global rayon thread pool. ## Creating a ThreadPool The following creates a thread pool with 22 threads.",N,N],[3,"Configuration","","Contains the rayon thread pool configuration. Use [`ThreadPoolBuilder`] instead.",N,N],[3,"FnContext","","Provides the calling context to a closure called by `join_context`.",N,N],[5,"current_thread_index","","If called from a Rayon worker thread, returns the index of that thread within its current pool; if not called from a Rayon thread, returns `None`.",N,[[],["option",["usize"]]]],[5,"current_thread_has_pending_tasks","","If called from a Rayon worker thread, indicates whether that thread's local deque still has pending tasks. Otherwise, returns `None`. For more information, see [the `ThreadPool::current_thread_has_pending_tasks()` method][m].",N,[[],["option",["bool"]]]],[5,"join","","Takes two closures and potentially runs them in parallel. It returns a pair of the results from those closures.",N,N],[5,"join_context","","Identical to `join`, except that the closures have a parameter that provides context for the way the closure has been called, especially indicating whether they're executing on a different thread than where `join_context` was called. This will occur if the second job is stolen by a different thread, or if `join_context` was called from outside the thread pool to begin with.",N,N],[5,"scope","","Create a \"fork-join\" scope `s` and invokes the closure with a reference to `s`. This closure can then spawn asynchronous tasks into `s`. Those tasks may run asynchronously with respect to the closure; they may themselves spawn additional tasks into `s`. When the closure returns, it will block until all tasks that have been spawned into `s` complete.",N,[[["op"]],["r"]]],[5,"spawn","","Fires off a task into the Rayon threadpool in the \"static\" or \"global\" scope. Just like a standard thread, this task is not tied to the current stack frame, and hence it cannot hold any references other than those with `'static` lifetime. If you want to spawn a task that references stack data, use [the `scope()` function][scope] to create a scope.",N,[[["f"]]]],[5,"current_num_threads","","Returns the number of threads in the current registry. If this code is executing within a Rayon thread-pool, then this will be the number of threads for the thread-pool of the current thread. Otherwise, it will be the number of threads for the global thread-pool.",N,[[],["usize"]]],[5,"initialize","","Deprecated in favor of `ThreadPoolBuilder::build_global`.",N,[[["configuration"]],["result",["box"]]]],[11,"spawn","","Spawns a job into the fork-join scope `self`. This job will execute sometime before the fork-join scope completes. The job is specified as a closure, and this closure receives its own reference to the scope `self` as argument. This can be used to inject new jobs into `self`.",0,[[["self"],["body"]]]],[11,"fmt","","",0,[[["self"],["formatter"]],["result"]]],[11,"new","","Deprecated in favor of `ThreadPoolBuilder::build`.",1,[[["configuration"]],["result",["threadpool","box"]]]],[11,"install","","Executes `op` within the threadpool. Any attempts to use `join`, `scope`, or parallel iterators will then operate within that threadpool.",1,[[["self"],["op"]],["r"]]],[11,"current_num_threads","","Returns the (current) number of threads in the thread pool.",1,[[["self"]],["usize"]]],[11,"current_thread_index","","If called from a Rayon worker thread in this thread-pool, returns the index of that thread; if not called from a Rayon thread, or called from a Rayon thread that belongs to a different thread-pool, returns `None`.",1,[[["self"]],["option",["usize"]]]],[11,"current
searchIndex["read_color"]={"doc":"A simple library for reading hex colors.","items":[[5,"char_to_hex","read_color","Converts a character into a u8 value.",N,[[["char"]],["option",["u8"]]]],[5,"hex","","Reads a hex value from an iterator of characters.",N,[[["chars"]],["option",["u8"]]]],[5,"hex_pair","","Reads a pair of hex values, joining them in value range 0-255.",N,[[["chars"]],["option",["u8"]]]],[5,"rgb","","Reads RGB colors from iterator of characters.",N,[[["chars"]],["option"]]],[5,"rgba","","Reads RGBA colors from iterator of characters.",N,[[["chars"]],["option"]]],[5,"rgb_maybe_a","","Reads RGB with optional alpha from iterator of characters.",N,[[["chars"]],["option"]]]],"paths":[]};
searchIndex["rusttype"]={"doc":"RustType is a pure Rust alternative to libraries like FreeType.","items":[[3,"Rect","rusttype","A rectangle, with top-left corner at `min`, and bottom-right corner at `max`.",N,N],[12,"min","","",0,N],[12,"max","","",0,N],[3,"Point","","A point in 2-dimensional space, with each dimension of type `N`.",N,N],[12,"x","","",1,N],[12,"y","","",1,N],[3,"Vector","","A vector in 2-dimensional space, with each dimension of type `N`.",N,N],[12,"x","","",2,N],[12,"y","","",2,N],[3,"Line","","A straight line between two points, `p[0]` and `p[1]`",N,N],[12,"p","","",3,N],[3,"Curve","","A quadratic Bezier curve, starting at `p[0]`, ending at `p[2]`, with control point `p[1]`.",N,N],[12,"p","","",4,N],[3,"FontCollection","","A collection of fonts read straight from a font file's data. The data in the collection is not validated. This structure may or may not own the font data.",N,N],[3,"Font","","A single font. This may or may not own the font data.",N,N],[3,"Codepoint","","Represents a Unicode code point.",N,N],[12,"0","","",5,N],[3,"GlyphId","","Represents a glyph identifier for a particular font. This identifier will not necessarily correspond to the correct glyph in a font other than the one that it was obtained from.",N,N],[12,"0","","",6,N],[3,"Glyph","","A single glyph of a font. this may either be a thin wrapper referring to the font and the glyph id, or it may be a standalone glyph that owns the data needed by it.",N,N],[3,"SharedGlyphData","","",N,N],[12,"id","","",7,N],[12,"extents","","",7,N],[12,"scale_for_1_pixel","","",7,N],[12,"unit_h_metrics","","",7,N],[12,"shape","","",7,N],[3,"HMetrics","","The \"horizontal metrics\" of a glyph. This is useful for calculating the horizontal offset of a glyph from the previous one in a string when laying a string out horizontally.",N,N],[12,"advance_width","","The horizontal offset that the origin of the next glyph should be from the origin of this glyph.",8,N],[12,"left_side_bearing","","The horizontal offset between the origin of this glyph and the leftmost edge/point of the glyph.",8,N],[3,"VMetrics","","The \"vertical metrics\" of a font at a particular scale. This is useful for calculating the amount of vertical space to give a line of text, and for computing the vertical offset between successive lines.",N,N],[12,"ascent","","The highest point that any glyph in the font extends to above the baseline. Typically positive.",9,N],[12,"descent","","The lowest point that any glyph in the font extends to below the baseline. Typically negative.",9,N],[12,"line_gap","","The gap to leave between the descent of one line and the ascent of the next. This is of course only a guideline given by the font's designers.",9,N],[3,"ScaledGlyph","","A glyph augmented with scaling information. You can query such a glyph for information that depends on the scale of the glyph.",N,N],[3,"PositionedGlyph","","A glyph augmented with positioning and scaling information. You can query such a glyph for information that depends on the scale and position of the glyph.",N,N],[3,"Scale","","Defines the size of a rendered face of a font, in pixels, horizontally and vertically. A vertical scale of `y` pixels means that the distance betwen the ascent and descent lines (see `VMetrics`) of the face will be `y` pixels. If `x` and `y` are equal the scaling is uniform. Non-uniform scaling by a factor f in the horizontal direction is achieved by setting `x` equal to f times `y`.",N,N],[12,"x","","Horizontal scale, in pixels.",10,N],[12,"y","","Vertical scale, in pixels.",10,N],[3,"IntoFontsIter","","",N,N],[3,"GlyphIter","","",N,N],[3,"LayoutIter","","",N,N],[3,"Contour","","A closed loop consisting of a sequence of `Segment`s.",N,N],[12,"segments","","",11,N],[4,"SharedBytes","","`SharedBytes` handles the lifetime of font data used in RustType. The data is either a shared reference to externally owned data, or managed by reference counting. `SharedBytes` can be conveniently used with `From` and `Into`, and dereferences to the contained bytes.",N,N],[13,"ByRef","","",12,N],[13,"ByArc","",
searchIndex["scoped_threadpool"]={"doc":"This crate provides a stable, safe and scoped threadpool.","items":[[3,"Pool","scoped_threadpool","A threadpool that acts as a handle to a number of threads spawned at construction.",N,N],[3,"Scope","","Handle to the scope during which the threadpool is borrowed.",N,N],[11,"drop","","",0,[[["self"]]]],[11,"new","","Construct a threadpool with the given number of threads. Minimum value is `1`.",0,[[["u32"]],["pool"]]],[11,"scoped","","Borrows the pool and allows executing jobs on other threads during that scope via the argument of the closure.",0,[[["self"],["f"]],["r"]]],[11,"thread_count","","Returns the number of threads inside this pool.",0,[[["self"]],["u32"]]],[11,"execute","","Execute a job on the threadpool.",1,[[["self"],["f"]]]],[11,"join_all","","Blocks until all currently queued jobs have run to completion.",1,[[["self"]]]],[11,"drop","","",1,[[["self"]]]]],"paths":[[3,"Pool"],[3,"Scope"]]};
searchIndex["scopeguard"]={"doc":"A scope guard will run a given closure when it goes out of scope, even if the code between panics. (as long as panic doesn't abort)","items":[[3,"ScopeGuard","scopeguard","`ScopeGuard` is a scope guard that may own a protected value.",N,N],[4,"Always","","Always run on scope exit.",N,N],[5,"guard","","Create a new `ScopeGuard` owning `v` and with deferred closure `dropfn`.",N,[[["t"],["f"]],["scopeguard",["always"]]]],[8,"Strategy","","",N,N],[10,"should_run","","Return `true` if the guards associated code should run (in the context where this method is called).",0,[[],["bool"]]],[11,"fmt","","",1,[[["self"],["formatter"]],["result"]]],[11,"should_run","","",1,[[],["bool"]]],[11,"with_strategy","","Create a `ScopeGuard` that owns `v` (accessible through deref) and calls `dropfn` when its destructor runs.",2,[[["t"],["f"]],["scopeguard"]]],[11,"deref","","",2,[[["self"]],["t"]]],[11,"deref_mut","","",2,[[["self"]],["t"]]],[11,"drop","","",2,[[["self"]]]],[11,"fmt","","",2,[[["self"],["formatter"]],["result"]]],[14,"defer","","Macro to create a `ScopeGuard` (always run).",N,N],[14,"defer_on_unwind","","Macro to create a `ScopeGuard` (run on unwinding from panic).",N,N]],"paths":[[8,"Strategy"],[4,"Always"],[3,"ScopeGuard"]]};
searchIndex["serde"]={"doc":"Serde","items":[[0,"de","serde","Generic data structure deserialization framework.",N,N],[3,"IgnoredAny","serde::de","An efficient way of discarding data from a deserializer.",N,N],[4,"Unexpected","","`Unexpected` represents an unexpected invocation of any one of the `Visitor` trait methods.",N,N],[13,"Bool","","The input contained a boolean value that was not expected.",0,N],[13,"Unsigned","","The input contained an unsigned integer `u8`, `u16`, `u32` or `u64` that was not expected.",0,N],[13,"Signed","","The input contained a signed integer `i8`, `i16`, `i32` or `i64` that was not expected.",0,N],[13,"Float","","The input contained a floating point `f32` or `f64` that was not expected.",0,N],[13,"Char","","The input contained a `char` that was not expected.",0,N],[13,"Str","","The input contained a `&str` or `String` that was not expected.",0,N],[13,"Bytes","","The input contained a `&[u8]` or `Vec<u8>` that was not expected.",0,N],[13,"Unit","","The input contained a unit `()` that was not expected.",0,N],[13,"Option","","The input contained an `Option<T>` that was not expected.",0,N],[13,"NewtypeStruct","","The input contained a newtype struct that was not expected.",0,N],[13,"Seq","","The input contained a sequence that was not expected.",0,N],[13,"Map","","The input contained a map that was not expected.",0,N],[13,"Enum","","The input contained an enum that was not expected.",0,N],[13,"UnitVariant","","The input contained a unit variant that was not expected.",0,N],[13,"NewtypeVariant","","The input contained a newtype variant that was not expected.",0,N],[13,"TupleVariant","","The input contained a tuple variant that was not expected.",0,N],[13,"StructVariant","","The input contained a struct variant that was not expected.",0,N],[13,"Other","","A message stating what uncategorized thing the input contained that was not expected.",0,N],[0,"value","","Building blocks for deserializing basic values using the `IntoDeserializer` trait.",N,N],[3,"Error","serde::de::value","A minimal representation of all possible errors that can occur using the `IntoDeserializer` trait.",N,N],[3,"UnitDeserializer","","A deserializer holding a `()`.",N,N],[3,"BoolDeserializer","","A deserializer holding a `bool`.",N,N],[3,"I8Deserializer","","A deserializer holding an `i8`.",N,N],[3,"I16Deserializer","","A deserializer holding an `i16`.",N,N],[3,"I32Deserializer","","A deserializer holding an `i32`.",N,N],[3,"I64Deserializer","","A deserializer holding an `i64`.",N,N],[3,"IsizeDeserializer","","A deserializer holding an `isize`.",N,N],[3,"U8Deserializer","","A deserializer holding a `u8`.",N,N],[3,"U16Deserializer","","A deserializer holding a `u16`.",N,N],[3,"U64Deserializer","","A deserializer holding a `u64`.",N,N],[3,"UsizeDeserializer","","A deserializer holding a `usize`.",N,N],[3,"F32Deserializer","","A deserializer holding an `f32`.",N,N],[3,"F64Deserializer","","A deserializer holding an `f64`.",N,N],[3,"CharDeserializer","","A deserializer holding a `char`.",N,N],[3,"I128Deserializer","","A deserializer holding an `i128`.",N,N],[3,"U128Deserializer","","A deserializer holding a `u128`.",N,N],[3,"U32Deserializer","","A deserializer holding a `u32`.",N,N],[3,"StrDeserializer","","A deserializer holding a `&str`.",N,N],[3,"BorrowedStrDeserializer","","A deserializer holding a `&str` with a lifetime tied to another deserializer.",N,N],[3,"StringDeserializer","","A deserializer holding a `String`.",N,N],[3,"CowStrDeserializer","","A deserializer holding a `Cow<str>`.",N,N],[3,"BorrowedBytesDeserializer","","A deserializer holding a `&[u8]` with a lifetime tied to another deserializer.",N,N],[3,"SeqDeserializer","","A deserializer that iterates over a sequence.",N,N],[3,"SeqAccessDeserializer","","A deserializer holding a `SeqAccess`.",N,N],[3,"MapDeserializer","","A deserializer that iterates over a map.",N,N],[3,"MapAccessDeserializer","","A deserializer holding a `MapAccess`.",N,N],[11,"clone","","",1,[[["self"]],["error"]]],[11,"fmt","","",1,[[["self"],["formatter"]],["result"]]],[11,"eq","","",1,[[[
searchIndex["serde_derive"]={"doc":"This crate provides Serde's two derive macros.","items":[[5,"derive_serialize","serde_derive","",N,[[["tokenstream"]],["tokenstream"]]],[5,"derive_deserialize","","",N,[[["tokenstream"]],["tokenstream"]]]],"paths":[]};
searchIndex["shader_version"]={"doc":"A helper library for detecting and picking compatible shaders.","items":[[3,"Shaders","shader_version","Shader picker.",N,N],[0,"opengl","","Models versions of OpenGL",N,N],[3,"ParseOpenGLError","shader_version::opengl","Represents an error while trying to get `OpenGL` from `&str`.",N,N],[4,"OpenGL","","",N,N],[13,"V2_0","","",0,N],[13,"V2_1","","",0,N],[13,"V3_0","","",0,N],[13,"V3_1","","",0,N],[13,"V3_2","","",0,N],[13,"V3_3","","",0,N],[13,"V4_0","","",0,N],[13,"V4_1","","",0,N],[13,"V4_2","","",0,N],[13,"V4_3","","",0,N],[13,"V4_4","","",0,N],[13,"V4_5","","",0,N],[11,"clone","","",0,[[["self"]],["opengl"]]],[11,"fmt","","",0,[[["self"],["formatter"]],["result"]]],[11,"eq","","",0,[[["self"],["opengl"]],["bool"]]],[11,"partial_cmp","","",0,[[["self"],["opengl"]],["option",["ordering"]]]],[11,"cmp","","",0,[[["self"],["opengl"]],["ordering"]]],[11,"get_major_minor","","Gets the minor version of OpenGL.",0,N],[11,"to_glsl","","Gets GLSL version associated with OpenGL.",0,[[["self"]],["glsl"]]],[11,"from_str","","",0,[[["str"]],["result"]]],[11,"fmt","","",1,[[["self"],["formatter"]],["result"]]],[11,"fmt","","",1,[[["self"],["formatter"]],["result"]]],[11,"description","","",1,[[["self"]],["str"]]],[0,"glsl","shader_version","Models versions of OpenGL Shader Language (GLSL)",N,N],[3,"ParseGLSLError","shader_version::glsl","Represents an error while trying to get `GLSL` from `&str`.",N,N],[4,"GLSL","","For OpenGL version 3.3 and above, the GLSL version is the same as the OpenGL version.",N,N],[13,"V1_10","","",2,N],[13,"V1_20","","",2,N],[13,"V1_30","","",2,N],[13,"V1_40","","",2,N],[13,"V1_50","","",2,N],[13,"V3_30","","",2,N],[13,"V4_00","","",2,N],[13,"V4_10","","",2,N],[13,"V4_20","","",2,N],[13,"V4_30","","",2,N],[13,"V4_40","","",2,N],[13,"V4_50","","",2,N],[11,"clone","","",2,[[["self"]],["glsl"]]],[11,"fmt","","",2,[[["self"],["formatter"]],["result"]]],[11,"eq","","",2,[[["self"],["glsl"]],["bool"]]],[11,"partial_cmp","","",2,[[["self"],["glsl"]],["option",["ordering"]]]],[11,"cmp","","",2,[[["self"],["glsl"]],["ordering"]]],[11,"to_opengl","","Gets OpenGL version associated with GLSL.",2,[[["self"]],["opengl"]]],[11,"pick_shader","","",2,[[["self"],["shaders"]],["option"]]],[11,"from_str","","",2,[[["str"]],["result"]]],[11,"fmt","","",3,[[["self"],["formatter"]],["result"]]],[11,"fmt","","",3,[[["self"],["formatter"]],["result"]]],[11,"description","","",3,[[["self"]],["str"]]],[8,"PickShader","shader_version","Implemented by shader version enums.",N,N],[10,"pick_shader","","Pick shader.",4,[[["self"],["shaders"]],["option"]]],[11,"new","","Creates a new shader picker.",5,[[],["self"]]],[11,"set","","Sets source for a shader version.",5,[[["self"],["v"],["s"]],["self"]]],[11,"get","","Get the closest shader to a shader version.",5,[[["self"],["v"]],["option"]]]],"paths":[[4,"OpenGL"],[3,"ParseOpenGLError"],[4,"GLSL"],[3,"ParseGLSLError"],[8,"PickShader"],[3,"Shaders"]]};
searchIndex["shaders_graphics2d"]={"doc":"Shaders for 2D graphics backends.","items":[[0,"colored","shaders_graphics2d","Shaders for colored rendering.",N,N],[17,"VERTEX_GLSL_120","shaders_graphics2d::colored","Vertex shader for GLSL 1.20",N,N],[17,"VERTEX_GLSL_150_CORE","","Vertex shader for GLSL 1.50",N,N],[17,"FRAGMENT_GLSL_120","","Fragment shader for GLSL 1.20",N,N],[17,"FRAGMENT_GLSL_150_CORE","","Fragmentshader for GLSL 1.50",N,N],[17,"VERTEX_GLSL_120_WEBGL","","Vertex shader for GLSL 1.20 WebGL",N,N],[17,"VERTEX_GLSL_150_CORE_WEBGL","","Vertex shader for GLSL 1.50 WebGL",N,N],[17,"FRAGMENT_GLSL_120_WEBGL","","Fragment shader for GLSL 1.20 WebGL",N,N],[17,"FRAGMENT_GLSL_150_CORE_WEBGL","","Fragmentshader for GLSL 1.50 WebGL",N,N],[0,"textured","shaders_graphics2d","Shaders for textured rendering.",N,N],[17,"VERTEX_GLSL_120","shaders_graphics2d::textured","Vertex shader for GLSL 1.20",N,N],[17,"VERTEX_GLSL_150_CORE","","Vertex shader for GLSL 1.50",N,N],[17,"FRAGMENT_GLSL_120","","Fragment shader for GLSL 1.20",N,N],[17,"FRAGMENT_GLSL_150_CORE","","Fragment shader for GLSL 1.50",N,N],[17,"VERTEX_GLSL_120_WEBGL","","Vertex shader for GLSL 1.20",N,N],[17,"VERTEX_GLSL_150_CORE_WEBGL","","Vertex shader for GLSL 1.50",N,N],[17,"FRAGMENT_GLSL_120_WEBGL","","Fragment shader for GLSL 1.20",N,N],[17,"FRAGMENT_GLSL_150_CORE_WEBGL","","Fragment shader for GLSL 1.50",N,N]],"paths":[]};
searchIndex["shared_library"]={"doc":"","items":[[4,"LoadingError","shared_library","Error that can happen while loading the shared library.",N,N],[13,"LibraryNotFound","","",0,N],[12,"descr","shared_library::LoadingError","",0,N],[13,"SymbolNotFound","shared_library","One of the symbols could not be found in the library.",0,N],[12,"symbol","shared_library::LoadingError","The symbol.",0,N],[0,"dynamic_library","shared_library","Dynamic library facilities.",N,N],[3,"DynamicLibrary","shared_library::dynamic_library","",N,N],[4,"SpecialHandles","","Special handles to be used with the `symbol_special` function. These are provided by a GNU only extension and are not included as part of the POSIX standard. ",N,N],[13,"Next","","",1,N],[13,"Default","","",1,N],[11,"drop","","",2,[[["self"]]]],[11,"open","","Lazily loads the dynamic library named `filename` into memory and then returns an opaque \"handle\" for that dynamic library.",2,[[["option",["path"]]],["result",["string"]]]],[11,"prepend_search_path","","Prepends a path to this process's search path for dynamic libraries",2,[[["path"]]]],[11,"create_path","","From a slice of paths, create a new vector which is suitable to be an environment variable for this platforms dylib search path.",2,N],[11,"envvar","","Returns the environment variable for this process's dynamic library search path",2,[[],["str"]]],[11,"search_path","","Returns the current search path for dynamic libraries being used by this process",2,[[],["vec",["pathbuf"]]]],[11,"symbol","","Returns the address of where symbol `symbol` was loaded into memory.",2,[[["self"],["str"]],["result",["string"]]]],[11,"symbol_special","","Returns the address of the first occurance of symbol `symbol` using the default library search order if you use `SpecialHandles::Default`.",2,[[["specialhandles"],["str"]],["result",["string"]]]],[11,"fmt","shared_library","",0,[[["self"],["formatter"]],["result"]]],[11,"clone","","",0,[[["self"]],["loadingerror"]]],[14,"shared_library","","",N,N]],"paths":[[4,"LoadingError"],[4,"SpecialHandles"],[3,"DynamicLibrary"]]};
searchIndex["smallvec"]={"doc":"Small vectors in various sizes. These store a certain number of elements inline, and fall back to the heap for larger allocations. This can be a useful optimization for improving cache locality and reducing allocator traffic for workloads that fit within the inline buffer.","items":[[3,"Drain","smallvec","An iterator that removes the items from a `SmallVec` and yields them by value.",N,N],[3,"SmallVec","","A `Vec`-like container that can store a small number of elements inline.",N,N],[3,"IntoIter","","An iterator that consumes a `SmallVec` and yields its items by value.",N,N],[8,"VecLike","","Common operations implemented by both `Vec` and `SmallVec`.",N,N],[10,"push","","Append an element to the vector.",0,[[["self"],["t"]]]],[8,"ExtendFromSlice","","Trait to be implemented by a collection that can be extended from a slice",N,N],[10,"extend_from_slice","","Extends a collection from a slice of its element type",1,N],[8,"Array","","Types that can be used as the backing store for a SmallVec",N,N],[16,"Item","","The type of the array's elements.",2,N],[10,"size","","Returns the number of items the array can hold.",2,[[],["usize"]]],[10,"ptr","","Returns a pointer to the first element of the array.",2,N],[10,"ptr_mut","","Returns a mutable pointer to the first element of the array.",2,N],[11,"next","","",3,[[["self"]],["option"]]],[11,"size_hint","","",3,N],[11,"next_back","","",3,[[["self"]],["option"]]],[11,"drop","","",3,[[["self"]]]],[11,"new","","Construct an empty vector",4,[[],["smallvec"]]],[11,"with_capacity","","Construct an empty vector with enough capacity pre-allocated to store at least `n` elements.",4,[[["usize"]],["self"]]],[11,"from_vec","","Construct a new `SmallVec` from a `Vec<A::Item>`.",4,[[["vec"]],["smallvec"]]],[11,"from_buf","","Constructs a new `SmallVec` on the stack from an `A` without copying elements.",4,[[["a"]],["smallvec"]]],[11,"from_buf_and_len","","Constructs a new `SmallVec` on the stack from an `A` without copying elements. Also sets the length, which must be less or equal to the size of `buf`.",4,[[["a"],["usize"]],["smallvec"]]],[11,"from_buf_and_len_unchecked","","Constructs a new `SmallVec` on the stack from an `A` without copying elements. Also sets the length. The user is responsible for ensuring that `len <= A::size()`.",4,[[["a"],["usize"]],["smallvec"]]],[11,"set_len","","Sets the length of a vector.",4,[[["self"],["usize"]]]],[11,"inline_size","","The maximum number of elements this vector can hold inline",4,[[["self"]],["usize"]]],[11,"len","","The number of elements stored in the vector",4,[[["self"]],["usize"]]],[11,"is_empty","","Returns `true` if the vector is empty",4,[[["self"]],["bool"]]],[11,"capacity","","The number of items the vector can hold without reallocating",4,[[["self"]],["usize"]]],[11,"spilled","","Returns `true` if the data has spilled into a separate heap-allocated buffer.",4,[[["self"]],["bool"]]],[11,"drain","","Empty the vector and return an iterator over its former contents.",4,[[["self"]],["drain"]]],[11,"push","","Append an item to the vector.",4,N],[11,"pop","","Remove an item from the end of the vector and return it, or None if empty.",4,[[["self"]],["option"]]],[11,"grow","","Re-allocate to set the capacity to `max(new_cap, inline_size())`.",4,[[["self"],["usize"]]]],[11,"reserve","","Reserve capacity for `additional` more elements to be inserted.",4,[[["self"],["usize"]]]],[11,"reserve_exact","","Reserve the minumum capacity for `additional` more elements to be inserted.",4,[[["self"],["usize"]]]],[11,"shrink_to_fit","","Shrink the capacity of the vector as much as possible.",4,[[["self"]]]],[11,"truncate","","Shorten the vector, keeping the first `len` elements and dropping the rest.",4,[[["self"],["usize"]]]],[11,"as_slice","","Extracts a slice containing the entire vector.",4,N],[11,"as_mut_slice","","Extracts a mutable slice of the entire vector.",4,N],[11,"swap_remove","","Remove the element at position `index`, replacing it with the last element.",4,N],[11,"clear","","Remove all elements from the vector."
searchIndex["smithay_client_toolkit"]={"doc":"","items":[[3,"Environment","smithay_client_toolkit","A convenience for global management",N,N],[12,"manager","","The underlying GlobalManager wrapping your registry",0,N],[12,"compositor","","The compositor global, used to create surfaces",0,N],[12,"subcompositor","","The subcompositor global, used to create subsurfaces",0,N],[12,"shell","","The shell global, used make your surfaces into windows",0,N],[12,"shm","","The SHM global, to create shared memory buffers",0,N],[12,"data_device_manager","","The data device manager, used to handle drag&drop and selection copy/paste",0,N],[12,"outputs","","A manager for handling the advertized outputs",0,N],[12,"decorations_mgr","","The decoration manager, if the server supports server-side decorations",0,N],[4,"Shell","","Possible shell globals",N,N],[13,"Xdg","","Using xdg_shell protocol, the standart",1,N],[13,"Zxdg","","Old version of xdg_shell, for compatiblity",1,N],[13,"Wl","","Using wl_shell, deprecated, compatibility mode",1,N],[0,"reexports","","Re-exports of some crates, for convenience",N,N],[0,"cursor","smithay_client_toolkit::reexports::client","Cursor utilities",N,N],[5,"is_available","smithay_client_toolkit::reexports::client::cursor","Checks if the wayland-cursor lib is available and can be used",N,[[],["bool"]]],[3,"CursorTheme","","Represents a cursor theme loaded from the system.",N,N],[5,"load_theme","","Attempts to load a cursor theme from given name.",N,[[["option",["str"]],["u32"],["proxy"]],["cursortheme"]]],[3,"Cursor","","A cursor from a theme. Can contain several images if animated.",N,N],[3,"CursorImageBuffer","","A buffer containing a cursor image.",N,N],[0,"egl","smithay_client_toolkit::reexports::client","EGL utilities",N,N],[5,"is_available","smithay_client_toolkit::reexports::client::egl","Checks if the wayland-egl lib is available and can be used",N,[[],["bool"]]],[3,"WlEglSurface","","EGL surface",N,N],[0,"commons","smithay_client_toolkit::reexports::client","Re-export of wayland-commons",N,N],[8,"Implementation","smithay_client_toolkit::reexports::client::commons","Trait representing implementations for wayland objects",N,N],[10,"receive","","Receive a message",2,N],[8,"Interface","","The description of a wayland interface",N,N],[16,"Request","","Set of requests associated to this interface",3,N],[16,"Event","","Set of events associated to this interface",3,N],[18,"NAME","","Name of this interface",3,N],[10,"c_interface","","Pointer to the C representation of this interface",3,N],[3,"AnonymousObject","","Anonymous interface",N,N],[8,"MessageGroup","","A group of messages",N,N],[10,"is_destructor","","Whether this message is a destructor",4,[[["self"]],["bool"]]],[10,"from_raw_c","","Construct a message of this group from its C representation",4,N],[10,"as_raw_c_in","","Build a C representation of this message",4,[[["self"],["f"]],["t"]]],[4,"NoMessage","","An empty enum representing a MessageGroup with no messages",N,N],[5,"downcast_impl","","Attempt to downcast a boxed `Implementation` trait object.",N,[[["box",["implementation"]]],["result",["box","box"]]]],[0,"sys","smithay_client_toolkit::reexports::client","C-associated types",N,N],[0,"client","smithay_client_toolkit::reexports::client::sys","Bindings to the client library `libwayland-client.so`",N,N],[4,"wl_proxy","smithay_client_toolkit::reexports::client::sys::client","",N,N],[4,"wl_display","","",N,N],[4,"wl_event_queue","","",N,N],[3,"WaylandClient","","",N,N],[12,"wl_display_connect_to_fd","","",5,N],[12,"wl_display_connect","","",5,N],[12,"wl_display_disconnect","","",5,N],[12,"wl_display_get_fd","","",5,N],[12,"wl_display_roundtrip","","",5,N],[12,"wl_display_read_events","","",5,N],[12,"wl_display_prepare_read","","",5,N],[12,"wl_display_cancel_read","","",5,N],[12,"wl_display_dispatch","","",5,N],[12,"wl_display_dispatch_pending","","",5,N],[12,"wl_display_get_error","","",5,N],[12,"wl_display_get_protocol_error","","",5,N],[12,"wl_display_flush","","",5,N],[12,"wl_event_queue_destroy","","",5,N],[12,"wl_display_create_queue","","",5,
searchIndex["snake_game"]={"doc":"","items":[],"paths":[]};
searchIndex["stable_deref_trait"]={"doc":"This module defines an unsafe marker trait, StableDeref, for container types that deref to a fixed address which is valid even when the containing type is moved. For example, Box, Vec, Rc, Arc and String implement this trait. Additionally, it defines CloneStableDeref for types like Rc where clones deref to the same address.","items":[[8,"StableDeref","stable_deref_trait","An unsafe marker trait for types that deref to a stable address, even when moved. For example, this is implemented by Box, Vec, Rc, Arc and String, among others. Even when a Box is moved, the underlying storage remains at a fixed location.",N,N],[8,"CloneStableDeref","","An unsafe marker trait for types where clones deref to the same address. This has all the requirements of StableDeref, and additionally requires that after calling clone(), both the old and new value deref to the same address. For example, Rc and Arc implement CloneStableDeref, but Box and Vec do not.",N,N]],"paths":[]};
searchIndex["stb_truetype"]={"doc":"","items":[[3,"FontInfo","stb_truetype","",N,N],[3,"Vertex","","",N,N],[12,"x","","",0,N],[12,"y","","",0,N],[12,"cx","","",0,N],[12,"cy","","",0,N],[3,"Rect","","",N,N],[12,"x0","","",1,N],[12,"y0","","",1,N],[12,"x1","","",1,N],[12,"y1","","",1,N],[3,"HMetrics","","",N,N],[12,"advance_width","","",2,N],[12,"left_side_bearing","","",2,N],[3,"VMetrics","","",N,N],[12,"ascent","","",3,N],[12,"descent","","",3,N],[12,"line_gap","","",3,N],[3,"FontNameIter","","",N,N],[4,"VertexType","","",N,N],[13,"MoveTo","","",4,N],[13,"LineTo","","",4,N],[13,"CurveTo","","",4,N],[4,"PlatformId","","",N,N],[13,"Unicode","","",5,N],[13,"Mac","","",5,N],[13,"Iso","","",5,N],[13,"Microsoft","","",5,N],[4,"UnicodeEid","","",N,N],[13,"Unicode_1_0","","",6,N],[13,"Unicode_1_1","","",6,N],[13,"Iso_10646","","",6,N],[13,"Unicode_2_0_Bmp","","",6,N],[13,"Unicode_2_0_Full","","",6,N],[4,"MicrosoftEid","","",N,N],[13,"Symbol","","",7,N],[13,"UnicodeBMP","","",7,N],[13,"Shiftjis","","",7,N],[13,"UnicodeFull","","",7,N],[4,"MacEid","","",N,N],[13,"Roman","","",8,N],[13,"Arabic","","",8,N],[13,"Japanese","","",8,N],[13,"Hebrew","","",8,N],[13,"ChineseTrad","","",8,N],[13,"Greek","","",8,N],[13,"Korean","","",8,N],[13,"Russian","","",8,N],[4,"MicrosoftLang","","",N,N],[13,"English","","",9,N],[13,"Italian","","",9,N],[13,"Chinese","","",9,N],[13,"Japanese","","",9,N],[13,"Dutch","","",9,N],[13,"Korean","","",9,N],[13,"French","","",9,N],[13,"Russian","","",9,N],[13,"German","","",9,N],[13,"Hebrew","","",9,N],[13,"Swedish","","",9,N],[4,"MacLang","","",N,N],[13,"English","","",10,N],[13,"Japanese","","",10,N],[13,"Arabic","","",10,N],[13,"Korean","","",10,N],[13,"Dutch","","",10,N],[13,"Russian","","",10,N],[13,"French","","",10,N],[13,"Spanish","","",10,N],[13,"German","","",10,N],[13,"Swedish","","",10,N],[13,"Hebrew","","",10,N],[13,"ChineseSimplified","","",10,N],[13,"Italian","","",10,N],[13,"ChineseTrad","","",10,N],[4,"PlatformEncodingLanguageId","","",N,N],[13,"Unicode","","",11,N],[13,"Mac","","",11,N],[13,"Iso","","",11,N],[13,"Microsoft","","",11,N],[5,"is_font","","Return `true` if `data` holds a font stored in a format this crate recognizes, according to its signature in the initial bytes.",N,N],[5,"is_collection","","Return `true` if `data` holds a TrueType Collection, according to its signature in the initial bytes. A TrueType Collection stores several fonts in a single file, allowing them to share data for glyphs they have in common.",N,N],[5,"get_font_offset_for_index","","Each .ttf/.ttc file may have more than one font. Each font has a sequential index number starting from 0. Call this function to get the font offset for a given index; it returns None if the index is out of range. A regular .ttf file will only define one font and it always be at offset 0, so it will return Some(0) for index 0, and None for all other indices. You can just skip this step if you know it's that kind of font.",N,N],[11,"clone","","",12,[[["self"]],["fontinfo"]]],[11,"fmt","","",12,[[["self"],["formatter"]],["result"]]],[11,"clone","","",0,[[["self"]],["vertex"]]],[11,"fmt","","",0,[[["self"],["formatter"]],["result"]]],[11,"vertex_type","","",0,[[["self"]],["vertextype"]]],[11,"clone","","",4,[[["self"]],["vertextype"]]],[11,"fmt","","",4,[[["self"],["formatter"]],["result"]]],[11,"eq","","",4,[[["self"],["vertextype"]],["bool"]]],[11,"clone","","",1,[[["self"]],["rect"]]],[11,"fmt","","",1,[[["self"],["formatter"]],["result"]]],[11,"clone","","",2,[[["self"]],["hmetrics"]]],[11,"fmt","","",2,[[["self"],["formatter"]],["result"]]],[11,"clone","","",3,[[["self"]],["vmetrics"]]],[11,"fmt","","",3,[[["self"],["formatter"]],["result"]]],[11,"clone","","",5,[[["self"]],["platformid"]]],[11,"fmt","","",5,[[["self"],["formatter"]],["result"]]],[11,"eq","","",5,[[["self"],["platformid"]],["bool"]]],[11,"partial_cmp","","",5,[[["self"],["platformid"]],["option",["ordering"]]]],[11,"cmp","","",5,[[["self"],["platformid"]],["ordering"]]],[11,"hash","","",5,N],[11,"clone","","",6,[[["self"]],["unicodeeid"]]],[11,"fmt","","",6,[[["se
searchIndex["syn"]={"doc":"Syn is a parsing library for parsing a stream of Rust tokens into a syntax tree of Rust source code.","items":[[3,"Ident","syn","A word of Rust code, which may be a keyword or legal variable name.",N,N],[3,"Attribute","","An attribute like `#[repr(transparent)]`.",N,N],[12,"pound_token","","",0,N],[12,"style","","",0,N],[12,"bracket_token","","",0,N],[12,"path","","",0,N],[12,"tts","","",0,N],[3,"MetaList","","A structured list within an attribute, like `derive(Copy, Clone)`.",N,N],[12,"ident","","",1,N],[12,"paren_token","","",1,N],[12,"nested","","",1,N],[3,"MetaNameValue","","A name-value pair within an attribute, like `feature = \"nightly\"`.",N,N],[12,"ident","","",2,N],[12,"eq_token","","",2,N],[12,"lit","","",2,N],[3,"Field","","A field of a struct or enum variant.",N,N],[12,"attrs","","Attributes tagged on the field.",3,N],[12,"vis","","Visibility of the field.",3,N],[12,"ident","","Name of the field, if any.",3,N],[12,"colon_token","","",3,N],[12,"ty","","Type of the field.",3,N],[3,"FieldsNamed","","Named fields of a struct or struct variant such as `Point { x: f64, y: f64 }`.",N,N],[12,"brace_token","","",4,N],[12,"named","","",4,N],[3,"FieldsUnnamed","","Unnamed fields of a tuple struct or tuple variant such as `Some(T)`.",N,N],[12,"paren_token","","",5,N],[12,"unnamed","","",5,N],[3,"Variant","","An enum variant.",N,N],[12,"attrs","","Attributes tagged on the variant.",6,N],[12,"ident","","Name of the variant.",6,N],[12,"fields","","Content stored in the variant.",6,N],[12,"discriminant","","Explicit discriminant: `Variant = 1`",6,N],[3,"VisCrate","","A crate-level visibility: `crate`.",N,N],[12,"crate_token","","",7,N],[3,"VisPublic","","A public visibility level: `pub`.",N,N],[12,"pub_token","","",8,N],[3,"VisRestricted","","A visibility level restricted to some path: `pub(self)` or `pub(super)` or `pub(crate)` or `pub(in some::module)`.",N,N],[12,"pub_token","","",9,N],[12,"paren_token","","",9,N],[12,"in_token","","",9,N],[12,"path","","",9,N],[3,"ExprArray","","A slice literal expression: `[a, b, c, d]`.",N,N],[3,"ExprAssign","","An assignment expression: `a = compute()`.",N,N],[3,"ExprAssignOp","","A compound assignment expression: `counter += 1`.",N,N],[3,"ExprAsync","","An async block: `async { ... }`.",N,N],[3,"ExprBinary","","A binary operation: `a + b`, `a * b`.",N,N],[12,"attrs","","",10,N],[12,"left","","",10,N],[12,"op","","",10,N],[12,"right","","",10,N],[3,"ExprBlock","","A blocked scope: `{ ... }`.",N,N],[3,"ExprBox","","A box expression: `box f`.",N,N],[3,"ExprBreak","","A `break`, with an optional label to break and an optional expression.",N,N],[3,"ExprCall","","A function call expression: `invoke(a, b)`.",N,N],[12,"attrs","","",11,N],[12,"func","","",11,N],[12,"paren_token","","",11,N],[12,"args","","",11,N],[3,"ExprCast","","A cast expression: `foo as f64`.",N,N],[12,"attrs","","",12,N],[12,"expr","","",12,N],[12,"as_token","","",12,N],[12,"ty","","",12,N],[3,"ExprClosure","","A closure expression: `|a, b| a + b`.",N,N],[3,"ExprContinue","","A `continue`, with an optional label.",N,N],[3,"ExprField","","Access of a named struct field (`obj.k`) or unnamed tuple struct field (`obj.0`).",N,N],[12,"attrs","","",13,N],[12,"base","","",13,N],[12,"dot_token","","",13,N],[12,"member","","",13,N],[3,"ExprForLoop","","A for loop: `for pat in expr { ... }`.",N,N],[3,"ExprGroup","","An expression contained within invisible delimiters.",N,N],[3,"ExprIf","","An `if` expression with an optional `else` block: `if expr { ... } else { ... }`.",N,N],[3,"ExprInPlace","","A placement expression: `place <- value`.",N,N],[3,"ExprIndex","","A square bracketed indexing expression: `vector[2]`.",N,N],[12,"attrs","","",14,N],[12,"expr","","",14,N],[12,"bracket_token","","",14,N],[12,"index","","",14,N],[3,"ExprLet","","A `let` guard: `let Some(x) = opt`.",N,N],[3,"ExprLit","","A literal in place of an expression: `1`, `\"foo\"`.",N,N],[12,"attrs","","",15,N],[12,"lit","","",15,N],[3,"ExprLoop","","Conditionless loop: `loop { ... }`.",N,N],[3,"ExprMacro","","A macro invocation expressio
searchIndex["texture"]={"doc":"A generic library for textures.","items":[[3,"TextureSettings","texture","Texture creation parameters.",N,N],[4,"Format","","Texture format.",N,N],[13,"Rgba8","","`(red, green, blue, alpha)` with values 0-255.",0,N],[4,"Filter","","Sampling filter",N,N],[13,"Linear","","A Weighted Linear Blend",1,N],[13,"Nearest","","Nearest Texel",1,N],[0,"ops","","Image operations for textures.",N,N],[5,"flip_vertical","texture::ops","Flips the image vertically.",N,N],[5,"alpha_to_rgba8","","Converts from alpha to rgba8.",N,N],[8,"ImageSize","texture","Implemented by all images to be used with generic algorithms.",N,N],[10,"get_size","","Get the image size.",2,N],[11,"get_width","","Gets the image width.",2,[[["self"]],["u32"]]],[11,"get_height","","Gets the image height.",2,[[["self"]],["u32"]]],[8,"CreateTexture","","Implemented by textures for creation.",N,N],[16,"Error","","The error when creating texture.",3,N],[10,"create","","Create texture from memory.",3,N],[8,"UpdateTexture","","Implemented by textures for updating.",N,N],[16,"Error","","The error when updating texture.",4,N],[10,"update","","Update the texture.",4,N],[11,"clone","","",5,[[["self"]],["texturesettings"]]],[11,"new","","Create default settings.",5,[[],["texturesettings"]]],[11,"get_convert_gamma","","Gets whether to convert gamma, treated as sRGB color space.",5,[[["self"]],["bool"]]],[11,"set_convert_gamma","","Sets convert gamma.",5,[[["self"],["bool"]]]],[11,"convert_gamma","","Sets convert gamma.",5,[[["self"],["bool"]],["self"]]],[11,"get_compress","","Gets wheter compress on the GPU.",5,[[["self"]],["bool"]]],[11,"set_compress","","Sets compress.",5,[[["self"],["bool"]]]],[11,"compress","","Sets compress.",5,[[["self"],["bool"]],["self"]]],[11,"get_generate_mipmap","","Gets generate mipmap.",5,[[["self"]],["bool"]]],[11,"set_generate_mipmap","","Sets generate mipmap.",5,[[["self"],["bool"]]]],[11,"generate_mipmap","","Sets generate mipmap.",5,[[["self"],["bool"]],["self"]]],[11,"get_min","","Gets minify filter.",5,[[["self"]],["filter"]]],[11,"set_min","","Sets minify filter.",5,[[["self"],["filter"]]]],[11,"min","","Sets minify filter.",5,[[["self"],["filter"]],["self"]]],[11,"get_mag","","Gets magnify filter",5,[[["self"]],["filter"]]],[11,"set_mag","","Sets magnify filter",5,[[["self"],["filter"]]]],[11,"mag","","Sets magnify filter",5,[[["self"],["filter"]],["self"]]],[11,"get_mipmap","","Gets minify mipmap filter",5,[[["self"]],["filter"]]],[11,"set_mipmap","","Sets magnify mipmap filter, and sets generate_mipmap to true.",5,[[["self"],["filter"]]]],[11,"mipmap","","Sets magnify mipmap filter, and sets generate_mipmap to true",5,[[["self"],["filter"]],["self"]]],[11,"get_filter","","Returns the min and mag filter",5,N],[11,"set_filter","","Sets the min and mag filter",5,[[["self"],["filter"]]]],[11,"filter","","Sets the min and mag filter",5,[[["self"],["filter"]],["self"]]],[11,"clone","","",0,[[["self"]],["format"]]],[11,"fmt","","",0,[[["self"],["formatter"]],["result"]]],[11,"clone","","",1,[[["self"]],["filter"]]],[11,"fmt","","",1,[[["self"],["formatter"]],["result"]]]],"paths":[[4,"Format"],[4,"Filter"],[8,"ImageSize"],[8,"CreateTexture"],[8,"UpdateTexture"],[3,"TextureSettings"]]};
searchIndex["tiff"]={"doc":"Decoding and Encoding of TIFF Images","items":[[4,"TiffError","tiff","Tiff error kinds.",N,N],[13,"FormatError","","The Image is not formatted properly",0,N],[13,"UnsupportedError","","The Decoder does not support this image format",0,N],[13,"IoError","","An I/O Error occurred while decoding the image",0,N],[4,"TiffFormatError","","",N,N],[13,"TiffSignatureNotFound","","",1,N],[13,"TiffSignatureInvalid","","",1,N],[13,"ImageFileDirectoryNotFound","","",1,N],[13,"InconsistentSizesEncountered","","",1,N],[13,"InvalidTag","","",1,N],[13,"RequiredTagNotFound","","",1,N],[13,"UnknownPredictor","","",1,N],[13,"UnsignedIntegerExpected","","",1,N],[4,"TiffUnsupportedError","","",N,N],[13,"HorizontalPredictor","","",2,N],[13,"InterpretationWithBits","","",2,N],[13,"UnknownInterpretation","","",2,N],[13,"UnknownCompressionMethod","","",2,N],[13,"UnsupportedCompressionMethod","","",2,N],[13,"UnsupportedSampleDepth","","",2,N],[13,"UnsupportedColorType","","",2,N],[13,"UnsupportedBitsPerChannel","","",2,N],[13,"UnsupportedPlanarConfig","","",2,N],[13,"UnsupportedDataType","","",2,N],[4,"ColorType","","An enumeration over supported color types and their bit depths",N,N],[13,"Gray","","Pixel is grayscale",3,N],[13,"RGB","","Pixel contains R, G and B channels",3,N],[13,"Palette","","Pixel is an index into a color palette",3,N],[13,"GrayA","","Pixel is grayscale with an alpha channel",3,N],[13,"RGBA","","Pixel is RGB with an alpha channel",3,N],[13,"CMYK","","Pixel is CMYK",3,N],[0,"decoder","","",N,N],[3,"Decoder","tiff::decoder","The representation of a TIFF decoder",N,N],[4,"DecodingResult","","Result of a decoding process",N,N],[13,"U8","","A vector of unsigned bytes",4,N],[13,"U16","","A vector of unsigned words",4,N],[4,"PhotometricInterpretation","","",N,N],[13,"WhiteIsZero","","",5,N],[13,"BlackIsZero","","",5,N],[13,"RGB","","",5,N],[13,"RGBPalette","","",5,N],[13,"TransparencyMask","","",5,N],[13,"CMYK","","",5,N],[13,"YCbCr","","",5,N],[13,"CIELab","","",5,N],[4,"CompressionMethod","","",N,N],[13,"None","","",6,N],[13,"Huffman","","",6,N],[13,"Fax3","","",6,N],[13,"Fax4","","",6,N],[13,"LZW","","",6,N],[13,"JPEG","","",6,N],[13,"PackBits","","",6,N],[4,"PlanarConfiguration","","",N,N],[13,"Chunky","","",7,N],[13,"Planar","","",7,N],[0,"ifd","","Function for reading TIFF tags",N,N],[3,"Entry","tiff::decoder::ifd","",N,N],[4,"Tag","","TIFF tag",N,N],[13,"Artist","","",8,N],[13,"BitsPerSample","","",8,N],[13,"CellLength","","",8,N],[13,"CellWidth","","",8,N],[13,"ColorMap","","",8,N],[13,"Compression","","",8,N],[13,"Copyright","","",8,N],[13,"DateTime","","",8,N],[13,"ExtraSamples","","",8,N],[13,"FillOrder","","",8,N],[13,"FreeByteCounts","","",8,N],[13,"FreeOffsets","","",8,N],[13,"GrayResponseCurve","","",8,N],[13,"GrayResponseUnit","","",8,N],[13,"HostComputer","","",8,N],[13,"ImageDescription","","",8,N],[13,"ImageLength","","",8,N],[13,"ImageWidth","","",8,N],[13,"Make","","",8,N],[13,"MaxSampleValue","","",8,N],[13,"MinSampleValue","","",8,N],[13,"Model","","",8,N],[13,"NewSubfileType","","",8,N],[13,"Orientation","","",8,N],[13,"PhotometricInterpretation","","",8,N],[13,"PlanarConfiguration","","",8,N],[13,"ResolutionUnit","","",8,N],[13,"RowsPerStrip","","",8,N],[13,"SamplesPerPixel","","",8,N],[13,"Software","","",8,N],[13,"StripByteCounts","","",8,N],[13,"StripOffsets","","",8,N],[13,"SubfileType","","",8,N],[13,"Threshholding","","",8,N],[13,"XResolution","","",8,N],[13,"YResolution","","",8,N],[13,"Predictor","","",8,N],[13,"Unknown","","",8,N],[4,"Type","","",N,N],[13,"BYTE","","",9,N],[13,"ASCII","","",9,N],[13,"SHORT","","",9,N],[13,"LONG","","",9,N],[13,"RATIONAL","","",9,N],[4,"Value","","",N,N],[13,"Unsigned","","",10,N],[13,"List","","",10,N],[13,"Rational","","",10,N],[13,"Ascii","","",10,N],[6,"Directory","","Type representing an Image File Directory",N,N],[11,"clone","","",8,[[["self"]],["tag"]]],[11,"eq","","",8,[[["self"],["tag"]],["bool"]]],[11,"ne","","",8,[[["self"],["tag"]],["bool"]]],[11,"fmt","","",8,[[["self"],["formatter"]],["result"]]],[11,"hash","","",8,N],[11,"fro
searchIndex["unicode_xid"]={"doc":"Determine if a `char` is a valid identifier for a parser and/or lexer according to Unicode Standard Annex #31 rules.","items":[[17,"UNICODE_VERSION","unicode_xid","The version of Unicode that this version of unicode-xid is based on.",N,N],[8,"UnicodeXID","","Methods for determining if a character is a valid identifier character.",N,N],[10,"is_xid_start","","Returns whether the specified character satisfies the 'XID_Start' Unicode property.",0,[[["self"]],["bool"]]],[10,"is_xid_continue","","Returns whether the specified `char` satisfies the 'XID_Continue' Unicode property.",0,[[["self"]],["bool"]]]],"paths":[[8,"UnicodeXID"]]};
searchIndex["unreachable"]={"doc":"unreachable","items":[[5,"unreachable","unreachable","Hint to the optimizer that any code path which calls this function is statically unreachable and can be removed.",N,N],[8,"UncheckedOptionExt","","An extension trait for `Option<T>` providing unchecked unwrapping methods.",N,N],[10,"unchecked_unwrap","","Get the value out of this Option without checking for None.",0,[[["self"]],["t"]]],[10,"unchecked_unwrap_none","","Assert that this Option is a None to the optimizer.",0,[[["self"]]]],[8,"UncheckedResultExt","","An extension trait for `Result<T, E>` providing unchecked unwrapping methods.",N,N],[10,"unchecked_unwrap_ok","","Get the value out of this Result without checking for Err.",1,[[["self"]],["t"]]],[10,"unchecked_unwrap_err","","Get the error out of this Result without checking for Ok.",1,[[["self"]],["e"]]]],"paths":[[8,"UncheckedOptionExt"],[8,"UncheckedResultExt"]]};
searchIndex["vecmath"]={"doc":"A simple and generic library for vector math.","items":[[5,"col_mat3x2_mul_col","vecmath","Computes column vector in column matrix product.",N,[[["matrix3x2"],["matrix3x2"],["usize"]],["vector2"]]],[5,"col_mat3_mul_col","","Computes column vector in column matrix product.",N,[[["matrix3"],["matrix3"],["usize"]],["vector3"]]],[5,"col_mat4x3_mul_col","","Computes column vector in column matrix product.",N,[[["matrix4x3"],["matrix4x3"],["usize"]],["vector3"]]],[5,"col_mat4_mul_col","","Computes column vector in column matrix product.",N,[[["matrix4"],["matrix4"],["usize"]],["vector4"]]],[5,"row_mat2x3_mul_row","","Computes row vector in row matrix product.",N,[[["matrix2x3"],["matrix2x3"],["usize"]],["vector3"]]],[5,"row_mat3_mul_row","","Computes row vector in row matrix product.",N,[[["matrix3"],["matrix3"],["usize"]],["vector3"]]],[5,"row_mat3x4_mul_row","","Computes row vector in row matrix product.",N,[[["matrix3x4"],["matrix3x4"],["usize"]],["vector4"]]],[5,"row_mat4_mul_row","","Computes row vector in row matrix product.",N,[[["matrix4"],["matrix4"],["usize"]],["vector4"]]],[5,"col_mat3x2_mul","","Multiplies two matrices.",N,[[["matrix3x2"],["matrix3x2"]],["matrix3x2"]]],[5,"col_mat3_mul","","Multiplies two matrices.",N,[[["matrix3"],["matrix3"]],["matrix3"]]],[5,"col_mat4x3_mul","","Multiplies two matrices.",N,[[["matrix4x3"],["matrix4x3"]],["matrix4x3"]]],[5,"col_mat4_mul","","Multiplies two matrices.",N,[[["matrix4"],["matrix4"]],["matrix4"]]],[5,"row_mat2x3_mul","","Multiplies two matrices.",N,[[["matrix2x3"],["matrix2x3"]],["matrix2x3"]]],[5,"row_mat3_mul","","Multiplies two matrices.",N,[[["matrix3"],["matrix3"]],["matrix3"]]],[5,"row_mat3x4_mul","","Multiplies two matrices.",N,[[["matrix3x4"],["matrix3x4"]],["matrix3x4"]]],[5,"row_mat4_mul","","Multiplies two matrices.",N,[[["matrix4"],["matrix4"]],["matrix4"]]],[5,"mat2x3_id","","Constructs identity matrix.",N,[[],["matrix2x3"]]],[5,"mat3x2_id","","Constructs identity matrix.",N,[[],["matrix3x2"]]],[5,"mat3_id","","Constructs identity matrix.",N,[[],["matrix3"]]],[5,"mat3x4_id","","Constructs identity matrix.",N,[[],["matrix3x4"]]],[5,"mat4x3_id","","Constructs identity matrix.",N,[[],["matrix4x3"]]],[5,"mat4_id","","Constructs identity matrix.",N,[[],["matrix4"]]],[5,"vec2_cast","","Converts to another vector type.",N,[[["vector2"]],["vector2"]]],[5,"vec3_cast","","Converts to another vector type.",N,[[["vector3"]],["vector3"]]],[5,"vec4_cast","","Converts to another vector type.",N,[[["vector4"]],["vector4"]]],[5,"mat2x3_cast","","Converts to another matrix type.",N,[[["matrix2x3"]],["matrix2x3"]]],[5,"mat3x2_cast","","Converts to another matrix type.",N,[[["matrix3x2"]],["matrix3x2"]]],[5,"mat3_cast","","Converts to another matrix type.",N,[[["matrix3"]],["matrix3"]]],[5,"mat3x4_cast","","Converts to another matrix type.",N,[[["matrix3x4"]],["matrix3x4"]]],[5,"mat4x3_cast","","Converts to another matrix type.",N,[[["matrix4x3"]],["matrix4x3"]]],[5,"mat4_cast","","Converts to another matrix type.",N,[[["matrix4"]],["matrix4"]]],[5,"vec2_sub","","Subtracts 'b' from 'a'.",N,[[["vector2"],["vector2"]],["vector2"]]],[5,"vec3_sub","","Subtracts 'b' from 'a'.",N,[[["vector3"],["vector3"]],["vector3"]]],[5,"vec4_sub","","Subtracts 'b' from 'a'.",N,[[["vector4"],["vector4"]],["vector4"]]],[5,"mat2x3_sub","","Subtracts 'b' from 'a'.",N,[[["matrix2x3"],["matrix2x3"]],["matrix2x3"]]],[5,"mat3x2_sub","","Subtracts 'b' from 'a'.",N,[[["matrix3x2"],["matrix3x2"]],["matrix3x2"]]],[5,"mat3_sub","","Subtracts 'b' from 'a'.",N,[[["matrix3"],["matrix3"]],["matrix3"]]],[5,"mat3x4_sub","","Subtracts 'b' from 'a'.",N,[[["matrix3x4"],["matrix3x4"]],["matrix3x4"]]],[5,"mat4x3_sub","","Subtracts 'b' from 'a'.",N,[[["matrix4x3"],["matrix4x3"]],["matrix4x3"]]],[5,"mat4_sub","","Subtracts 'b' from 'a'.",N,[[["matrix4"],["matrix4"]],["matrix4"]]],[5,"vec2_add","","Adds two vectors.",N,[[["vector2"],["vector2"]],["vector2"]]],[5,"vec3_add","","Adds two vectors.",N,[[["vector3"],["vector3"]],["vector3"]]],[5,"vec4_add","","Adds two vectors.",N,[[["vector4"
searchIndex["viewport"]={"doc":"A library for storing viewport information","items":[[3,"Viewport","viewport","Stores viewport information.",N,N],[12,"rect","","Viewport in pixels. `[x, y, width height]` where `(x, y)` is lower left corner.",0,N],[12,"draw_size","","The size of frame buffer in pixels.",0,N],[12,"window_size","","The size of window in points.",0,N],[11,"clone","","",0,[[["self"]],["viewport"]]],[11,"abs_transform","","Computes absolute transform for 2D graphics, which uses a row major 2x3 matrix. The origin is in the upper left corner of the viewport rectangle. The x axis points to the right, and the y axis points down. The units are in points (window coordinates).",0,N]],"paths":[[3,"Viewport"]]};
searchIndex["void"]={"doc":"Void","items":[[4,"Void","void","The empty type for cases which can't occur.",N,N],[5,"unreachable","","A safe version of `intrinsincs::unreachable`.",N,N],[8,"ResultVoidExt","","Extensions to `Result<T, Void>`",N,N],[10,"void_unwrap","","Get the value out of a wrapper.",0,[[["self"]],["t"]]],[8,"ResultVoidErrExt","","Extensions to `Result<Void, E>`",N,N],[10,"void_unwrap_err","","Get the error out of a wrapper.",1,[[["self"]],["e"]]],[11,"clone","","",2,[[["self"]],["void"]]],[11,"fmt","","",2,[[["self"],["formatter"]],["result"]]],[11,"fmt","","",2,[[["self"],["formatter"]],["result"]]],[11,"eq","","",2,[[["self"],["t"]],["bool"]]],[11,"partial_cmp","","",2,[[["self"],["t"]],["option",["ordering"]]]],[11,"description","","",2,[[["self"]],["str"]]],[11,"cause","","",2,[[["self"]],["option",["error"]]]]],"paths":[[8,"ResultVoidExt"],[8,"ResultVoidErrExt"],[4,"Void"]]};
searchIndex["wayland_client"]={"doc":"Client-side Wayland connector","items":[[3,"Display","wayland_client","A connection to a wayland server",N,N],[3,"EventQueue","","An event queue for protocol messages",N,N],[3,"QueueToken","","A token representing this event queue",N,N],[3,"ReadEventsGuard","","A guard over a read intention.",N,N],[3,"GlobalManager","","An utility to manage global objects",N,N],[3,"NewProxy","","A newly-created proxy that needs implementation",N,N],[3,"Proxy","","An handle to a wayland proxy",N,N],[4,"ConnectError","","Enum representing the possible reasons why connecting to the wayland server failed",N,N],[13,"NoWaylandLib","","The library was compiled with the `dlopen` feature, and the `libwayland-client.so` library could not be found at runtime",0,N],[13,"NoCompositorListening","","Any needed library was found, but the listening socket of the server could not be found.",0,N],[13,"InvalidName","","The provided socket name is invalid",0,N],[4,"GlobalError","","An error that occured trying to bind a global",N,N],[13,"Missing","","The requested global was missing",1,N],[13,"VersionTooLow","","The global abvertized by the server has a lower version number than the one requested",1,N],[4,"GlobalEvent","","Event provided to the user callback of GlobalManager",N,N],[13,"New","","A new global was created",2,N],[12,"id","wayland_client::GlobalEvent","Id of the new global",2,N],[12,"interface","","Interface of the new global",2,N],[12,"version","","Maximum supported version of the new global",2,N],[13,"Removed","wayland_client","A global was removed",2,N],[12,"id","wayland_client::GlobalEvent","Id of the removed global",2,N],[12,"interface","","Interface of the removed global",2,N],[11,"fmt","wayland_client","",0,[[["self"],["formatter"]],["result"]]],[11,"from_external_display","","Create a Display and Event Queue from an external display",3,N],[11,"get_display_ptr","","Retrieve the `wl_display` pointer",3,N],[11,"connect_to_env","","Attempt to connect to a wayland server using the contents of the environment variables",3,[[],["result",["connecterror"]]]],[11,"connect_to_name","","Attempt to connect to a wayland server socket with given name",3,[[["s"]],["result",["connecterror"]]]],[11,"flush","","Non-blocking write to the server",3,[[["self"]],["result",["i32"]]]],[11,"create_event_queue","","Create a new event queue associated with this wayland connection",3,[[["self"]],["eventqueue"]]],[11,"deref","","",3,[[["self"]],["proxy"]]],[11,"dispatch","","Dispatches events from the internal buffer.",4,[[["self"]],["ioresult",["u32"]]]],[11,"dispatch_pending","","Dispatches pending events from the internal buffer.",4,[[["self"]],["ioresult",["u32"]]]],[11,"sync_roundtrip","","Synchronous roundtrip",4,[[["self"]],["ioresult",["i32"]]]],[11,"get_token","","Create a new token associated with this event queue",4,[[["self"]],["queuetoken"]]],[11,"prepare_read","","Prepare an conccurent read",4,[[["self"]],["option",["readeventsguard"]]]],[11,"read_events","","Read events",5,[[["self"]],["ioresult",["i32"]]]],[11,"cancel","","Cancel the read",5,[[["self"]]]],[11,"drop","","",5,[[["self"]]]],[11,"clone","","",6,[[["self"]],["globalmanager"]]],[11,"fmt","","",1,[[["self"],["formatter"]],["result"]]],[11,"new","","Create a global manager handling a registry",6,[[["newproxy",["wlregistry"]]],["globalmanager"]]],[11,"new_with_cb","","Create a global manager handling a registry with a callback",6,[[["newproxy",["wlregistry"]],["impl"]],["globalmanager"]]],[11,"instantiate_auto","","Instanciate a global with highest available version",6,[[["self"]],["result",["newproxy","globalerror"]]]],[11,"instantiate_exact","","Instanciate a global with a specific version",6,[[["self"],["u32"]],["result",["newproxy","globalerror"]]]],[11,"list","","Retrieve the list of currently known globals",6,[[["self"]],["vec"]]],[11,"eq","","",7,[[["self"],["proxy"]],["bool"]]],[11,"send","","Send a request through this object",7,N],[11,"is_alive","","Check if the object associated with this proxy is still alive",7,[[["self"]],["bool"]]],[11,"versi
searchIndex["wayland_commons"]={"doc":"Common definitions for wayland","items":[[3,"AnonymousObject","wayland_commons","Anonymous interface",N,N],[4,"NoMessage","","An empty enum representing a MessageGroup with no messages",N,N],[5,"downcast_impl","","Attempt to downcast a boxed `Implementation` trait object.",N,[[["box",["implementation"]]],["result",["box","box"]]]],[8,"MessageGroup","","A group of messages",N,N],[10,"is_destructor","","Whether this message is a destructor",0,[[["self"]],["bool"]]],[10,"from_raw_c","","Construct a message of this group from its C representation",0,N],[10,"as_raw_c_in","","Build a C representation of this message",0,[[["self"],["f"]],["t"]]],[8,"Interface","","The description of a wayland interface",N,N],[16,"Request","","Set of requests associated to this interface",1,N],[16,"Event","","Set of events associated to this interface",1,N],[18,"NAME","","Name of this interface",1,N],[10,"c_interface","","Pointer to the C representation of this interface",1,N],[8,"Implementation","","Trait representing implementations for wayland objects",N,N],[10,"receive","","Receive a message",2,[[["self"],["msg"],["meta"]]]],[11,"is","","Returns true if the trait object wraps an object of type `__T`.",2,[[["self"]],["bool"]]],[11,"downcast","","Returns a boxed object from a boxed trait object if the underlying object is of type `__T`. Returns the original boxed trait if it isn't.",2,[[["box"]],["result",["box","box"]]]],[11,"downcast_ref","","Returns a reference to the object within the trait object if it is of type `__T`, or `None` if it isn't.",2,[[["self"]],["option"]]],[11,"downcast_mut","","Returns a mutable reference to the object within the trait object if it is of type `__T`, or `None` if it isn't.",2,[[["self"]],["option"]]],[11,"c_interface","","",3,N],[11,"is_destructor","","",4,[[["self"]],["bool"]]],[11,"from_raw_c","","",4,N],[11,"as_raw_c_in","","",4,[[["self"],["f"]],["t"]]]],"paths":[[8,"MessageGroup"],[8,"Interface"],[8,"Implementation"],[3,"AnonymousObject"],[4,"NoMessage"]]};
searchIndex["wayland_protocols"]={"doc":"This crate provides bindings to the official wayland protocol extensions provided in https://cgit.freedesktop.org/wayland/wayland-protocols","items":[[0,"unstable","wayland_protocols","Unstable protocols from wayland-protocols",N,N],[0,"fullscreen_shell","wayland_protocols::unstable","Fullscreen shell protocol",N,N],[0,"v1","wayland_protocols::unstable::fullscreen_shell","",N,N],[0,"client","wayland_protocols::unstable::fullscreen_shell::v1","Client-side API of this protocol",N,N],[0,"zwp_fullscreen_shell_v1","wayland_protocols::unstable::fullscreen_shell::v1::client","displays a single surface per output",N,N],[3,"ZwpFullscreenShellV1","wayland_protocols::unstable::fullscreen_shell::v1::client::zwp_fullscreen_shell_v1","",N,N],[4,"Capability","","capabilities advertised by the compositor",N,N],[13,"ArbitraryModes","","compositor is capable of almost any output mode",0,N],[13,"CursorPlane","","compositor has a separate cursor plane",0,N],[4,"PresentMethod","","different method to set the surface fullscreen",N,N],[13,"Default","","no preference, apply default policy",1,N],[13,"Center","","center the surface on the output",1,N],[13,"Zoom","","scale the surface, preserving aspect ratio, to the largest size that will fit on the output",1,N],[13,"ZoomCrop","","scale the surface, preserving aspect ratio, to fully fill the output cropping if needed",1,N],[13,"Stretch","","scale the surface to the size of the output ignoring aspect ratio",1,N],[4,"Error","","wl_fullscreen_shell error values",N,N],[13,"InvalidMethod","","present_method is not known",2,N],[4,"Request","","",N,N],[13,"Release","","release the wl_fullscreen_shell interface",3,N],[13,"PresentSurface","","present surface for display",3,N],[12,"surface","wayland_protocols::unstable::fullscreen_shell::v1::client::zwp_fullscreen_shell_v1::Request","",3,N],[12,"method","","",3,N],[12,"output","","",3,N],[13,"PresentSurfaceForMode","wayland_protocols::unstable::fullscreen_shell::v1::client::zwp_fullscreen_shell_v1","present surface for display at a particular mode",3,N],[12,"surface","wayland_protocols::unstable::fullscreen_shell::v1::client::zwp_fullscreen_shell_v1::Request","",3,N],[12,"output","","",3,N],[12,"framerate","","",3,N],[12,"feedback","","",3,N],[4,"Event","wayland_protocols::unstable::fullscreen_shell::v1::client::zwp_fullscreen_shell_v1","",N,N],[13,"Capability","","advertises a capability of the compositor",4,N],[12,"capability","wayland_protocols::unstable::fullscreen_shell::v1::client::zwp_fullscreen_shell_v1::Event","",4,N],[8,"RequestsTrait","wayland_protocols::unstable::fullscreen_shell::v1::client::zwp_fullscreen_shell_v1","",N,N],[10,"release","","release the wl_fullscreen_shell interface",5,N],[10,"present_surface","","present surface for display",5,N],[10,"present_surface_for_mode","","present surface for display at a particular mode",5,[[["self"],["proxy"],["proxy"],["i32"]],["result",["newproxy"]]]],[0,"zwp_fullscreen_shell_mode_feedback_v1","wayland_protocols::unstable::fullscreen_shell::v1::client","",N,N],[3,"ZwpFullscreenShellModeFeedbackV1","wayland_protocols::unstable::fullscreen_shell::v1::client::zwp_fullscreen_shell_mode_feedback_v1","",N,N],[4,"Request","","",N,N],[4,"Event","","",N,N],[13,"ModeSuccessful","","mode switch succeeded",6,N],[13,"ModeFailed","","mode switch failed",6,N],[13,"PresentCancelled","","mode switch cancelled",6,N],[8,"RequestsTrait","","",N,N],[0,"c_interfaces","wayland_protocols::unstable::fullscreen_shell::v1","C interfaces for this protocol",N,N],[7,"wl_surface_interface","wayland_protocols::unstable::fullscreen_shell::v1::c_interfaces","",N,N],[7,"wl_output_interface","","",N,N],[7,"zwp_fullscreen_shell_v1_requests","","",N,N],[7,"zwp_fullscreen_shell_v1_events","","",N,N],[7,"zwp_fullscreen_shell_v1_interface","","",N,N],[7,"zwp_fullscreen_shell_mode_feedback_v1_events","","",N,N],[7,"zwp_fullscreen_shell_mode_feedback_v1_interface","","",N,N],[11,"clone","wayland_protocols::unstable::fullscreen_shell::v1::client::zwp_fullscreen_shell_v1","",0,[[["self"]],["capabilit
searchIndex["wayland_sys"]={"doc":"FFI bindings to the wayland system libraries.","items":[[0,"common","wayland_sys","Various types and functions that are used by both the client and the server libraries.",N,N],[3,"wl_message","wayland_sys::common","",N,N],[12,"name","","",0,N],[12,"signature","","",0,N],[12,"types","","",0,N],[3,"wl_interface","","",N,N],[12,"name","","",1,N],[12,"version","","",1,N],[12,"request_count","","",1,N],[12,"requests","","",1,N],[12,"event_count","","",1,N],[12,"events","","",1,N],[3,"wl_list","","",N,N],[12,"prev","","",2,N],[12,"next","","",2,N],[3,"wl_array","","",N,N],[12,"size","","",3,N],[12,"alloc","","",3,N],[12,"data","","",3,N],[19,"wl_argument","","",N,N],[12,"i","","",4,N],[12,"u","","",4,N],[12,"f","","",4,N],[12,"s","","",4,N],[12,"o","","",4,N],[12,"n","","",4,N],[12,"a","","",4,N],[12,"h","","",4,N],[5,"wl_fixed_to_double","","",N,[[["wl_fixed_t"]],["f64"]]],[5,"wl_fixed_from_double","","",N,[[["f64"]],["wl_fixed_t"]]],[5,"wl_fixed_to_int","","",N,[[["wl_fixed_t"]],["i32"]]],[5,"wl_fixed_from_int","","",N,[[["i32"]],["wl_fixed_t"]]],[6,"wl_fixed_t","","",N,N],[6,"wl_dispatcher_func_t","","",N,N],[6,"wl_log_func_t","","",N,N],[0,"client","wayland_sys","Bindings to the client library `libwayland-client.so`",N,N],[3,"WaylandClient","wayland_sys::client","",N,N],[12,"wl_display_connect_to_fd","","",5,N],[12,"wl_display_connect","","",5,N],[12,"wl_display_disconnect","","",5,N],[12,"wl_display_get_fd","","",5,N],[12,"wl_display_roundtrip","","",5,N],[12,"wl_display_read_events","","",5,N],[12,"wl_display_prepare_read","","",5,N],[12,"wl_display_cancel_read","","",5,N],[12,"wl_display_dispatch","","",5,N],[12,"wl_display_dispatch_pending","","",5,N],[12,"wl_display_get_error","","",5,N],[12,"wl_display_get_protocol_error","","",5,N],[12,"wl_display_flush","","",5,N],[12,"wl_event_queue_destroy","","",5,N],[12,"wl_display_create_queue","","",5,N],[12,"wl_display_roundtrip_queue","","",5,N],[12,"wl_display_prepare_read_queue","","",5,N],[12,"wl_display_dispatch_queue","","",5,N],[12,"wl_display_dispatch_queue_pending","","",5,N],[12,"wl_proxy_create","","",5,N],[12,"wl_proxy_destroy","","",5,N],[12,"wl_proxy_add_listener","","",5,N],[12,"wl_proxy_get_listener","","",5,N],[12,"wl_proxy_add_dispatcher","","",5,N],[12,"wl_proxy_marshal_array_constructor","","",5,N],[12,"wl_proxy_marshal_array_constructor_versioned","","",5,N],[12,"wl_proxy_marshal_array","","",5,N],[12,"wl_proxy_set_user_data","","",5,N],[12,"wl_proxy_get_user_data","","",5,N],[12,"wl_proxy_get_id","","",5,N],[12,"wl_proxy_get_class","","",5,N],[12,"wl_proxy_set_queue","","",5,N],[12,"wl_proxy_get_version","","",5,N],[12,"wl_proxy_create_wrapper","","",5,N],[12,"wl_proxy_wrapper_destroy","","",5,N],[12,"wl_log_set_handler_client","","",5,N],[12,"wl_list_init","","",5,N],[12,"wl_list_insert","","",5,N],[12,"wl_list_remove","","",5,N],[12,"wl_list_length","","",5,N],[12,"wl_list_empty","","",5,N],[12,"wl_list_insert_list","","",5,N],[12,"wl_array_init","","",5,N],[12,"wl_array_release","","",5,N],[12,"wl_array_add","","",5,N],[12,"wl_array_copy","","",5,N],[12,"wl_proxy_marshal_constructor","","",5,N],[12,"wl_proxy_marshal_constructor_versioned","","",5,N],[12,"wl_proxy_marshal","","",5,N],[3,"WAYLAND_CLIENT_OPTION","","",N,N],[3,"WAYLAND_CLIENT_HANDLE","","",N,N],[4,"wl_proxy","","",N,N],[4,"wl_display","","",N,N],[4,"wl_event_queue","","",N,N],[5,"is_lib_available","","",N,[[],["bool"]]],[11,"open","","",5,[[["str"]],["result",["waylandclient","dlerror"]]]],[11,"deref","","",6,[[["self"]],["option"]]],[11,"initialize","","",6,[[["self"]]]],[11,"deref","","",7,[[["self"]],["waylandclient"]]],[11,"initialize","","",7,[[["self"]]]],[0,"egl","wayland_sys","Bindings to the EGL library `libwayland-egl.so`",N,N],[3,"WaylandEgl","wayland_sys::egl","",N,N],[12,"wl_egl_window_create","","",8,N],[12,"wl_egl_window_destroy","","",8,N],[12,"wl_egl_window_resize","","",8,N],[12,"wl_egl_window_get_attached_size","","",8,N],[3,"WAYLAND_EGL_OPTION","","",N,N],[3,"WAYLAND_EGL_HANDLE","","",N,N],[4,"wl_egl_window","","",N,N],[5,"is_lib_av
searchIndex["window"]={"doc":"Window storage and interfacing traits.","items":[[3,"NoWindow","window","A window without user interface, often used in server event loops.",N,N],[3,"Size","","Structure to store the window size.",N,N],[12,"width","","The width.",0,N],[12,"height","","The height.",0,N],[3,"Position","","Structure to store the window position.",N,N],[12,"x","","The x coordinate.",1,N],[12,"y","","The y coordinate.",1,N],[3,"WindowSettings","","Settings structure for window behavior.",N,N],[11,"new","","Creates a new `NoWindow`.",2,[[["windowsettings"]],["nowindow"]]],[11,"should_close","","",2,[[["self"]],["bool"]]],[11,"set_should_close","","",2,[[["self"],["bool"]]]],[11,"size","","",2,[[["self"]],["size"]]],[11,"swap_buffers","","",2,[[["self"]]]],[11,"wait_event","","",2,[[["self"]],["input"]]],[11,"wait_event_timeout","","",2,[[["self"],["duration"]],["option",["input"]]]],[11,"poll_event","","",2,[[["self"]],["option",["input"]]]],[11,"draw_size","","",2,[[["self"]],["size"]]],[11,"build_from_window_settings","","Errors",2,[[["windowsettings"]],["result",["string"]]]],[11,"get_title","","",2,[[["self"]],["string"]]],[11,"set_title","","",2,[[["self"],["string"]]]],[11,"get_exit_on_esc","","",2,[[["self"]],["bool"]]],[11,"set_exit_on_esc","","",2,[[["self"],["bool"]]]],[11,"set_capture_cursor","","",2,[[["self"],["bool"]]]],[11,"show","","",2,[[["self"]]]],[11,"hide","","",2,[[["self"]]]],[11,"get_position","","",2,[[["self"]],["option",["position"]]]],[11,"set_position","","",2,[[["self"],["p"]]]],[11,"set_size","","",2,[[["self"],["s"]]]],[6,"ProcAddress","","The type of an OpenGL function address.",N,N],[8,"BuildFromWindowSettings","","Constructs a window from a `WindowSettings` object.",N,N],[10,"build_from_window_settings","","Builds the window from a `WindowSettings` object.",3,[[["windowsettings"]],["result",["string"]]]],[8,"Window","","Trait representing the minimum requirements for defining a window.",N,N],[10,"set_should_close","","Tells the window to close or stay open.",4,[[["self"],["bool"]]]],[10,"should_close","","Returns true if the window should close.",4,[[["self"]],["bool"]]],[10,"size","","Gets the size of the window.",4,[[["self"]],["size"]]],[10,"swap_buffers","","Swaps render buffers.",4,[[["self"]]]],[10,"wait_event","","Wait indefinitely for an input event to be available from the window.",4,[[["self"]],["input"]]],[10,"wait_event_timeout","","Wait for an input event to be available from the window or for the specified timeout to be reached.",4,[[["self"],["duration"]],["option",["input"]]]],[10,"poll_event","","Polls an input event from the window.",4,[[["self"]],["option",["input"]]]],[10,"draw_size","","Gets the draw size of the window.",4,[[["self"]],["size"]]],[8,"AdvancedWindow","","Trait representing a window with the most features that are still generic.",N,N],[10,"get_title","","Gets a copy of the title of the window.",5,[[["self"]],["string"]]],[10,"set_title","","Sets the title of the window.",5,[[["self"],["string"]]]],[11,"title","","Sets title on window.",5,[[["self"],["string"]],["self"]]],[10,"get_exit_on_esc","","Gets whether to exit when pressing esc.",5,[[["self"]],["bool"]]],[10,"set_exit_on_esc","","Sets whether to exit when pressing esc.",5,[[["self"],["bool"]]]],[11,"exit_on_esc","","Sets whether to exit when pressing the Esc button.",5,[[["self"],["bool"]],["self"]]],[10,"set_capture_cursor","","Sets whether to capture/grab the cursor.",5,[[["self"],["bool"]]]],[11,"capture_cursor","","Sets whether to capture/grab the cursor.",5,[[["self"],["bool"]],["self"]]],[10,"show","","Shows the window.",5,[[["self"]]]],[10,"hide","","Hides the window.",5,[[["self"]]]],[10,"get_position","","Gets the position of window.",5,[[["self"]],["option",["position"]]]],[10,"set_position","","Sets the position of window.",5,[[["self"],["p"]]]],[10,"set_size","","Sets the window size.",5,[[["self"],["s"]]]],[11,"position","","Sets the position of window.",5,[[["self"],["p"]],["self"]]],[8,"OpenGLWindow","","Trait for OpenGL specific operations on a window.",N,N],[10,"get_proc
searchIndex["winit"]={"doc":"Winit allows you to build a window on as many platforms as possible.","items":[[3,"KeyboardInput","winit","Describes a keyboard input event.",N,N],[12,"scancode","","Identifies the physical key pressed",0,N],[12,"state","","",0,N],[12,"virtual_keycode","","Identifies the semantic meaning of the key",0,N],[12,"modifiers","","Modifier keys active at the time of this input.",0,N],[3,"Touch","","Represents touch event",N,N],[12,"device_id","","",1,N],[12,"phase","","",1,N],[12,"location","","",1,N],[12,"id","","unique identifier of a finger.",1,N],[3,"ModifiersState","","Represents the current state of the keyboard modifiers",N,N],[12,"shift","","The \"shift\" key",2,N],[12,"ctrl","","The \"control\" key",2,N],[12,"alt","","The \"alt\" key",2,N],[12,"logo","","The \"logo\" key",2,N],[3,"AvailableMonitorsIter","","An iterator for the list of available monitors.",N,N],[3,"MonitorId","","Identifier for a monitor.",N,N],[3,"Icon","","An icon used for the window titlebar, taskbar, etc.",N,N],[3,"Window","","Represents a window.",N,N],[3,"WindowId","","Identifier of a window. Unique for each window.",N,N],[3,"DeviceId","","Identifier of an input device.",N,N],[3,"EventsLoop","","Provides a way to retrieve events from the system and from the windows that were registered to the events loop.",N,N],[3,"EventsLoopProxy","","Used to wake up the `EventsLoop` from another thread.",N,N],[3,"EventsLoopClosed","","The error that is returned when an `EventsLoopProxy` attempts to wake up an `EventsLoop` that no longer exists.",N,N],[3,"WindowBuilder","","Object that allows you to build windows.",N,N],[12,"window","","The attributes to use to create the window.",3,N],[3,"WindowAttributes","","Attributes to use when creating a window.",N,N],[12,"dimensions","","The dimensions of the window. If this is `None`, some platform-specific dimensions will be used.",4,N],[12,"min_dimensions","","The minimum dimensions a window can be, If this is `None`, the window will have no minimum dimensions (aside from reserved).",4,N],[12,"max_dimensions","","The maximum dimensions a window can be, If this is `None`, the maximum will have no maximum or will be set to the primary monitor's dimensions by the platform.",4,N],[12,"resizable","","Whether the window is resizable or not.",4,N],[12,"fullscreen","","Whether the window should be set as fullscreen upon creation.",4,N],[12,"title","","The title of the window in the title bar.",4,N],[12,"maximized","","Whether the window should be maximized upon creation.",4,N],[12,"visible","","Whether the window should be immediately visible upon creation.",4,N],[12,"transparent","","Whether the the window should be transparent. If this is true, writing colors with alpha values different than `1.0` will produce a transparent window.",4,N],[12,"decorations","","Whether the window should have borders and bars.",4,N],[12,"always_on_top","","Whether the window should always be on top of other windows.",4,N],[12,"window_icon","","The window icon.",4,N],[12,"multitouch","","[iOS only] Enable multitouch, see multipleTouchEnabled",4,N],[4,"Event","","Describes a generic event.",N,N],[13,"WindowEvent","","",5,N],[12,"window_id","winit::Event","",5,N],[12,"event","","",5,N],[13,"DeviceEvent","winit","",5,N],[12,"device_id","winit::Event","",5,N],[12,"event","","",5,N],[13,"Awakened","winit","",5,N],[13,"Suspended","","The application has been suspended or resumed.",5,N],[4,"WindowEvent","","Describes an event from a `Window`.",N,N],[13,"Resized","","The size of the window has changed. Contains the client area's new dimensions.",6,N],[13,"Moved","","The position of the window has changed. Contains the window's new position.",6,N],[13,"CloseRequested","","The window has been requested to close.",6,N],[13,"Destroyed","","The window has been destroyed.",6,N],[13,"DroppedFile","","A file has been dropped into the window.",6,N],[13,"HoveredFile","","A file is being hovered over the window.",6,N],[13,"HoveredFileCancelled","","A file was hovered, but has exited the window.",6,N],[13,"ReceivedCharacter","","The wi
searchIndex["x11_dl"]={"doc":"","items":[[0,"error","x11_dl","",N,N],[3,"OpenError","x11_dl::error","",N,N],[4,"OpenErrorKind","","",N,N],[13,"Library","","",0,N],[13,"Symbol","","",0,N],[11,"clone","","",1,[[["self"]],["openerror"]]],[11,"fmt","","",1,[[["self"],["formatter"]],["result"]]],[11,"detail","","",1,[[["self"]],["str"]]],[11,"kind","","",1,[[["self"]],["openerrorkind"]]],[11,"new","","",1,[[["openerrorkind"],["string"]],["openerror"]]],[11,"fmt","","",1,[[["self"],["formatter"]],["result",["error"]]]],[11,"description","","",1,[[["self"]],["str"]]],[11,"clone","","",0,[[["self"]],["openerrorkind"]]],[11,"fmt","","",0,[[["self"],["formatter"]],["result"]]],[11,"hash","","",0,N],[11,"eq","","",0,[[["self"],["openerrorkind"]],["bool"]]],[11,"as_str","","",0,[[["self"]],["str"]]],[0,"xlib","x11_dl","",N,N],[3,"Xlib","x11_dl::xlib","",N,N],[12,"XActivateScreenSaver","","",2,N],[12,"XAddConnectionWatch","","",2,N],[12,"XAddExtension","","",2,N],[12,"XAddHost","","",2,N],[12,"XAddHosts","","",2,N],[12,"XAddPixel","","",2,N],[12,"XAddToExtensionList","","",2,N],[12,"XAddToSaveSet","","",2,N],[12,"XAllocClassHint","","",2,N],[12,"XAllocColor","","",2,N],[12,"XAllocColorCells","","",2,N],[12,"XAllocColorPlanes","","",2,N],[12,"XAllocIconSize","","",2,N],[12,"XAllocNamedColor","","",2,N],[12,"XAllocSizeHints","","",2,N],[12,"XAllocStandardColormap","","",2,N],[12,"XAllocWMHints","","",2,N],[12,"XAllowEvents","","",2,N],[12,"XAllPlanes","","",2,N],[12,"XAutoRepeatOff","","",2,N],[12,"XAutoRepeatOn","","",2,N],[12,"XBaseFontNameListOfFontSet","","",2,N],[12,"XBell","","",2,N],[12,"XBitmapBitOrder","","",2,N],[12,"XBitmapPad","","",2,N],[12,"XBitmapUnit","","",2,N],[12,"XBlackPixel","","",2,N],[12,"XBlackPixelOfScreen","","",2,N],[12,"XCellsOfScreen","","",2,N],[12,"XChangeActivePointerGrab","","",2,N],[12,"XChangeGC","","",2,N],[12,"XChangeKeyboardControl","","",2,N],[12,"XChangeKeyboardMapping","","",2,N],[12,"XChangePointerControl","","",2,N],[12,"XChangeProperty","","",2,N],[12,"XChangeSaveSet","","",2,N],[12,"XChangeWindowAttributes","","",2,N],[12,"XCheckIfEvent","","",2,N],[12,"XCheckMaskEvent","","",2,N],[12,"XCheckTypedEvent","","",2,N],[12,"XCheckTypedWindowEvent","","",2,N],[12,"XCheckWindowEvent","","",2,N],[12,"XCirculateSubwindows","","",2,N],[12,"XCirculateSubwindowsDown","","",2,N],[12,"XCirculateSubwindowsUp","","",2,N],[12,"XClearArea","","",2,N],[12,"XClearWindow","","",2,N],[12,"XClipBox","","",2,N],[12,"XCloseDisplay","","",2,N],[12,"XCloseIM","","",2,N],[12,"XCloseOM","","",2,N],[12,"XcmsAddColorSpace","","",2,N],[12,"XcmsAddFunctionSet","","",2,N],[12,"XcmsAllocColor","","",2,N],[12,"XcmsAllocNamedColor","","",2,N],[12,"XcmsCCCOfColormap","","",2,N],[12,"XcmsCIELabClipab","","",2,N],[12,"XcmsCIELabClipL","","",2,N],[12,"XcmsCIELabClipLab","","",2,N],[12,"XcmsCIELabQueryMaxC","","",2,N],[12,"XcmsCIELabQueryMaxL","","",2,N],[12,"XcmsCIELabQueryMaxLC","","",2,N],[12,"XcmsCIELabQueryMinL","","",2,N],[12,"XcmsCIELabToCIEXYZ","","",2,N],[12,"XcmsCIELabWhiteShiftColors","","",2,N],[12,"XcmsCIELuvClipL","","",2,N],[12,"XcmsCIELuvClipLuv","","",2,N],[12,"XcmsCIELuvClipuv","","",2,N],[12,"XcmsCIELuvQueryMaxC","","",2,N],[12,"XcmsCIELuvQueryMaxL","","",2,N],[12,"XcmsCIELuvQueryMaxLC","","",2,N],[12,"XcmsCIELuvQueryMinL","","",2,N],[12,"XcmsCIELuvToCIEuvY","","",2,N],[12,"XcmsCIELuvWhiteShiftColors","","",2,N],[12,"XcmsCIEuvYToCIELuv","","",2,N],[12,"XcmsCIEuvYToCIEXYZ","","",2,N],[12,"XcmsCIEuvYToTekHVC","","",2,N],[12,"XcmsCIExyYToCIEXYZ","","",2,N],[12,"XcmsCIEXYZToCIELab","","",2,N],[12,"XcmsCIEXYZToCIEuvY","","",2,N],[12,"XcmsCIEXYZToCIExyY","","",2,N],[12,"XcmsCIEXYZToRGBi","","",2,N],[12,"XcmsClientWhitePointOfCCC","","",2,N],[12,"XcmsConvertColors","","",2,N],[12,"XcmsCreateCCC","","",2,N],[12,"XcmsDefaultCCC","","",2,N],[12,"XcmsDisplayOfCCC","","",2,N],[12,"XcmsFormatOfPrefix","","",2,N],[12,"XcmsFreeCCC","","",2,N],[12,"XcmsLookupColor","","",2,N],[12,"XcmsPrefixOfFormat","","",2,N],[12,"XcmsQueryBlack","","",2,N],[12,"XcmsQueryBlue","","",2,N],[12,"XcmsQueryColor","","",2,N],[12,"XcmsQueryColors",""
initSearch(searchIndex);