Files
boc/rust-service/target/debug/deps/libsmallvec-97fd81655f68edef.rmeta
T

240 lines
111 KiB
Plaintext
Raw Normal View History

rust
’º#rustc 1.96.0 (ac68faa20 2026-05-25)ÁíàÄTËŸ ÜJîÄ)'ß\¥!-3d1337db07d0b3aeÁ¤²XctÔ'ÐÓ©z¨ɽÓ-a4945860e1c53b00Á¤°ð ¾ä-±($²ï=©Ã-7e98a21bfd32b0edÁÀ"$é!»writeÁŒï!Ìè!testsÁ,¨"$"MallocShallowSizeOfÁœÄ&»malloc_size_ofÁÔ’& MallocSizeOfÁdÙ&»"$MallocSizeOfOpsÁ|ç&»EG DeserializeÁ\ª'»serdeÁŒ€' DeserializerÁd·'»"$ SeqAccessÁLÅ'»?AVisitorÁ<Ð'»Z\ SerializeÁLä'»wy SerializeSeqÁdï'»
SerializerÁTý'»µ· PhantomDataÁ\º(»Œ”(ioÁë(»ÊŒÎ( ManuallyDropÁd£)»drain_keep_restÁÜö( DrainFilterÁ\Õm» drain_filterÁÄñk SmallVecDataÁd³ »CŒ™ SmallVecVisitorÁ|ߊ»ŒÄŠ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Á(¥(extend_from_sliceÁ+¥+× .×0÷
infallibleÁ2¥ layout_arrayÁ4¥4 
deallocateÁ7¥DrainÁ9'aÁ9¥9
tail_startÁ9tail_lenÁ9ù9Á@ñ @¥@×Dñ D¥Gñ G¥Jñ J¥JJó N J size_hintÁQñ Q¥Q next_backÁT Vñ V¥V Zñ Z¥
]ñ ]¥]ãßaaInlineÁc
cˆaHeapÁfµ f i¥iŸi i
from_constÁm  ooÝo
inline_mutÁo from_inlineÁoemptyÁo into_inlineÁoheapÁoheap_mutÁo from_heapÁ
y{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Áãñ ãã÷çç÷êê÷ííší°íÖòòšò×öö× ùùùûšýýextendÁÿš ×!>"ã#ŠŠƒŠ$ŽŽŽ%&ï
'(šš§œ)žIntoIterÁ  ¬ currentÁ þ*¥¥×+¨¨ƒ,««ã-®®®ó ®.³³²/0¸1ºº¸ºÈ2¾¾¾¾ê3Ãñ ÃÃÃÃê4Éñ ÉÉÉÉêMÏÏ SetLenOnDropÁÒñ ÒÒ local_lenÁ5Öñ Öæ ÖgetÁÖ
increment_lenÁ6Ûñ Ûã7Þ¥ÞŸÞ Þ new_constÁÞßã Þfrom_const_with_len_uncheckedÁå 8ç¥çŸç çç
ToSmallVecÁíí to_smallvecÁ9ððÆ# ConstNonNullÁó
ó¥óˆ:÷¥÷æ ÷ò;û¥ûƒ<þ¥CollectionAllocErrÁCapacityOverflowÁ
AllocErrÁƒlayoutÁ=×*
*
-
-
/
/
/
C
C
C
N
P
T
Y
`
q
r
v
w


Œ

Ž









š

œ

ž
Ÿ
 
¡
¢
£
¤
¦
§
¨
©
²


¸
¸
º
¼
¼
¼
¾
¾
Â
Å
Æ
É
Ê
Ê
Ë
Ë
Î
Ó
Ö
Ù
Ü
ß
â
ñ
õ
ø
ø
ÿ
ƒ
ƒ
ƒ

Œ








œ
œ
§
§
§
ª
­
±
²
µ
¼
½
Ù
Ú
Ý
ï
ò
ý



í(ªBªBö­BbufÁ÷<®B÷<9)
-ÜnL¥çEçEèEGlobalÁ ¿±‡§í#”+¿cê$ƒ‡%—%\1¦qôÏ÷åÄcÐ+éÐ+ûØûØüØ LayoutErrorÁ :ð¨?¢©¿c99å <
=
>ù?Ájf•—ïý®ñ ¥ Ú,ÌìÚ,ùMÚ,ŒMÚ,ÃMÚ,òPÚ,Œ"Ú,Ììacd˜eˆf°gµ héÀãÇ0öh ý-Œ"««¸­¹®Û¯M¶%tM,dA”+é!}}¬:>)·5wÉ.ö!­/à­/
É.Ðã­/ù/ ­/ù/£­/ù/é}}¬:>)·5w ñ
ç0Ðé­/ªBªBö­Bê)÷<®B÷<9)
-ÜnLú/š+é­/É.Ù¢­/š³"­/á1(­/ú/ÃL­/ú/ÐL­/ú/¿c­/³­/Œ"­/Ø­/µß­/}}¬:>)·5w­/íß­/­/º­/še­/Ìì­/¿c  ¢¬£Ö¤þF\˜[?É.ØÆ3Œ"Æ3ùMÆ3ŒMÆ3ÃMÆ3òPÆ3ÇL­/ÇL ñ ²0ÇL ñ ²0Œ"ÒÒ¦!ÔÕÊ!0ÖäçL5_7ñ Ï”+Ÿíù/É.Øóóôì#öˆ >Ìu)ÑÁ²”+Š Ý5+ªBö}…@9 .0ã}D9{aG9y}J Q V Z9¸ ]« ÛÒÐ}„ ûóŽ}’}”}—
É
çð þó(À¿c Äcé Ìì
ùMŒM ÃM òP Œ" é! ö!àã £Ù¢³"ÃLÐL³ØµßíߺšeÇLÏíŠ 4¨¹ 䓹 aÀ5 ®¹µ¹müиeacd˜eˆf°gµ héÀãÇ0öhÀ5$„¹ÑÛÑÛ MaybeUninitÁÓÛuninitÁÝÔÛ»ÝÍõƒ«%9À54中;ÝÓüòâ/¬‹ã
œ‹ã
òÀ5-;
BÄòâ
m”+ŸWi  ãü¼âp }À5 Ýâ «ã²ãâü‘â¡}}¬:>)·5wÀ5$­â×:­;_üéæ1¼‚ç,“ç 
$„‚ç
ñÀ55G ˜ç^
eÄéæû<o ™çü³ær }À5 ÔæÊ=Ÿ ¤ç«çüúå±ãù=$¤æÀ5,’æ×:­;þÀ5üitemsÁ(ZÊ=Ÿãë üúë1¼“ì,¤ì 
$„“ì”?/A ©ìX
_Äúëû<i| ªìüÂët }À5 µì ¼ìüãêÙåù=$³ëÀ5,•ëÊ=¤ëÊ=×:­;À5ï?7:v4¥´ aÉ.d'ý-2ÑÛÑÛ¹:ÓÛÎ:ÝÔÛ»ÝÍõƒ«%9É.w~´³ö ó”+ô)Ý54§ ïíe¼îËè¿*”+ip(2479a} ÏÒíóôí¤,×! 4Ø"èØ LayoutErrÁLà"Þ‚BoxÁþ"Á#÷< Á ö™#ªB
Y4²#  ZLº#£
Ð#×ß# `Ž$õ#šeŽ e4û#¢eunreachable_uncheckedÁ¬”$  repeatÁ4¼$ KdÄ$ÃL
FusedIteratorÁlÒ$òP˜dá$ÇLíú$ë¹:\Ž%ÑÛ­
$«%Â ¹,±%£ RangeBoundsÁ\¸%¤#µ $Ö% §<Ü%!ž$ø%‰f#ÚTþ%“k$ý
Dž3%Œ |Ã@&ü­ç”ü­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`Áúüº(·Yãúüç³ 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¹cÂúüÆ_\ 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)Á(2479a} ÏÒíóôíǤȠÇèØÃE½Þ‚àE¹Á¸÷< ÁÊ ö¸ªB
Y·  Z£
µ×´ `޳šeŽÅ e³¢e¯G  ×G KÃLƒHòP˜ÇLíë¹:ÑÛ­
ƒÂ ¹£„Iv¤#µ u §t!žs‰f#Úr“k$ý
q%Œ p&éìï´Æ!ædÉ"ÝàÆÉŒð"¹,‡#­°D”#d£#ˆ|LÊ#sLÙ#gTè#[^<?üˆ$!T¯$
æéÙÜLô$дƒ%ÄLŸ%·¥%«®LÊ%Ð%}\ê%t,ð%hk¬‘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);Á<ú, # }Á<-šsŠ-úüŽ-:7 - Create a [`SmallVec`] from a given element and size:ÁÉ-ú<Í-šsüÕ-)«sŒÿ-Ýsü‘./, let v: SmallVec<[_; 10]> = smallvec![1; 3];ÁüÁ.1. assert_eq!(v, SmallVec::from_buf([1, 1, 1]));Á<ó.—u<û.šsƒ/úü‡/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'˜48Dš4'¢48æ ¤4 §4 ¨4% ¯4 µ4 É4 , ¶48elemÁ$·4& »48$¼4% À4, Â48¹ Ã4& Ä48$Å4*Ë4 Î4 …5 Ï4 „5, Ù48,Ú4'ß48Dá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'ÿ58D6'‰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'78D7'•78áD—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.Áü˜:&‰r¿:úüÃ:@År„;ú<ˆ;šsü;0- # use smallvec::{smallvec_inline, SmallVec};ÁŒÁ;ÝsüÓ;<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);Á<Û<—u<ã<šsë<úüï<:Àuª=ú<®=šsü¶=0ð‰Œç=Ýsüù=96 const V: SmallVec<[i32; 3]> = smallvec_inline![1; 3];Áü³>1. assert_eq!(V, SmallVec::from_buf([1, 1, 1]));Á<å>—u<í>šsõ>úüù>YV Note that the behavior mimics that of array expressions, in contrast to [`smallvec`].Á» const_newÁ¬Ù?ìÓ?(|¦@b" Ó@ ¹C  ŽA A A8¶|A, ”A8à •A& A8$—A*A  A §A7¬4¡A% ¨A ®A ÂA , ¯A8~$°A& ´A8$µA% ¹A, »A8¹ ¼A& ½A8$¾A*ÄA ÇA ŒB ÈA B , ÒA8,ÓA'ØA8DÚA'âA äA åA ëA8 æA% çA, éA8¹ êA ìA'íA8ßTïA ùA …B úA „B, ûA8~$üA% €B, B8¹ ƒB% B “B ¦B, ”B •B B, B8à —B& ˜B8$™B$ žB ŸB, ¡B ¢B ¤B$ £B- ¥B*¨B «B ¶C ¬B µC8,¶B8Ÿ ¼B& ½B8¬,¿B ÅB7ˆ¬4ÇB, ÎB ÏB óB ÐB, ÒB8,ÓB'ØB8Œ |ÚB éB êB òB ëB8¶|ìB, ðB8à ñB
ôB% õB, ÿB8,€C'…C8D‡C'C C C —C8 “C% ”C8Ÿ C ˜C'™C8ßTC ¥C ¯C ¦C ®C, §C ¨C ¬C, ©C8Ã ªC$ «C
­C% ·Cô™D»CŒ„DœƒDôúCŒ¦D ¸D šF ¾D ¿D*ÁD ÄD E8¢ ŒÎD ßD àD ûD7entered unreachable codeÁÔáD% E ˆE E, ‰E8° ŠE& E8$ŒE*E •E —F8ŸE8â¢E ¥E ¦E ·E8„§E ¹E ÛE8Á
,ÇE ÌE ÍE ÐE, ÎE8° ÏE% ÑE8$ÝE âE F8¯G¬ð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šs4•JlžJ|¶J(¥)()Îìü¬JÍì¨- ÆJ(± )± /***&(üK-üÏJ96 Extends a collection from a slice of its element typeÁŒKˆ ¹  ˆ
¨-( ¢K(
*¹ ¨-$§K¹
,­KüÓK,¥,,Íì”+ ØKØ”+,ÛK×*-*- ü†L,Œ‰LŠ ×* Š
”++ L+
-”+$ L¹
,¦Lü¹O(Ð+/Åc/üèO8ëOŒ Ð+ Œ c cˆ¢cµ
 `£cê) `àB¤GS
Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
ŸÈŸÈ ÈErrorÁ O˜éBL. ïO.
/$ðO± öOüóP+Ð+1ë1ì¥Q$¨QŸ,Ð+00
1 ­QüûQ<TþQÖ¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
”+Ð+”+¥33Ú¢ ‰R
2”+ 4ŒRü¥UBd¨UÊ=Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
èØèØ éØ²‚êØŸ²‚ªë¥CHÈÐ+¥55Ú¢ µU
4”+¹ ¸U³W4<closure_kind>Á6<closure_signature>Á6<upvars>Á6646”+Ÿ,Ð+üàW9TêWµEÊ=¥88Ú¢ õW
7”+µ øWD‰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Ú,jf•—ïý®<=>?`˜[Z\:Œ±[T±[99Ê=|È[DÈ[99Ê=ôÝ[$Ý[99ÄlÄlIterÁÇlµ ™lÈl
end_or_lenÁ™lÉl_markerÁ™lŒœjSžñ Þ®Ì\\99§ ïíe¼îËè¿*}}¬:>)·5w¨-üŸ\Rñ A¥BABÅ  ¨\¿®«\Í®,°\¿cÞ®Tæ\Ú,CÀcC¤\68Aüø\8û\Ž ŽÚ,  c cˆ¢cµ
 `£cê) `àB¤GS
Ÿ¥@ ÿ\@
Cñ ¨-$€]± †]ü^6ñ E¥FEFÅ  ^ ¨-$”^Í®,^Ú,^$&ü»^6ñ H¥IIHÅ  Ë^Ìì¨-$Î^Í®,Õ^Ú,Ç^%'üö^1ñ K¥LKLÅ  ÿ^¿®‚_Í®,‡_Ú,MNPúMûMÿMPNû^57KL®_$³_JJÞ®üÖ_%$Ù_ Ú,Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙÞ®J Þ_J
Nñ ¨-$ã_\µ`NØ©Oð©OªOONO¨- Þ®Þ®üû`-Lþ` Ú,Ê=Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙÊ=J ˆaJ
Pñ ¨-$‰aüÒa<ñ R¥SRSÅ  Ûa¿®ÞaÍ®,ãaÚ,TMT×a&(Rü£b*L¦b Ú,ä¶Q °bQ
Tñ ¨-$µb\ŒcTØ©Uð©UªUUTU¨-§¸üÂc5ñ W¥XXWÅ  ËcÍ®,ÎcÚ,YÄMYÇc ´Œdd Ú,Ê=V “dV
Yñ ¨-$”düÆd1ñ [¥\[\Å  ÏdÍ®,ÒdÚ,Ëdüüd-ñ ^¥__^Å  …e¿®ˆeÍ®,eÚ,`"`e&(^”°e$³e Ú,] ¸e]
`ñ ¨-$½e܃´»CŒî³œí³ôä³dˆ´bbÍìÉ. •´ÏÉ.,˜´ý-éÀãÇ0öhcdfde§Dý-ghBDq!q!aa
dÉ.q!q!§Dý-aaÛÀt¬´aa§D$Œµaaý-¬æ¶æ¶aa§ ïíe¼îËè¿*ú/T…·…·aaÊ=üÖ·,»CŒ©·œ¨·»Åެ½·ü¤·/ü›·:¥jŸkkjÚ¢ Û·ŸÊ=tÞ·×:m ä·Ê=üи8TÙ¸­;×:iiû<Ýôع»CŒÃ¹œÂ¹ô¹¹ppë¿ ݹü¿,à¹ý-qrstuvwx!#ü‹º04•º ý-óóôì#öˆ >Ìu)ÑÁ²ú/o œºo
qÉ.$ºüý»3T‡¼ ý-àÁo ’¼o
rÉ.$—¼üï½9\ò½§Dý-oo
sÉ.Ý4þ½쳿,¶¿ý-oo
tÉ.üÚÁ-\äÁý-§Doo
uÉ.$ðÁü’Ã7$œÃ˜ ˜ý-—ÅÊ=o ¡Ão
vÉ.$¢ÃüõÄ?DÿÄ ý-àÁ Ê=o ˆÅo
wÉ.$ÅüÑÆBLÔÆàÁÊ=ý-oo
xÉ.µ ÞÆõÆüÇÇ5zzë¿ ÓÇü¿,ÖÇÌìÉ.$ÞÇý-"$ü€È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
elements.ÁÐÙúüØÙQN Will create a heap allocation only if `n` is larger than the inline capacity.Á®Úú<¶ÚšsìÂÚ # use smallvec::SmallVec;ÁäÚúüìÚ<9 let v: SmallVec<[u8; 3]> = SmallVec::with_capacity(100);Á­ÛúÔµÛ assert!(v.is_empty());ÁüÔÛ! assert!(v.capacity() >= 100);Á<úÛšsl›ÜÊ=­/
É.¹ ©Üü¹à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]);Á<ŸàšsDÀà‰1­/
É.ÁÍàü¾ë&üéè@= 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);Áéêúüñê.Êß<¤ëšsDÅëÉ.­/
É.ê)Îëü­ð:üôì@Øàü¹í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);ÁØïúüàï.Êß<“ðšs„´ðÉ.Ê=­/
É.ê)ÅðÍðüö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¯õ };ÁºõúüÂõ.Êß<õõšsÔö§DÊ=­/
ˆÉ.ê)¸öÍöüÑù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.Á<ßùš š­/Ê= çù
É.$ìùnew_lenÁ<òùì­û|°ûÊ=
ŠÉ.ü­"üÜ>; The maximum number of elements this vector can hold inlineÁ\´‚ ­/Ê= À‚
É.$Á‚Ô¿ƒüý‚/, The number of elements stored in the vectorÁƃœ œ­/Ê= ʃ
ŒÉ.$˃ô»„üÿƒ)& Returns `true` if the vector is emptyÁD„ ­/ Ë„
É.$Ì„üÒ…üÿ„@= The number of items the vector can hold without reallocatingÁDÙ…ž ž­/Ê= â…
ŽÉ.$ã…üÀ‡94ÇŸ Ÿ­/—ÅÊ=Ê= ʇ
É.$ˇüØŠATÛŠ   ­/àÁ  Ê=Ê= æŠ
É.$ëŠì÷Žü“ŽQN Returns `true` if the data has spilled into a separate heap-allocated buffer.Á<þŽ¡ ¡­/ 
É.$‡üú“]üÒ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ÁÖ¶ú<Þ¶šsüê¶)& # 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, []);Á<ø¸šs4‹¹¥¦ ¥­/ ¦Í2˜˜ •¹Íì‚3 ’¹Ï‚3¬Î¹‚3Ðú/tÔ¹
É.‚3$š¹¹
, ¹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`.Á$ë»§ §­/Ê= ð»
É.$õ»new_capÁ<û»üÒ½LüüEã…½úü•½8À†DÙ½¨ ¨­/Ê=Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
Ð+ â½
šÉ.$罈<í½üŸÍ,ü»Ë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`.Á<¦Í© ©­/Ê= ®Í
É.$³Í
additionalÁT¹ÍüúÎ#¬ýΪ ª­/ “Ï
œÉ.$˜Ïü¼ÒRü¬ÑC“ŠôÑúüüÑ;îŠ\ÃÒ« «­/Ê=þ‰ ÏÒ
É.$ÔÒÒŒTÚÒü†Ø2üôÖOL Reserve the minimum capacity for `additional` more elements to be inserted.ÁÈ×úüÐ×1. Panics if the new capacity overflows `usize`.Álج ¬­/Ê= ›Ø
žÉ.$ ØÒŒT¦ØüÑÙXüýØO䎌ØÙ­ ­­/Ê=þ‰ êÙ
ŸÉ.$ïÙÒŒ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ŒÞ® ®­/ šÞ
 É.$ŸÞüŠå&üÀâ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‘å¯ ¯­/Ê= šå