Files
boc/aamos-ledger-rust/target/debug/deps/libsmallvec-fa382cf08413422f.rmeta
T

270 lines
117 KiB
Plaintext
Raw Normal View History

rust
¸Ò#rustc 1.96.0 (ac68faa20 2026-05-25)ÁíàÄTËŸ ÜJîÄ)'ß\¥!-3d1337db07d0b3aeÁ¤²XctÔ'ÐÓ©z¨ɽÓ-a4945860e1c53b00Á¤°ð ¾ä-±($²ï=©Ã-7e98a21bfd32b0edÁserdeÁFVæ¸Û•IÄÀzÍ-9c8ce3cf08540cc3ÁÀ뉊]!ÜÛê(¹Þ—šên-5be7b69c3ff7b5b8ÁòÖÀH•‘PIÓHã#£-055f30b747f859b6Árustc_std_workspace_coreÁ­Cçß^ò½èÝ$­Çÿ+Cé-c4878ee60b2242c9ÁŸÃï+Ñ]ŠqB<ÏïW#-8dd1dd90e70d0b6aÁ miniz_oxideÁ€š»J(P>àö÷g\K-1eb618da2918ab7fÁadler2ÁÆ;+Þ®5¥Ìýݰ¦ÛLˆ-f7919172d268e069Á hashbrownÁPäV9ÒÆèÜ"ÊÖVŽ\-0fc2184a5da6723aÁrustc_std_workspace_allocÁs&ØòØy¯s•bæ!‰ýŠ-97e4bf30be240674Á
std_detectÁhŠBîÙºÌI®ËÅš-9dbbf8346ba7ac8bÁrustc_demangleÁûë9´Ç×@Œ’ùXFº-f33013f239bf9f14Ácfg_ifÁÜLhž§Œaã¯>­-0a71c8f33a838301Á addr2lineÁ׎Þ!]8V$É@@-e618e6be60e87ba2ÁgimliÁ¸
°µ~Î1‹Ñt ðÁ€w-1f7768a68858f670ÁobjectÁ
áPÃ?­À¶¼QHJ¥-914cd6a4dbe590d1ÁmemchrÁ›º«8Ór­2Ù $¨ûib-cf21ca6f2bb15dcdÁë
‹ás«LÖ€îâƒ×ɯŒ-ee6f3747e38367f0Á serde_deriveÁ,w|êñ]ù¿¥­C£ð-975c43f96d83014eÁ
serde_coreÁ²€Ãb˜cÐòžÇÇ
-7a42419d8e43b208ÁÀ"$é!»writeÁŒï!Ìè!testsÁ,¨"$"MallocShallowSizeOfÁœÄ&»malloc_size_ofÁÔ’& MallocSizeOfÁdÙ&»¼ "$MallocSizeOfOpsÁ|ç&»¼ EGioÁë(»òŒÎ( ManuallyDropÁd£)»drain_keep_restÁÜö( DrainFilterÁ\Õm» drain_filterÁÄñk SmallVecDataÁd³ »CŒ™ SpecFromÁDá•»ªÔ¾•ªtΖ»ªÔ­ arbitraryÁL»è ¬å–
impl_arrayÁTÑî»ÄÔ¦îä¥î
BorrowDecoderÁlöù» impl_bincodeÁÄÃùDecodeÁ4…ú»Ë  DecoderÁ<ú»Ë :<ReaderÁ4œú»Ë UWEncodeÁ4¯ú»Ë prEncoderÁ<·ú»Ë ŒŽWriterÁ4Çú»Ë §© DecodeErrorÁ\Üú»Ë ÇÉ EncodeErrorÁ\éú»Ë çé BorrowDecodeÁdûú»Ë  í¤ 
  
 !"#$%&'()*+,smallvecÁsmallvec_inlineÁdebug_unreachableÁExtendFromSliceÁ3¥3extend_from_sliceÁ6¥6Š9×;÷
infallibleÁ=¥ layout_arrayÁ?¥? 
deallocateÁB¥DrainÁD'aÁD¥D
tail_startÁDtail_lenÁDùDÁK¤K¥K×O¤O¥R¤R¥U¤U¥UUó Y U size_hintÁ\¤\¥\ next_backÁ_ a¤a¥a e¤e¥
h¤h¥hã llInlineÁn
nˆlHeapÁqµ q t¥tŸt t
from_constÁx  zzÝz
inline_mutÁz from_inlineÁzemptyÁz into_inlineÁzheapÁzheap_mutÁz from_heapÁ
SmallVecÁˆˆcapacityÁˆdataÁŒŒæ Œ
with_capacityÁŒfrom_vecÁŒfrom_bufÁŒfrom_buf_and_lenÁŒfrom_buf_and_len_uncheckedÁŒset_lenÁŒinline_capacityÁŒ inline_sizeÁŒŒis_emptyÁŒÔŒtripleÁŒ
triple_mutÁŒspilledÁŒdrainÁ£ŒpushÁŒpopÁŒappendÁ¢ŒgrowÁŒtry_growÁŒreserveÁŒreserve_one_uncheckedÁŒ try_reserveÁŒ
reserve_exactÁŒtry_reserve_exactÁŒ
shrink_to_fitÁŒtruncateÁŒas_sliceÁŒ as_mut_sliceÁŒ swap_removeÁ¯ ŒclearÁŒremoveÁŒinsertÁŒ insert_manyÁ´š´ DropOnPanicÁ¥¹skipÁ´»¥»ãŒinto_vecÁŒinto_boxed_sliceÁŒ
into_innerÁŒretainÁÁŒ
retain_mutÁÃŒdedupÁÅ Œdedup_byÁÇŒ dedup_by_keyÁÉÉœÉ Œ resize_withÁÍŒfrom_raw_partsÁŒas_ptrÁŒ
as_mut_ptrÁÒÒ
from_sliceÁÒinsert_from_sliceÁÒŠ××resizeÁ× from_elemÁÛÛåÛ´ßßââÉååas_mutÁèèborrowÁëë
borrow_mutÁîî serializeÁð¤ò'deÁòò deserializeÁõSmallVecVisitorÁ÷÷phantomÁúó úúValueÁú expectingÁú visit_seqÁÿÿ¤÷÷÷ŒŒšŒ°ŒÖš× Š!˜˜ùšš"œœextendÁžš#  ×$££>%¦¦ã&©©ƒ©'­­­(±)³³ï
*+¹¹§»,½IntoIterÁ¿¿ä¿currentÁ¿þ-ÄÄ×.Çǃ/ÊÊã0ÍÍÍó ÍÃ1ÒÒå2Õ3×4ÙÙðÙ5ÝÝÂ%ÝÝê6â¤ââÂ%ââê7è¤èèÂ%èèêMîî SetLenOnDropÁñ¤ññ local_lenÁ8õ¤õæ õgetÁõ
increment_lenÁ9ú¤úã:ý¥ýŸý ý new_constÁý ýfrom_const_with_len_uncheckedÁ ;¥Ÿ 
ToSmallVecÁŒŒ to_smallvecÁ<Ò* ConstNonNullÁ
¥ˆ=¥æ ª>š¥šƒ?¥CollectionAllocErrÁŸCapacityOverflowÁ 
ŸAllocErrÁ¢layoutÁ@¤×5
5
8
8
:
:
:
N
N
N
Y
[
_
d
k
|
}





˜

š

œ

 
¡
¢
¢
¤
¥
¦
§
¨
©
ª
«
¬
­
®
¯
±
²
³
´
½
Á
Á
Ã
Ã
Å
Ç
Ç
Ç
É
É
Í
Ð
Ñ
Ô
Õ
Õ
Ö
Ö
Ù
Þ
á
ä
ç
ê
í
ð
þ
þ
þ




ž
¢
¢
¢
¨
«
¬
¬
°
°
µ
µ
¸
¸
»
»
Æ
Æ
Æ
É
Ì
Ð
Ñ
Ô
Û
Ü
ø
ù
ü
Ž

œ
¥
¥
¥
Œ3ªBªBö­BbufÁ÷<®B÷<9)
-ÜnL¥çEçEèEGlobalÁ ¿±‡§í#¶2¿cŸ ¡ö+¢“,££,£À{ƒ)2ÛÄcò2éò2ûØûØüØ LayoutErrorÁ :ð¨?¢©¿cDD˜G´HÅIùJÁEç’“oó"y¤¥ ü3Ììü3ùMü3ŒMü3ÃMü3òPü3Œ"ü3ÌìlnoËpˆqãrµ sOŽRT¥É‰t Ÿ5Œ"𸹹º¢óÏ>ç#’¶2é!ˆˆ¼ŠÔäñI˜êiPë5ö!Ï6àÏ6
ë5ïãÏ6ž7 Ï6ž7£Ï6ž7ÙAÏ6û;ˆˆ¼ŠÔäñI˜êiPó Ì<÷÷ !ù¿!rσÇK™8ó éá7 ¤
™8ïéÏ6ªBªBö­BŒ1÷<®B÷<9)
-ÜnLŸ7¼2éÏ6ë5Ù¢Ï6š³"Ï6à93Ï6Ÿ7ÃLÏ6Ÿ7ÐLÏ6Ÿ7¿cÏ6³Ï6Œ"Ï6ØÏ6µßÏ6ˆˆ¼ŠÔäñI˜êiPÏ6íßÏ6Ï6ºÏ6šeÏ6ÌìÏ6¿c¿¿Â%ÁäÂâ%ÃþÁ|pÞGØ-Ðë5ØÈ;Œ"È;ùMÈ;ŒMÈ;ÃMÈ;òPÈ;ÇLÏ6ÇL ¤á7ÇL ¤á7Œ"ññ²(óôÖ(Ë2è
:¤î¶2ŸŒž7ë5Øø*ˆ 2Q=Ô8
V¶2Š ß=6ªB•ˆ¤ŸKˆÄ¿9Ÿ;ŸˆˆˆOD†lRD„ˆU¿\¿a¿e¿h¦ˆÊ¿úñۈ߈âˆåˆèˆëˆîˆòˆú÷Œˆˆ˜ˆœˆ£ˆ©ˆÇ¿š­ˆ±ˆ³ˆˆ¹ˆÝˆâ
è
 3ð¿c
Äcé Ìì ùMŒM ÃM òP Œ" é!!ö!àã £ÙAû;Ì<Ù¢³"ÃLÐL³ØµßíߺšeÇL 4¨¹ 䓹 lÂ= ®¹µ¹xüиelnoËpˆqãrµ sOŽRT¥É‰tÂ=$„¹ÑÛÑÛ MaybeUninitÁÓÛuninitÁÝÔÛ»ÝÍõƒ«%9Â=4ä¸îCÝÓüòâ/¬‹ã
œ‹ã
òÂ=-;
BÄòâ
x¶2ŸWi  ãü¼âp ˆÂ= Ýâ «ã²ãü‘⡈ˆ¼ŠÔäñI˜êiPÂ=$­â˜CîCbüéæ1¼‚ç,“ç 
$„‚ç
ñÂ=5G ˜ç^
eÄéæ¼Eo ™çü³ær ˆÂ= ÔæŒFŸ ¤ç«çüúå±»F$¤æÂ=,’æ˜CîCÿÂ=ýitemsÁ(ZŒFŸãë üúë1¼“ì,¤ì 
$„“ìÙG/A ©ìX
_Äúë¼Ei| ªìüÂët ˆÂ= µì ¼ìüãêÙ»F$³ëÂ=,•ëŒF¤ëŒF˜CîCÂ=µH7:v4¥´ lë5o'Ÿ52ÑÛÑÛúBÓÛCÝÔÛ»ÝÍõƒ«%9ë5w~´³ö ¶2)ß=4§ ïíe¼îËè¿*¶2ip3=?BDlˆ÷¿îñŒŸí¤,×! 4Ø"èØ LayoutErrÁLà"Þ‚BoxÁþ"Á#÷< Á ö™#ªB
Y4²#  ZLº#£
Ð#×ß# `Ž$õ#šeŽ e4û#¢eunreachable_uncheckedÁ¬”$  repeatÁ4¼$ KdÄ$ÃL
FusedIteratorÁlÒ$òP˜dá$ÇLíú$ëúB\Ž%ÑÛ­
$«%Â ¹,±%£ RangeBoundsÁ\¸%¤#µ $Ö% §<Ü%!ž$ø%‰f#ÚTþ%“k$ DeserializeÁ\ª'û;' DeserializerÁd·'ˆ<( SeqAccessÁLÅ'=)VisitorÁ<Ð'Ì<* SerializeÁLä'ÙA, SerializeSeqÁdï'B-
SerializerÁTý'ÜA. PhantomDataÁ\º(/ƒT/°Dž30¿|Ã@1ü­ç”ü­b_ 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Áüï\Y locality and reducing allocator traffic for workloads that fit within the inline buffer.ÁÌú¼Ð ## `no_std` supportÁèúüìKH By default, `smallvec` does not depend on `std`. However, the optionalÁü¸NK `write` feature implements the `std::io::Write` trait for vectors of `u8`.Áü‡>; When this feature is enabled, `smallvec` depends on `std`.ÁÆúÄÊ ## Optional featuresÁãú ### `serde`Á÷úüû^[ When this optional dependency is enabled, `SmallVec` implements the `serde::Serialize` andÁüÚ  `serde::Deserialize` traits.Áûú|ÿ ### `write`Áúü“\Y When this feature is enabled, `SmallVec<[u8; _]>` implements the `std::io::Write` trait.Áüð>; This feature is not compatible with `#![no_std]` programs.Á¯ ú ### `union`Áà úüÇ (% **This feature requires Rust 1.49.**Áð úüô [X When the `union` feature is enabled `smallvec` will track its state (inline or spilled)ÁüÐ
\Y without the use of an enum tag, reducing the size of the `smallvec` by one machine word.Áü­ MJ This means that there is potentially no space overhead compared to `Vec`.Áüû _\ Note that `smallvec` can still be larger than `Vec` if the inline buffer is larger than twoÁ”Û  machine words.Áî úüò [X To use this feature add `features = ["union"]` in the `smallvec` section of Cargo.toml.ÁüÎ
.+ Note that this feature requires Rust 1.49.Áý
úüZW Tracking issue: [rust-lang/rust#55149](https://github.com/rust-lang/rust/issues/55149)ÁÜúÄà ### `const_generics`Áùúüý(% **This feature requires Rust 1.51.**Á¦úüª`] When this feature is enabled, `SmallVec` works with any arrays of any size, not just a fixedÁ”‹ list of sizes.Ážúœ¢ ### `const_new`Áúüº(ýcãúüç³ This feature exposes the functions [`SmallVec::new_const`], [`SmallVec::from_const`], and [`smallvec_inline`] which enables the `SmallVec` to be initialized from a const context.ÁÄž For details, see theÁü·ZW [Rust Reference](https://doc.rust-lang.org/reference/const_eval.html#const-functions).Áú´– ### `drain_filter`Á­úü±fc **This feature is unstable.** It may change to match the unstable `drain_filter` method in libstd.Á˜úüœ\Y Enables the `drain_filter` method, which produces an iterator that calls a user-providedÁüù\Y closure to determine which elements of the vector to remove and yield from the iterator.ÁÖúÌÚ ### `drain_keep_rest`Áôúüøif **This feature is unstable.** It may change to match the unstable `drain_keep_rest` method in libstd.Áâúüæ0- Enables the `DrainFilter::keep_rest` method.ÁúÄ› ### `specialization`Á´úü¸TQ **This feature is unstable and requires a nightly build of the Rust toolchain.**Áúü‘]Z When this feature is enabled, `SmallVec::from(slice)` has improved performance for slicesÁüï^[ of `Copy` types. (Without this feature, you can use `SmallVec::from_slice` to get optimalÁüÎ" performance for `Copy` types.)ÁñúüõZW Tracking issue: [rust-lang/rust#31844](https://github.com/rust-lang/rust/issues/31844)ÁÐú¤Ô ### `may_dangle`ÁéúüíTÿmÂúüÆ_\ This feature makes the Rust compiler less strict about use of vectors that contain borrowedÁü¦$! references. For details, see theÁüËYV [Rustonomicon](https://doc.rust-lang.org/1.42.0/nomicon/dropck.html#an-escape-hatch).Á¥úü©ZW Tracking issue: [rust-lang/rust#34761](https://github.com/rust-lang/rust/issues/34761)Á3=?BDlˆ÷¿îñŒŸíƤǠÆèØN¼Þ‚ªN¸Á·÷< ÁÉ ö·ªB
Y  Zµ£
´×³ `޲šeŽÄ e²¢eùOœ  ¡P KÃLÍPòP˜ÇLíëúBƒÑÛ­
 ¹£ÎQu¤#µ t §s!žr‰f#Úq“k$¸Reû;'ÖRXˆ<(õRN=)SFÌ<*«S<ÙA,ÇS/B-æS$ÜA.ƒT/ƒT* /°0¿1Œ´Æ!dÉ"ƒilŒð"\,‡#PSD”#6d£#+."LÊ#LÙ#
Tè#þßâüˆ$!ÂT¯$°³£¦Œ|Lô$s´ƒ%gLŸ%Z¥%NQ58LÊ%,Ð% #\ê%,ð% ,˜'|˜'ûþâåÌϸ»ü˜'I§ªŽwz̬(c¬‘3ü²)41 Creates a [`SmallVec`] containing the arguments.Áç)úüë)[X `smallvec!` allows `SmallVec`s to be defined with the same syntax as array expressions.ÁüÇ*&# There are two forms of this macro:Áî*úüò*@= - Create a [`SmallVec`] containing a given list of elements:Á³+ú<·+ ```Áü¿+)& # use smallvec::{smallvec, SmallVec};ÁŒé+ # fn main() {Áüû+30 let v: SmallVec<[_; 128]> = smallvec![1, 2, 3];Áį, assert_eq!(v[0], 1);ÁÄÈ, assert_eq!(v[1], 2);ÁÄá, assert_eq!(v[2], 3);Á<ú, # }Á<-ÅŠ-úüŽ-:7 - Create a [`SmallVec`] from a given element and size:ÁÉ-ú<Í-ÅüÕ-)ÖŒÿ-ˆ€ü‘./, let v: SmallVec<[_; 10]> = smallvec![1; 3];ÁüÁ.1. assert_eq!(v, SmallVec::from_buf([1, 1, 1]));Á<ó.Â<û.Ń/úü‡/HE Note that unlike array expressions this syntax supports all elementsÁüÐ/KH which implement [`Clone`] and the number of elements doesn't have to beÁ|œ0 a constant.Á¬0úü°0NK This will use `clone` to duplicate an expression, so one should be carefulÁüÿ0JG using this with types having a nonstandard `Clone` implementation. ForÁüÊ1OL example, `smallvec![Rc::new(1); 5]` will create a vector of five referencesÁüš2RO to the same boxed integer value, not five references pointing to independentlyÁœí2 boxed integers.Á(|3 §3 Ð7 â3 ï3 ã38oneÁä3, è38à é3& ê38$ë3*ñ3 ô3 û37¬4õ3% ü3 4 ƒ4*…4 ˆ4 ®4, 48,“4'˜48¼Dš4'¢48æ ¤4 §4 ¨4% ¯4 µ4 É4 , ¶48elemÁ$·4& »48$¼4% À4, Â48¹ Ã4& Ä48$Å4*Ë4 Î4 …5 Ï4 „5, Ù48,Ú4'ß48¼Dá4'é48£Lë4 ô4 þ4, õ48½Š$ö4$ ú4, ü48¹ ý4% †5 Œ5 ž5, 5 Ž5 5, 58à 5& 58$5$ —5 ˜5, ™5 š5 œ5$ 5- 5* 5 £5 Í7 ¤5 Ì78®58ü,²5 ¸57ˆ¬4º5, Á5 Â5 ß5 Ã5, Å58,Æ5'Ë58°DÍ5 Õ5 Ö5 Þ5 ×58ãˆØ5, Ü58à Ý5 à5% á58ë58ï58Áó5 ÷5, ù58,ú5'ÿ58¼D6'‰68æ 6 Ž6 6% 68š68ü,6£68Á¦6 ©68\ª6 µ6 ¶6 ¸6 ð6, Æ6 Ç6 Õ68ÁÈ6 Ë68$Ì6 Ð6 Ó6, Ñ68à Ò6% Ô6
Ö68Áä68$ò6 ÷6 Æ7, …78,†7'78¼D7'•78D—7 Ÿ7 ¼7,  78,¡7'¦78¤,¨7'­78Á¯7 ²7 ³7 »7, ´7 µ7 ¹7, ¶78à ·7$ ¸7 º7% Î7ä¶@üÓ7nk Creates an inline [`SmallVec`] containing the arguments. This macro is enabled by the feature `const_new`.ÁÂ8úüÆ8vs `smallvec_inline!` allows `SmallVec`s to be defined with the same syntax as array expressions in `const` contexts.Áü½9ZW The inline storage `A` will always be an array of the size specified by the arguments.Áü˜:&´~¿:úüÃ:@ð~„;ú<ˆ;Åü;0- # use smallvec::{smallvec_inline, SmallVec};ÁŒÁ;ˆ€üÓ;<9 const V: SmallVec<[i32; 3]> = smallvec_inline![1, 2, 3];ÁÄ< assert_eq!(V[0], 1);ÁÄ©< assert_eq!(V[1], 2);ÁÄÂ< assert_eq!(V[2], 3);Á<Û<Â<ã<Åë<úüï<:ëª=ú<®=Åü¶=0Ÿ–Œç=ˆ€üù=96 const V: SmallVec<[i32; 3]> = smallvec_inline![1; 3];Áü³>1. assert_eq!(V, SmallVec::from_buf([1, 1, 1]));Á<å>Â<í>Åõ>úüù>YV Note that the behavior mimics that of array expressions, in contrast to [`smallvec`].Á» const_newÁ¬Ù?ìÓ?(|¦@P# Ó@ ¹C  ŽA A A8ã
,ÇE ÌE ÍE ÐE, ÎE8° ÏE% ÑE8$ÝE âE F8ùO¬ðE …F †F% ‡F% ˜Fä¬JüFMJ Trait to be implemented by a collection that can be extended from a sliceÁëFútïF ## ExampleÁþFú\G ```rustÁüŽG.+ use smallvec::{ExtendFromSlice, SmallVec};Á½GúüÁG63 fn initialize<V: ExtendFromSlice<u8>>(v: &mut V) {ÁüøG&# v.extend_from_slice(b"Test!");Á,ŸH¥Húì©H let mut vec = Vec::new();ÁÌÇH initialize(&mut vec);ÁüáH assert_eq!(&vec, b"Test!");ÁIúü…I30 let mut small_vec = SmallVec::<[u8; 8]>::new();Áü¹I initialize(&mut small_vec);ÁüÙI-* assert_eq!(&small_vec as &[_], b"Test!");Á<‡JÅ4•JlžJ|¶J3¥434Îìü¬JÍìÊ4 ÆJ3é¬)é¬/555&(üK-üÏJ96 Extends a collection from a slice of its element typeÁŒK¦§ ¦ñ¬ §
Ê43 ¢K3
5ñ¬Ê4$§K¹
,­KüÓK,¥77Íì¶2 ØKض2,ÛKù1858 ü†L,Œ‰L¨© ¨ù1 ©
¶26 L6
8¶2$ L¹
,¦Lü¹O(ò2:Åc:üèO8ëOª«¬ ªò2 « c cˆ¢cµ
 `£cŒ1 `àB¤GS
¬Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
ŸÈŸÈ ÈErrorÁ O˜éBL9 ïO9
:$ðO± öOüóP+ò2<ë<ì¥Q$¨QÁ3ò2;;
< ­QüûQ<TþQÖ¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
¶2ò2¶2¥>>’¯ ‰R
=¶2 4ŒRü¥UBd¨UŒFÖ¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
èØèØ éØ²‚êØŸ²‚ªë¥CHÈò2¥@@’¯ µU
?¶2¹ ¸U³W?<closure_kind>ÁA<closure_signature>ÁA<upvars>ÁAA?A¶2Á3ò2üàW9TêWüMŒF¥CC’¯ õW
B¶2µ øWÔD‰Xü‡[#ü×YRO An iterator that removes the items from a `SmallVec` and yields them by value.ÁªZúü®Z)& Returned from [`SmallVec::drain`][1].ÁØZúüÜZ*' [1]: struct.SmallVec.html#method.drainÁ,[¤E¥FEFý¬ œ[Ê4¤Ÿ[îÊ4,¤[Ê4蠟eü3Eç’“oó"yGHIJk˜[Z\EŒ±[T±[DDŒF|È[DÈ[DDŒFôÝ[$Ý[DDÄlÄlIterÁÇlµ ™lÈl
end_or_lenÁ™lÉl_markerÁ™lŒœjSž¤–»Ì\\DD§ ïíe¼îËè¿*ˆˆ¼ŠÔäñI˜êiPÊ4üŸ\R¤L¥MMLý¬ ¨\÷º«\…»,°\¿c–»Tæ\ü3NÀcN¤\68Lüø\8û\­®¯ ­ü3 ® c cˆ¢cµ
 `£cŒ1 `àB¤GS
¯×±K ÿ\K
N¤Ê4$€]± †]ü^6¤P¥QPQý¬ ‘^ Ê4$”^…»,^ü3^$&ü»^6¤S¥TTSý¬ Ë^ÌìÊ4$Î^…»,Õ^ü3Ç^%'üö^1¤V¥WVWý¬ ÿ^÷º‚_…»,‡_ü3XY[úMûMÿM[Yû^57VL®_$³_UU–»üÖ_%$Ù_° °ü3Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ–»U Þ_U
Y¤Ê4$ã_\µ`YZ¨¶ZŶZZYZÊ4 –»–»üû`-Lþ`± ±ü3ŒFÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙŒFU ˆaU
[¤Ê4$‰aüÒa<¤]¥^]^ý¬ Ûa÷ºÞa…»,ãaü3_M_×a&(]ü£b*L¦b² ²ü3ŸÃ\ °b\
_¤Ê4$µb\Œc_`¨¶`Ŷ``_`Ê4âÄüÂc5¤b¥cbcý¬ Ëc…»,Îcü3dÄMdÇc ´Œdd³ ³ü3ŒFa “da
d¤Ê4$”düÆd1¤f¥ggfý¬ Ïd…»,Òdü3Ëdüüd-¤i¥jijý¬ …e÷ºˆe…»,eü3k"ke&(i”°e$³e´ ´ü3h ¸eh
k¤Ê4$½e܃´»CŒî³œí³ôä³dˆ´mmÍìë5 •´îë5,˜´Ÿ5OŽRT¥É‰tnoqopîLŸ5rsBD¸%¸%ll
oë5¸%¸%îLŸ5ll–Ít¬´llîL$ŒµllŸ5¬æ¶æ¶ll§ ïíe¼îËè¿*Ÿ7T…·…·llŒFüÖ·,»CŒ©·œ¨·»ù𬽷ü¤·/ü›·:¥uŸvuv’¯ Û·ŸŒFtÞ·˜Cx ä·ŒFüи8TÙ¸îC˜Ctt¼EÝÀ!ôع»CŒÃ¹œÂ¹ô¹¹{{¦Ì ݹ·Ì,๟5|}~ƒ%'ü‹º04•ºµ µŸ5ø*ˆ 2Q=Ô8
VŸ7z œºz
|ë5$ºüý»3T‡¼ Ÿ5›Îz ’¼z
}ë5$—¼üï½9\ò½îLŸ5zz
~ë5Ý4þ½쳿,¶¿Ÿ5zz
ë5üÚÁ-\äÁŸ5îLzz
ë5$ðÁü’Ã7$œÃ· ·Ÿ5ÖÑŒFz ¡Ãz
ë5$¢ÃüõÄ?Dÿĸ ¸Ÿ5›Î ¸ŒFz ˆÅz
ë5$ÅüÑÆBLÔÆ›ÎŒFŸ5zz
ƒë5µ ÞÆõÆüÇÇ5¦Ì ÓÇ·Ì,ÖÇÌìë5$ÞÇŸ5"$ü€È5¦Ì ŒÈ·Ì,È ë5$—ÈŸ5!#ìôÐüºÈLI A `Vec`-like container that can store a small number of elements inline.Á‡Éúü‹É[X `SmallVec` acts like a vector, but can store a limited amount of data inline within theÁüçÉ`] `SmallVec` struct rather than in a separate allocation. If the data exceeds this limit, theÁüÈÊWT `SmallVec` will "spill" its data onto the heap, allocating a new buffer to hold it.Á Ëúü¤Ëc` The amount of data that a `SmallVec` can store inline depends on its backing store. The backingÁüˆÌ^[ store can be any type that implements the `Array` trait; usually it is a small fixed-sizedÁüçÌ[X array. For example a `SmallVec<[u64; 8]>` can hold up to eight 64-bit integers inline.ÁÃÍútÇÍø¦ÖÍú\ÚÍ›§ÜæÍ use smallvec::SmallVec;Áü‚ÎIF let mut v = SmallVec::<[u8; 4]>::new(); // initialize an empty vectorÁÌÎúüÐÎHE // The vector can hold up to 4 items without spilling onto the heap.Áœ™Ï v.extend(0..4);ÁÜ­Ï assert_eq!(v.len(), 4);ÁÔÉÏ assert!(!v.spilled());ÁäÏúüèÏ>; // Pushing another element will force the buffer to spill:Át§Ð v.push(4);ÁܶÐ assert_eq!(v.len(), 5);ÁÌÒÐ assert!(v.spilled());Á<ìÐÅDÿÐ¦Ì ˆÑ·Ì,‹ÑÏ6ñI˜êiPЍ,.|™ÔD™ÔˆˆŒF¬®Ô$®ÔˆˆŸ5ÔÈÔ¦Ì ÍÔ·Ì,ÐÔÏ6Ž˜šœ ¡¢¤¥¦§¨©ª«¬­®¯±²³´¾¿ÀÁÃÅÇÉÍÏÐÑž Ü™ÕìéÔ Construct an empty vectorÁ ÕÏ6ŒŒ
Žë5ü”Ü&üãØVS Construct an empty vector with enough capacity pre-allocated to store at least `n`Ál¾Ù
elements.ÁÐÙúüØÙQN Will create a heap allocation only if `n` is larger than the inline capacity.Á®Úú<¶ÚÅìÂÚ # use smallvec::SmallVec;ÁäÚúüìÚ<9 let v: SmallVec<[u8; 3]> = SmallVec::with_capacity(100);Á­ÛúÔµÛ assert!(v.is_empty());ÁüÔÛ! assert!(v.capacity() >= 100);Á<úÛÅl›ÜŒFÏ6ŒŒ
ë5¹ ©Üü¹à5ü“Ý52 Construct a new `SmallVec` from a `Vec<A::Item>`.ÁÍÝúüÕÝ`] Elements will be copied to the inline buffer if `vec.capacity() <= Self::inline_capacity()`.ÁºÞú\ÂÞ›§ÜÒÞ±ÝòÞúüúÞ" let vec = vec![1, 2, 3, 4, 5];Áü¡ß>; let small_vec: SmallVec<[_; 3]> = SmallVec::from_vec(vec);Áäßúüìß.+ assert_eq!(&*small_vec, &[1, 2, 3, 4, 5]);Á<ŸàÅDÀàˆ9Ï6ŒŒ
ë5ÁÍàü¾ë&üéè@= Constructs a new `SmallVec` on the stack from an `A` withoutÁ¬®é copying elements.ÁÈéú\Ðé›§Üàé±Ý€êúôˆê let buf = [1, 2, 3, 4, 5];Áü«ê96 let small_vec: SmallVec<_> = SmallVec::from_buf(buf);Áéêúüñê.˜ì<¤ëÅDÅëë5Ï6ŒŒ
ë5Œ1Îëü­ð:üôì@¦íü¹íA> copying elements. Also sets the length, which must be less orÁüÿí equal to the size of `buf`.Á£îú\«î›§Ü»î±ÝÛîúüãî'$ let buf = [1, 2, 3, 4, 5, 0, 0, 0];ÁüïDA let small_vec: SmallVec<_> = SmallVec::from_buf_and_len(buf, 5);ÁØïúüàï.˜ì<“ðÅ„´ðë5ŒFÏ6ŒŒ
ë5Œ1ÅðÍðüöXüìñ@¦íü±òC@ copying elements. Also sets the length. The user is responsibleÁüùò)& for ensuring that `len <= A::size()`.Á§óú\¯ó›§Ü¿ó±Ýôßó use std::mem::MaybeUninit;Á‚ôúüŠô'Þñü¶ô)& let small_vec: SmallVec<_> = unsafe {ÁüäôFC SmallVec::from_buf_and_len_unchecked(MaybeUninit::new(buf), 5)Á4¯õ };ÁºõúüÂõ.˜ì<õõÅÔöîLŒFÏ6ŒŒ
ë5Œ1¸öÍöüÑù0üß÷  Sets the length of a vector.Á„øúüŒøEB This will explicitly set the size of the vector, without actuallyÁüÖøGD modifying its buffers, so it is up to the caller to ensure that theÁü¢ù*' vector is actually the specified size.Á<ßù¹ ¹Ï6ŒFŒ çùŒ
ë5$ìùnew_lenÁ<òùì­û|°ûŒFŒŒ
ë5ü­"üÜ>; The maximum number of elements this vector can hold inlineÁ\´‚º ºÏ6ŒFŒ À‚Œ
ë5$Á‚Ô¿ƒüý‚/, The number of elements stored in the vectorÁƃ» »Ï6ŒFŒ ʃŒ
ë5$˃ô»„üÿƒ)& Returns `true` if the vector is emptyÁD„¼ ¼Ï6Œ Ë„Œ
˜ë5$Ì„üÒ…üÿ„@= The number of items the vector can hold without reallocatingÁDÙ…½ ½Ï6ŒFŒ â…Œ
ë5$ã…üÀ‡94Ǿ ¾Ï6ÖÑŒFŒFŒ ʇŒ
šë5$ˇüØŠATÛŠ¿ ¿Ï6›Î ¿ŒFŒFŒ 抌
ë5$ëŠì÷Žü“ŽQN Returns `true` if the data has spilled into a separate heap-allocated buffer.Á<þŽÀ ÀÏ6Œ Œ
œë5$‡üú“]üÒNK Creates a draining iterator that removes the specified range in the vectorÁü¥! and yields the removed items.ÁËúüÓEB Note 1: The element range is removed even if the iterator is onlyÁü.+ partially consumed or not consumed at all.ÁБúüØ‘KH Note 2: It is unspecified how many
# ExampleÁÖ¶ú<Þ¶Åüê¶)& # use smallvec::{SmallVec, smallvec};Áü˜·85 let mut v0: SmallVec<[u8; 16]> = smallvec![1, 2, 3];ÁüÕ·85 let mut v1: SmallVec<[u8; 32]> = smallvec![4, 5, 6];Á¼’¸ v0.append(&mut v1);Áü®¸(% assert_eq!(*v0, [1, 2, 3, 4, 5, 6]);ÁÄÛ¸ assert_eq!(*v1, []);Á<ø¸Å4‹¹ÄÅ ÄÏ6 ÅÌ:Œ££ •¹ŒÍì„; ’¹î„;¬Î¹„;ïŸ7tÔ¹
¢ë5„;$š¹¹
, ¹CEüä»&ü›ºEB Re-allocate to set the capacity to `max(new_cap, inline_size())`.Áåºúüíº85 Panics if `new_cap` is less than the vector's lengthÁüª»52 or if the capacity computation overflows `usize`.Á$ë»Æ ÆÏ6ŒFŒ ð»Œ
¤ë5$õ»new_capÁ<û»üÒ½LüüE±’½úü•½8Ž“DÙ½Ç ÇÏ6ŒFÖ¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
ò2Œ ⽌
¥ë5$ç½Þ”<í½üŸÍ,ü»ËC@ Reserve capacity for `additional` more elements to be inserted.ÁƒÌúü‹Ì;8 May reserve more space to avoid frequent reallocations.ÁËÌúüÓÌ96 Panics if the capacity computation overflows `usize`.Á<¦ÍÈ ÈÏ6ŒFŒ ®ÍŒ
¦ë5$³Í
additionalÁT¹ÍüúÎ#¬ýÎÉ ÉÏ6Œ “ÏŒ
§ë5$˜Ïü¼ÒRü¬ÑCá–ôÑúüüÑ;¼—\ÃÒÊ ÊÏ6ŒFÌ–Œ ÏÒŒ
¨ë5$ÔÒ ™TÚÒü†Ø2üôÖOL Reserve the minimum capacity for `additional` more elements to be inserted.ÁÈ×úüÐ×1. Panics if the new capacity overflows `usize`.ÁlØË ËÏ6ŒFŒ ›ØŒ
©ë5$ Ø ™T¦ØüÑÙXüýØO²›ŒØÙÌ ÌÏ6ŒFÌ–Œ êÙŒ
ªë5$ïÙ ™TõÙü…ÞüÎÜ:7 Shrink the capacity of the vector as much as possible.ÁÝúü•ÝZW When possible, this will move data from an external heap buffer to the vector's inlineÁdôÝ storage.ÁlŒÞÍ ÍÏ6Œ šÞŒ
«ë5$ŸÞüŠå&üÀâOL Shorten the vector, keeping the first `len` elements and dropping the rest.Á”ãúüœãQN If `len` is greater than or equal to the vector's current length, this has noÁ\òã effect.Á‚äúüŠäQN This does not re-allocate. If you want the vector's capacity to shrink, callÁüàä%" `shrink_to_fit` after truncating.ÁD‘åÎ ÎÏ6ŒFŒ šåŒ
¬ë5$Ÿå¥åüÓè$üôç2/ Extracts a slice containing the entire vector.Á«èúܳè Equivalent to `&s[..]`.ÁDÚèÏ ÏÏ6 Ïž7Œ ãèŒ
­ë5$äèüõé0ü’é2/ Extracts a mutable slice of the entire vector.ÁÉéúüÑé Equivalent to `&mut s[..]`.ÁdüéÐ ÐÏ6 О7Œ ‰êŒ
®ë5$Žêü”ì6üÀêOL Remove the element at position `index`, replacing it with the last element.Á”ëúüœë1. This does not preserve ordering, but is O(1).ÁÒëúüÚë'$ Panics if `index` is out of bounds.Á\›ìÑ ÑÏ6ŒFŸ7Œ §ìŒ
¯ë5$¬ìÖ,²ì½í¯°¨¶°Ŷ°°¯°ë5Ÿ7¼ªîüïí(% Remove all elements from the vector.Á,±îÒ ÒÏ6Œ ·îŒ
±ë5$¼îüŒð1üéî\Y Remove and return the element at position `index`, shifting all elements after it to theÁLÊï left.ÁØïúüàï'©4“ðÓ ÓÏ6ŒFŸ7Œ šðŒ
²ë5$ŸðÖ,¥ðü¤ô8üŸóWT Insert an element at position `index`, shifting all elements after it to the right.Áûóúäƒô Panics if `index > len`.Á4«ôÔ ÔÏ6ŒFŸ7Œ ²ôŒ
³ë5$·ôÖ,½ôelementÁ<ËôüüYü û\Y Insert multiple elements at position `index`, shifting all following elements toward theÁLü back.Á\–üÕ ÕÏ6ŒFà9Œšµµ ÃüŒÍìà9 ¢üÇLà9ä¥üà9ÈLŸ7t²ü
´ë5à9$ÈüÖ,ÎüiterableÁDÜüTV¬úŽ\¥··’¯ ‚6¢óÏ>ç#’¸¹º½%' ¶2”¹££¹ƒ£¹„£þ-'ºˆÉ¬gŒFTŒFü¯¥¼¼’¯ ´‚6½"½”ÝÖ Ö‚6» å»
½¶2üŽ”)ü““da Convert a `SmallVec` to a `Vec`, without reallocating if the `SmallVec` has already spilled ontoÁlü“
the heap.ÁD•”Ï6ˆ9ŒŒ
¾ë5$¢”üƘ/ü†—fc Converts a `SmallVec` into a `Box<[T]>` without reallocating if the `SmallVec` has already spilledÁ”ñ— onto the heap.Áˆ˜úü˜1. Note that this will drop any excess capacity.Á„͘Ï6žªN¡ˆˆ¢ˆl }.xÏž7¼2ŒŒ
¿ë5$Þ˜üÜ›*ü®™QN Convert the `SmallVec` into an `A` if possible. Otherwise return `Err(Self)`.Á„šúüŒšqn This method returns `Err(Self)` if the `SmallVec` is too short (and the `A` contains uninitialized elements),Áü‚›UR or if the `SmallVec` is too long (and all the elements were spilled to the heap).ÁTã›Ï6Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
ë5Ï6ŒŒ
Àë5$î›üÚ Büáž96 Retains only the elements specified by the predicate.ÁŸŸúü§ŸNK In other words, remove all elements `e` such that `f(&e)` returns `false`.ÁüúŸIF This method operates in place and preserves the order of the retainedÁlÈ ßå4á Ø ØÏ6ŒÂ ˆ¡ŒÍì§Á è ×“"§Á ן7Üë ×§ÁöÁ˜"$‚¡
Áë5§Á$¡± —¡bdüÅ¥Bü¸£9ù½ö£úüþ£LI This method is identical in behaviour to [`retain`]; it is included onlyÁüϤHE to maintain api-compatibility with `std::Vec`, where the methods areÁüœ¥$! separate for historical reasons.ÁTÌ¥Ú ÚÏ6§ÁŒÄÄ ÷¥ŒÔÁ ×¥Ù“"§Á ÙŸ7ÜÚ¥Ù§Á¼Å˜"$ñ¥
Ãë5§Á$ü¥± ‚¦bdüܦFü¬¦+( Removes consecutive duplicate elements.Á,ã¦Û ÛÏ6Œ 馌µßŸ7Ÿ7§
Åë5$î¦4¿§Åƨ¶ÆŶÆÆÅÆë5 Ÿ7 Ÿ7ü¬¨qüÚ§MJ Removes consecutive duplicate elements using the given equality relation.ÁD³¨Þ ÞÏ6§ÁŒÈÈ ¿¨ŒÔÁ ¼¨ÜÝ“"§Á ÜŸ7 ÝŸ7üó¨)ÜݧÁ‹Ê˜"$˜©
Çë5§Á$Ĩ same_bucketÁ\Ψü¼¯xüý®:7 Removes consecutive elements that map to the same key.Ádïà àÏ6§ÁŒÊœËËÊ Ö¯ŒÔÁ ЯÍìœ Ó¯ß“"§Á ߟ7Ä‚°ß§Áâ̘"ÆÌ ™°µßÆÌÆÌd§°
Éë5§ÁÆÌ$Û¯keyÁ寎4ѰĘ́¶ÌŶÌÌÉÌë5§ÁÆÌ”È §Áü£º_üö°HE Resizes the `SmallVec` in-place so that `len` is equal to `new_len`.Áñúü˱_\ If `new_len` is greater than `len`, the `SmallVec` is extended by the difference, with eachÁü¯²a^ additional slot filled with the result of calling the closure `f`. The return values from `f`Áü•³HE will end up in the `SmallVec` in the order they have been generated.Áâ³úüê³HE If `new_len` is less than `len`, the `SmallVec` is simply truncated.Á·´úü¿´b_ This method uses a closure to create new values on every push. If you'd rather `Clone` a givenÁü¦µ`] value, use `resize`. If you want to use the `Default` trait to generate values, you can passÁü‹¶0- `Default::default()` as the second argument.ÁÀ¶úüȶB? Added for `std::vec::Vec` compatibility (added in Rust 1.33.0)Á·ú<—·Åü£·)ÖüÑ·85 let mut vec : SmallVec<[_; 4]> = smallvec![1, 2, 3];Áüޏ)& vec.resize_with(5, Default::default);Áü¼¸(% assert_eq!(&*vec, &[1, 2, 3, 0, 0]);Áé¸úüñ¸1. let mut vec : SmallVec<[_; 4]> = smallvec![];Á
function.ÁŽÈút–È # ExamplesÁ©Èú<±ÈÅü½È)ÖŒëÈ use std::mem;ÁŒÉ use std::ptr;Á—Éú|ŸÉ fn main() {Áü³É96 let mut v: SmallVec<[_; 1]> = smallvec![1, 2, 3];ÁñÉúüùÉ/, // Pull out the important parts of `v`.Áü­Ê let p = v.as_mut_ptr();ÁÔÑÊ let len = v.len();ÁüðÊ let cap = v.capacity();Áü”Ë" let spilled = v.spilled();Á»Ëú„ÃË
unsafe {ÁüØËHE // Forget all about `v`. The heap allocation that stored theÁü¥Ì1. // three values won't be deallocated.ÁÜÛÌ mem::forget(v);ÁûÌúüƒÍ/, // Overwrite memory with [4, 5, 6].Át·Í //ÁüÊÍHE // This is only safe if `spilled` is true! Otherwise, we areÁü—ÎFC // writing into the old `SmallVec`'s inline storage on theÁ¬âÎ // stack.ÁìüÎ assert!(spilled);ÁìžÏ for i in 0..len {ÁüÀÏ,) ptr::write(p.add(i), 4 + i);ÁlñÏ
ƒÐúü‹ÐLI // Put everything back together into a SmallVec with a differentÁüÜÐLI // amount of inline storage, but which is still less than `cap`.Áü­ÑJG let rebuilt = SmallVec::<[_; 2]>::from_raw_parts(p, len, cap);ÁüüÑ.+ assert_eq!(&*rebuilt, &[4, 5, 6]);ÁL¯Ò,½Òã¨tãÒ Ÿ7ŒFŒFÏ6ŒŒ
Ïë5µ òÒlengthÁ4…ÓÔD”Óü¯×&üùÖ1. Returns a raw pointer to the vector's buffer.Á4¶×â âÏ6 Ÿ7Œ ½×Œ