Files
ab_glyph_rasterizer
adler
adler32
andrew
bitflags
bytemuck
byteorder
calloop
cfg_if
color_quant
crc32fast
crossbeam_channel
crossbeam_deque
crossbeam_epoch
crossbeam_utils
deflate
dlib
downcast_rs
draw_state
either
event_loop
float
fnv
gfx
gfx_core
gfx_device_gl
gfx_gl
gfx_graphics
gfx_texture
gif
gl
glutin
api
platform
platform_impl
glutin_egl_sys
glutin_glx_sys
glutin_window
graphics
glyph_cache
graphics_api_version
image
codecs
bmp
hdr
ico
jpeg
pnm
tga
webp
imageops
io
math
utils
input
instant
interpolation
iovec
jpeg_decoder
lazy_static
lazycell
libc
unix
libloading
lock_api
log
maybe_uninit
memchr
memmap2
memoffset
miniz_oxide
mio
deprecated
net
sys
mio_extras
net2
nix
net
sys
nom
bits
branch
bytes
character
combinator
multi
number
sequence
num_cpus
num_integer
num_iter
num_rational
num_traits
once_cell
osmesa_sys
owned_ttf_parser
parking_lot
parking_lot_core
percent_encoding
piston
piston_window
png
proc_macro2
quote
raw_window_handle
rayon
collections
compile_fail
iter
chain.rschunks.rscloned.rscopied.rsempty.rsenumerate.rsextend.rsfilter.rsfilter_map.rsfind.rsflat_map.rsflat_map_iter.rsflatten.rsflatten_iter.rsfold.rsfor_each.rsfrom_par_iter.rsinspect.rsinterleave.rsinterleave_shortest.rsintersperse.rslen.rsmap.rsmap_with.rsmod.rsmultizip.rsnoop.rsonce.rspanic_fuse.rspar_bridge.rspositions.rsproduct.rsreduce.rsrepeat.rsrev.rsskip.rssplitter.rsstep_by.rssum.rstake.rstry_fold.rstry_reduce.rstry_reduce_with.rsunzip.rsupdate.rswhile_some.rszip.rszip_eq.rs
slice
rayon_core
compile_fail
join
scope
sleep
spawn
thread_pool
read_color
rusttype
same_file
scoped_threadpool
scoped_tls
scopeguard
serde
de
private
ser
serde_derive
shader_version
shaders_graphics2d
shared_library
slab
smallvec
smithay_client_toolkit
data_device
primary_selection
seat
shell
shm
window
spin_sleep
syn
attr.rsawait.rsbigint.rsbuffer.rscustom_keyword.rscustom_punctuation.rsdata.rsderive.rsdiscouraged.rserror.rsexport.rsexpr.rsext.rsfile.rsgenerics.rsgroup.rsident.rsitem.rslib.rslifetime.rslit.rslookahead.rsmac.rsmacros.rsop.rsparse.rsparse_macro_input.rsparse_quote.rspat.rspath.rsprint.rspunctuated.rsreserved.rssealed.rsspan.rsspanned.rsstmt.rsthread.rstoken.rstt.rsty.rsverbatim.rswhitespace.rs
texture
tiff
ttf_parser
tables
unicode_xid
vecmath
viewport
walkdir
wayland_client
wayland_commons
wayland_cursor
wayland_egl
wayland_protocols
wayland_sys
weezl
window
winit
platform
platform_impl
linux
wayland
event_loop
seat
keyboard
pointer
text_input
touch
window
x11
x11_dl
xcursor
xdg
xml
reader
parser
writer
>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
/// Reverse the first length bits of n. /// (Passing more than 16 as length will produce garbage. pub fn reverse_bits(mut n: u16, length: u8) -> u16 { debug_assert!(length <= 16); // Borrowed from http://aggregate.org/MAGIC/#Bit%20Reversal n = ((n & 0xaaaa) >> 1) | ((n & 0x5555) << 1); n = ((n & 0xcccc) >> 2) | ((n & 0x3333) << 2); n = ((n & 0xf0f0) >> 4) | ((n & 0x0f0f) << 4); n = ((n & 0xff00) >> 8) | ((n & 0x00ff) << 8); n >> (16 - length) } #[cfg(test)] mod test { use super::reverse_bits; #[test] fn test_bit_reverse() { assert_eq!(reverse_bits(0b0111_0100, 8), 0b0010_1110); assert_eq!( reverse_bits(0b1100_1100_1100_1100, 16), 0b0011_0011_0011_0011 ); // Check that we ignore >16 length // We no longer check for this. // assert_eq!(reverse_bits(0b11001100_11001100, 32), 0b0011001100110011); } }