Files
agnostic_orderbook
ahash
aho_corasick
arrayref
arrayvec
atty
base64
bincode
blake3
block_buffer
block_padding
borsh
borsh_derive
borsh_derive_internal
borsh_schema_derive_internal
bs58
bv
adapter
bit_vec
traits
bytemuck
byteorder
cfg_if
constant_time_eq
cpufeatures
crunchy
crypto_mac
curve25519_dalek
backend
derivative
dex_v3
processor
digest
either
enumflags2
enumflags2_derive
env_logger
filter
fmt
generic_array
getrandom
hashbrown
hex
hmac
hmac_drbg
humantime
itertools
adaptors
combinations.rscombinations_with_replacement.rsconcat_impl.rscons_tuples_impl.rsdiff.rseither_or_both.rsexactly_one_err.rsformat.rsfree.rsgroup_map.rsgroupbylazy.rsimpl_macros.rsintersperse.rskmerge_impl.rslazy_buffer.rslib.rsmerge_join.rsminmax.rsmultipeek_impl.rspad_tail.rspeeking_take_while.rspermutations.rsprocess_results_impl.rsput_back_n_impl.rsrciter_impl.rsrepeatn.rssize_hint.rssources.rstee.rstuple_impl.rsunique_impl.rswith_position.rszip_eq_impl.rszip_longest.rsziptuple.rs
keccak
lazy_static
libc
libm
math
acos.rsacosf.rsacosh.rsacoshf.rsasin.rsasinf.rsasinh.rsasinhf.rsatan.rsatan2.rsatan2f.rsatanf.rsatanh.rsatanhf.rscbrt.rscbrtf.rsceil.rsceilf.rscopysign.rscopysignf.rscos.rscosf.rscosh.rscoshf.rserf.rserff.rsexp.rsexp10.rsexp10f.rsexp2.rsexp2f.rsexpf.rsexpm1.rsexpm1f.rsexpo2.rsfabs.rsfabsf.rsfdim.rsfdimf.rsfenv.rsfloor.rsfloorf.rsfma.rsfmaf.rsfmax.rsfmaxf.rsfmin.rsfminf.rsfmod.rsfmodf.rsfrexp.rsfrexpf.rshypot.rshypotf.rsilogb.rsilogbf.rsj0.rsj0f.rsj1.rsj1f.rsjn.rsjnf.rsk_cos.rsk_cosf.rsk_expo2.rsk_expo2f.rsk_sin.rsk_sinf.rsk_tan.rsk_tanf.rsldexp.rsldexpf.rslgamma.rslgamma_r.rslgammaf.rslgammaf_r.rslog.rslog10.rslog10f.rslog1p.rslog1pf.rslog2.rslog2f.rslogf.rsmod.rsmodf.rsmodff.rsnextafter.rsnextafterf.rspow.rspowf.rsrem_pio2.rsrem_pio2_large.rsrem_pio2f.rsremainder.rsremainderf.rsremquo.rsremquof.rsround.rsroundf.rsscalbn.rsscalbnf.rssin.rssincos.rssincosf.rssinf.rssinh.rssinhf.rssqrt.rssqrtf.rstan.rstanf.rstanh.rstanhf.rstgamma.rstgammaf.rstrunc.rstruncf.rs
libsecp256k1
libsecp256k1_core
log
memchr
memchr
memmem
memmap2
num_derive
num_enum
num_enum_derive
num_traits
opaque_debug
ppv_lite86
proc_macro2
quote
rand
distributions
weighted
rngs
seq
rand_chacha
rand_core
rand_pcg
regex
regex_syntax
ast
hir
unicode_tables
rustversion
serde
de
private
ser
serde_bytes
serde_derive
sha2
sha3
solana_frozen_abi
solana_frozen_abi_macro
solana_logger
solana_program
nonce
stake
sysvar
account_info.rsborsh.rsbpf_loader.rsbpf_loader_deprecated.rsbpf_loader_upgradeable.rsclock.rsdecode_error.rsentrypoint.rsentrypoint_deprecated.rsepoch_schedule.rsfeature.rsfee_calculator.rshash.rsincinerator.rsinstruction.rskeccak.rslamports.rslib.rsloader_instruction.rsloader_upgradeable_instruction.rslog.rsmessage.rsnative_token.rsprogram.rsprogram_error.rsprogram_memory.rsprogram_option.rsprogram_pack.rsprogram_stubs.rspubkey.rsrent.rssanitize.rssecp256k1_program.rssecp256k1_recover.rsserialize_utils.rsshort_vec.rsslot_hashes.rsslot_history.rsstake_history.rssystem_instruction.rssystem_program.rs
solana_sdk_macro
spin
spl_token
subtle
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
synstructure
termcolor
thiserror
thiserror_impl
typenum
unicode_xid
zeroize
zeroize_derive
>
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 28 29 30 31 32 33 34 35 36
//! The crunchy unroller - deterministically unroll constant loops. For number "crunching". //! //! The Rust optimizer will unroll constant loops that don't use the loop variable, like this: //! //! ```ignore //! for _ in 0..100 { //! println!("Hello!"); //! } //! ``` //! //! However, using the loop variable will cause it to never unroll the loop. This is unfortunate because it means that you can't //! constant-fold the loop variable, and if you end up stomping on the registers it will have to do a load for each iteration. //! This crate ensures that your code is unrolled and const-folded. It only works on literals, //! unfortunately, but there's a work-around: //! //! ```ignore //! debug_assert_eq!(MY_CONSTANT, 100); //! unroll! { //! for i in 0..100 { //! println!("Iteration {}", i); //! } //! } //! ``` //! This means that your tests will catch if you redefine the constant. //! //! To default maximum number of loops to unroll is `64`, but that can be easily increased using the cargo features: //! //! * `limit_128` //! * `limit_256` //! * `limit_512` //! * `limit_1024` //! * `limit_2048` #![cfg_attr(not(feature = "std"), no_std)] include!(concat!(env!("OUT_DIR"), "/lib.rs"));