Files
volcengine-server-manager/target/x86_64-pc-windows-gnu/release/deps/libmemoffset-82a1ec9d252caded.rlib

137 lines
29 KiB
Plaintext
Raw Normal View History

!<arch>
/ 0 0 0 0 8 `
// 68 `
memoffset-82a1ec9d252caded.memoffset.d73a388e93cb020f-cgu.0.rcgu.o/
lib.rmeta/ 0 0 0 644 27138 `
d<EFBFBD><00>i.rmeta<00>i<rust
'h#rustc 1.94.1 (e408947bf 2026-03-25)<29><02><05><><EFBFBD>m <0B>:-Z1Ϥ-b7ca4e58e9c2b38f<38><02>d<><1E>{' <09><18>z<EFBFBD><7A><EFBFBD><EFBFBD>-afa8b616ced7613d<33><01> doc_comment<6E>\<5C><02><<3C>_memoffset__addr_of<6F><66><EFBFBD> raw_ref_macros<6F>t<>
<01><>
_memoffset__field_check<63><6B><EFBFBD> allow_clippy<70>d<>t<>_memoffset__field_check_tuple<6C><65><EFBFBD><01>d<>t<>_memoffset__field_check_union<6F><6E><EFBFBD>"<01>d<>"t<>"_memoffset__let_base_ptr<74><72><EFBFBD><02>
d<>t<>_memoffset_offset_from_unsafe<66><65><EFBFBD> stable_const<73>d<>t<>_memoffset__offset_of_impl<70>ԋstable_offset_of<6F><00><><02><> _memoffset__offset_of_tuple_impl<70><6C><EFBFBD>& <01><00><>%<02><>% _memoffset__offset_of_union_impl<70><6C><EFBFBD>0 <01><00><>/<02><>/tests<74>,<2C><<02>$<24><<01>,<2C>-<02>$<24>-<02>__priv<69>size_of_pointee<65><02> raw_field<6C><01><01><01><01><01>raw_field_tuple<6C>raw_field_union<6F><02> <01><01><01><02> <01>offset_of_tuple<6C><01>offset_of_union<6F>span_of<6F>_memoffset__compile_error<6F><01><01><>a <20> <01><02><04><02><>V<00><>aK<61><01><01> <09><><01> ,<2C> <0B> $<24>_ptr<74>J~<01><01> <00> <02><01><01><>  <01><01><>
<01><02><> <01><02><> <01>L<>( <01>|<7C>.<01>|<7C>7<01>Đ
<01><03><><01><03><><02> L<>#<01><04><>* <01>|<7C>-<01><04><>4 <01>|<7C>:<01>̡
<01><<3C><04><><08> <00><>KH A crate used for calculating offsets of struct members and their spans.<2E><1C> <02><00><> pm This functionality currently can not be used in compile time code such as `const` or `const fn` definitions.<2E><1C>
<02>|<7C>
## Examples<65><<3C>
 ```<60><00><>
(% use memoffset::{offset_of, span_of};<3B><1C>
<02><00><>
 #[repr(C, packed)]<5D><00><>
-* struct HelpMeIAmTrappedInAStructFactory {<7B><00><> '$ help_me_before_they_: [u8; 15],<2C>t<> a: u32<33>,<2C>  }<7D><1C> <02><00><> DA assert_eq!(offset_of!(HelpMeIAmTrappedInAStructFactory, a), 15);<3B><00><> FC assert_eq!(span_of!(HelpMeIAmTrappedInAStructFactory, a), 15..19);<3B><00><> ]Z assert_eq!(span_of!(HelpMeIAmTrappedInAStructFactory, help_me_before_they_ .. a), 0..15);<3B><<3C> <01> <1C> <02><00><> MJ This functionality can be useful, for example, for checksum calculations:<3A><1C><02>l<>
```ignore<72><00><><01><00><> struct Message {<7B><00><> header: MessageHeader,<2C><00><> fragment_index: u32,<2C><00><> fragment_count: u32,<2C><00><> payload: [u8; 1024],<2C><00><> checksum: u16<31>,<2C><01><1C><02><00><>C@ let checksum_range = &raw[span_of!(Message, header..checksum)];<3B><00><>)& let checksum = crc16(checksum_range);<3B><<3C><01> <02><13><01><13> <01><13>
<01><13> <01><13> <01><13> <01><13><01> <01><01>*<01>9<02> H<01>W<01>g<01>v<01><13><01><13><01><13>t<><00><>74 Hidden module for things the macros need to access.<2E>4<>4<>mem<65><1C><01><02> <1C><01>L<>#L<><18><>2<00><>^[ Use type inference to obtain the size of the pointee (without actually using the pointer).<2E>4<>|<7C><02> <09> <02><01><><01> <0C> <01> <01>gl<>L<><00><> <00><>A> `addr_of!`, or just ref-then-cast when that is not available.<2E> <01>t<> <01><> 4<> 0|<7C> <13> <0C>  <0C>
 <0C>
 <0C>
, <0C>
8<02> $<24>
& <0C>
8<02>$<24>
*<14>
 <0C>
 <0C>
 <0C>
 <0C>

, <0C>
8,<2C>
'<14>
8<01>4<>
'<14>
8<02> <1C>
'<14>
8addr_of<6F><<3C>
 <0C>
 <0C>
 <0C>
, <0C>
8<02> $<24>
% <0C>
<00><>$<00><> $! Deref-coercion protection macro.<2E><1C> <02><00><> IF Prevents compilation if the specified field name is not a part of the<68><00><>  struct definition.<2E><1C><02><00><> ```compile_fail<69><00><>+( use memoffset::_memoffset__field_check;<3B><1C><02><00><> struct Foo {<7B><00><> foo: i32,<2C>,<2C><01><1C><02><00><> type BoxedFoo = Box<Foo>;<3B><1C><02><00><>,) _memoffset__field_check!(BoxedFoo, foo);<3B><<3C><01> <01>d<><01><>4<>0|<7C><13> <0C> <0C> <0C> <0C> , <0C>8!$<24>& <0C>8<02> $<24>$ <0C>, <0C>8<02>,<2C>& <0C>8<02><14>*<14> <0C> <0C>+ <0C> <0C> <0C>8<02>,<2C> <0C> <0C>8<02>4<>'<14>8unneeded_field_pattern<72><00><>8<1C>, <0C>8!$<24> <0C> <0C>, <0C>8<02>,<2C>& <0C>8 <0C>$ <0C>!<14>% <0C>% <0C><00><>*<00><>$<01><1C><02><00><>>; Prevents compilation if the specified type is not a tuple.<2E><1C><02><00><><01><00><>1. use memoffset::_memoffset__field_check_tuple;<3B><1C><02><00><>+( _memoffset__field_check_tuple!(i32, 0);<3B><<3C><01> <01>d<><01><>4<>0|<7C><13> <0C> <0C> <0C> <0C> , <0C>8!$<24>& <0C>8<02><14>$ <0C>, <0C>8<02>,<2C>& <0C>8<02><14>*<14> <0C> <0C>+ <0C> <0C> <0C>8<02>,<2C> <0C> <0C>8<02>4<>'<14>8unneeded_wildcard_pattern<72><00><>8<1C> <0C> <0C>8 <0C>$ <0C>!<14>& <0C>, <0C>8!$<24>% <0C>% <0C><00><>*<00><>/, Deref-coercion protection macro for unions.<2E><00><>KH Unfortunately accepts single-field structs as well, which is not ideal,<2C><00><># but ultimately pretty harmless.<2E><1C><02><00><><01><00><>1. use memoffset::_memoffset__field_check_union;<3B><1C><02>|<7C> union Foo {<7B><00><> variant_a: i32,<2C>,<2C><01><1C><02><00><><01> <1C><02><00><>85 _memoffset__field_check_union!(BoxedFoo, variant_a);<3B><<3C><01> <01>d<><01><>4<>0|<7C><13> <0C> <0C>" <0C> <0C> , <0C>8!$<24>& <0C>8<02> $<24>$ <0C>, <0C>8<02>,<2C>& <0C>8<02><14>*<14> <0C> <0C>"+ <0C>  <0C>  <0C> 8<02>,<2C>  <0C>  <0C> 8<02>4<> '<14> 8<01>(<00><> + <0C>! <0C>! <0C>!8<02>,<2C>! <0C>! <0C>!8 unused_unsafe<66>l<>!8"4<>! <0C>! <0C>"8<1C>", <0C>"8!$<24>" <0C>" <0C>", <0C>"8<02>,<2C>"& <0C>"8 <0C>"% <0C>"% <0C>"<00><>(<00><>&MJ Computes a const raw pointer to the given field of the given base pointer<65><00><>& to the given parent type.<2E><1C>'<02><00><>'DA The `base` pointer *must not* be dangling, but it *may* point to<74><00><>' uninitialized memory.<2E>0<><30>'#<13> <0C>( <0C>, <0C>( <0C>(, <0C>(8base<73>$<24>(& <0C>(8<02>$<24>($ <0C>(, <0C>(8parent<6E>4<>(& <0C>(8<02> $<24>($ <0C>(, <0C>(8<02>,<2C>(& <0C>(8<02><14>(*<14>( <0C>( <0C>, <0C>( <0C>,8<01><00><>( <0C>) <0C>) <0C>), <0C>)8<01>24<>)$ <0C>), <0C>)8<02>,<2C>)% <0C>)8<1C>)8<01>2$<24>) <0C>), <0C>)8<01>2$<24>)% <0C>)+ <0C>+ <0C>+ <0C>+8<02>,<2C>+ <0C>+ <0C>+8<01>/l<>+8"4<>+ <0C>+ <0C>,8<01><00><>+ <0C>+ <0C>+ <0C>, <0C>, <0C>, <0C>, <0C>, <0C>,8<01>2$<24>,8<14>, <0C>,8,<2C>,, <0C>,8<01>24<>, <0C>,, <0C>,8<02>,<2C>,% <0C>,<00><>.<00><>,M<01>0<00><>-# to the given parent tuple type.<2E><1C>-<02><00><>-D<01>1<00><>-<01>1 tuple_ty<74>D<>.<01><>.0<><30>.#<13> <0C>. <0C>2 <0C>. <0C>/, <0C>.8<01>2$<24>.& <0C>.8<02>$<24>.$ <0C>., <0C>.8<01>24<>.& <0C>.8<02><14>.$ <0C>., <0C>.8<02>,<2C>/& <0C>/8<02><14>/*<14>/ <0C>/ <0C>2 <0C>/ <0C>28<01><00><>/ <0C>/ <0C>/ <0C>/, <0C>/8<01>24<>/$ <0C>/, <0C>/8<02>,<2C>/% <0C>/8<1C>/8<01>2$<24>/ <0C>/, <0C>/8<01>2$<24>/% <0C>/+ <0C>1 <0C>1 <0C>18<02>,<2C>1 <0C>1 <0C>18<01>/l<>18"4<>2 <0C>2 <0C>28<01><00><>2 <0C>2 <0C>2 <0C>2 <0C>2 <0C>2 <0C>2 <0C>2 <0C>28<01>2$<24>28<14>2 <0C>28,<2C>2, <0C>28<01>24<>2 <0C>2, <0C>28<02>,<2C>2% <0C>2<00><>7<00><>2M<01>0<00><>3#<01>6<1C>3<02><00><>3D<01>1̨4<01>1<1C>4<02>\<5C>4 ## Note<74><00><>4[X This macro is the same as `raw_field`, except for a different Deref-coercion check that<61><00><>5 supports unions.<2E><00><>
%<00><>TQ Macro to create a local `base_ptr` raw pointer of the given type, avoiding UB as<61><00><> " much as is possible currently.<2E> <02>
d<> <02><> 4<> 0|<7C>  <0C>
 <0C> <0C>
 <0C>
 , <0C>
8<02> $<24>
& <0C>
8<02>,<2C>
$ <0C>
, <0C>
8!$<24>
& <0C>
8<02><14>
*<14>
 <0C>
 <0C> "8<1C> 8uninit<69>4<>  <0C> , <0C> 8,<2C> '<14> 8<01>4<> '<14> 8<01><1C> '<14> 8 MaybeUninit<69>\<5C> '<14>  <0C> , <0C> 8!$<24>  <0C> '<14> 8<01>F4<>  <0C>  <0C> % <0C> 8<1C> , <0C> 8<02> $<24> & <0C>  <0C> 8,<2C> , <0C> 8!$<24>  <0C> 8<01>F4<>  <0C> 8<02>4<>  <0C>  <0C> % <0C> % <0C> <00><>*<00><>74 Macro to compute the distance between two pointers.<2E> <01>d<><02><>4<>0|<7C>* <0C> <0C> <0C> <0C> , <0C>8<02>,<2C>& <0C>8<02>$<24>$ <0C>, <0C>8<01>2$<24>& <0C>8<02>$<24>*<14> <0C> <0C> <0C> <0C>8<1C>8<02>,<2C> <0C>, <0C>8<02>,<2C>% <0C>8<1C>8<01>2$<24> <0C>, <0C>8<01>2$<24>% <0C>8"4<> <0C> <0C> <0C> <0C>8<02>,<2C>8<14> <0C>8,<2C>8<02><14> <0C>8 offset_from<6F>\<5C> <0C> <0C>8<01>2$<24>8<14> <0C>8,<2C>8<02><14>8<14>8<02>,<2C>% <0C><00><>' <01><00><>Ď4<>0|<7C>9 <0C> <0C> <0C> <0C> , <0C>8<01>24<>& <0C>8<02> $<24>$ <0C>, <0C>8<02>,<2C>& <0C>8<02><14>*<14> <0C> <0C> <0C> <0C>
, <0C>8,<2C>'<14>8<01>4<>'<14>8<01><1C>'<14>8<02> L<> <0C> <0C> <0C>, <0C>8<01>24<>$ <0C>, <0C>8<02>,<2C>% <0C><00><>#<00><>TQ Calculates the offset of the specified field from the start of the named struct.<2E><1C><02>|<7C><01> <<3C><01> <00><> use memoffset::offset_of;<3B><1C><02><00><><01><00><><01>|<7C> a: u32,<2C>|<7C> b: u64,<2C><00><> c: [u8; 5]<5D>,<2C><01><1C><02><00><>&# assert_eq!(offset_of!(Foo, a), 0);<3B><00><>&# assert_eq!(offset_of!(Foo, b), 4);<3B><<3C><01> <1C><02>d<> ## Notes<65><00><>EB Rust's ABI is unstable, and [type layout can be changed with each<63><00><>GD compilation](https://doc.rust-lang.org/reference/type-layout.html).<2E><1C> <02><00><> WT Using `offset_of!` with a `repr(Rust)` struct will return the correct offset of the<68><00><>!RO specified `field` for a particular compilation, but the exact value may change<67><00><>!VS based on the compiler version, concrete struct type, time of day, or rustc's mood.<2E><1C>"<02><00><>"ZW As a result, the value should not be retained and used between different compilations.<2E>0<><30>##H <0C># <0C>% <0C># <0C>$ , <0C>#8<01>24<>#& <0C>#8<02> $<24>#$ <0C>#, <0C>#8<02>,<2C>#& <0C>$8<02><14>$*<14>$ <0C>$ <0C>%8<01>Ԙ% <0C>% <0C>% <0C>%, <0C>%8<01>24<>%$ <0C>%, <0C>%8<02>,<2C>%% <0C>%<00><>*- <01>7D<>)<02><>)<01><00><>)<02><>)4<>*0<><30>)#W <0C>* <0C>+ <0C>* <0C>* , <0C>*8<01>24<>*& <0C>*8<02><14>*$ <0C>*, <0C>*8<02>,<2C>*& <0C>*8<02><14>**<14>* <0C>* <0C>+ <0C>* <0C>+
, <0C>+8,<2C>+'<14>+8<01>4<>+'<14>+8<01><1C>+'<14>+8<02> L<>+ <0C>+ <0C>+ <0C>+, <0C>+8<01>24<>+$ <0C>+, <0C>+8<02>,<2C>+% <0C>+<00><>-<00><>+MJ Calculates the offset of the specified field from the start of the tuple.<2E><1C>,<02>|<7C>,<01> <<3C>,<01> <00><>,# use memoffset::offset_of_tuple;<3B><1C>,<02><00><>,XU assert!(offset_of_tuple!((u8, u32), 1) >= 0, "Tuples do not have a defined layout");<3B><<3C>-<01> <01>7D<>-<02><>-0<><30>-#g <0C>. <0C>/ <0C>. <0C>. , <0C>.8<01>24<>.& <0C>.8<02><14>.$ <0C>., <0C>.8<02>,<2C>.& <0C>.8<02><14>.*<14>. <0C>. <0C>/ <0C>. <0C>/8<01><00><>/  <0C>/ <0C>/ <0C>/, <0C>/8<01>24<>/$ <0C>/, <0C>/8<02>,<2C>/% <0C>/<00><>4- <01><00><>3<02><>34<>40<><30>3#v <0C>4 <0C>5 <0C>4 <0C>4 , <0C>48<01>24<>4& <0C>48<02> $<24>4$ <0C>4, <0C>48<02>,<2C>4& <0C>48<02><14>4*<14>4 <0C>4 <0C>5 <0C>5 <0C>5
, <0C>58,<2C>5'<14>58<01>4<>5'<14>58<01><1C>5'<14>58<02> L<>5 <0C>5 <0C>5 <0C>5, <0C>58<01>24<>5$ <0C>5, <0C>58<02>,<2C>5% <0C>5<00><>:<00><>5TQ Calculates the offset of the specified union member from the start of the union.<2E><1C>6<02>|<7C>6<01> <<3C>6<01> <00><>6# use memoffset::offset_of_union;<3B><1C>6<02><00><>6<01>|<7C>6<01>+<00><>7 foo32: i32,<2C><00><>7 foo64: i64,<2C>,<2C>7<01><1C>7<02><00><>7/, assert!(offset_of_union!(Foo, foo64) == 0);<3B><<3C>7<01> <1C>7<02>\<5C>7<01><<00><>8li Due to `macro_rules!` limitations, this macro will accept structs with a single field as well as unions.<2E><00><>8P<01>><00><>9B<01>?0<><30>:#<13> <0C>: <0C>< <0C>: <0C>: , <0C>:8<01>24<>:& <0C>:8<02> $<24>:$ <0C>:, <0C>:8<02>,<2C>:& <0C>:8<02><14>:*<14>: <0C>: <0C>< <0C>: <0C><8<01><00><>;  <0C>< <0C>< <0C><, <0C><8<01>24<><$ <0C><, <0C><8<02>,<2C><% <0C><\<5C><<3C><00><>
&<00><>*' Reexport for `local_inner_macros`; see<65><00><> ro <https://doc.rust-lang.org/edition-guide/rust-2018/macros/macro-changes.html#macros-using-local_inner_macros>.<2E>4<> 0|<7C>
<13> <0C>
 <0C>  <0C>
 <0C>
, <0C>
 <0C>
 <0C>
, <0C>
8inner<65>,<2C>
& <0C>
8<02><14>
 <0C>
*<14>
 <0C>
 <0C> 8<02>l<>
 <0C>
 <0C>
 <0C>
, <0C>
 <0C>
 <0C>
, <0C>
8<01>k,<2C>
 <0C>
<00><><00><> YV Produces a range instance representing the sub-slice containing the specified member.<2E><1C> <02><00><> =: This macro provides 2 forms of differing functionalities.<2E><1C> <02><00><> LI The first form is identical to the appearance of the `offset_of!` macro.<2E><1C> <02>l<> <01><00><>  span_of!(Struct, member)<29><<3C> <01> <1C> <02><00><> eb The second form of `span_of!` returns a sub-slice which starts at one field, and ends at another.<2E><00><>(% The general pattern of this form is:<3A><1C><02>l<><01><00><> // Exclusive<76><00><>*' span_of!(Struct, member_a .. member_b)<29><00><> // Inclusive<76><00><>+( span_of!(Struct, member_a ..= member_b)<29><1C><02><00><> // Open-ended ranges<65><00><> span_of!(Struct, .. end)<29><00><> span_of!(Struct, start ..)<29><<3C><01> <1C><02>d<> ### Note<74><00><>_\ This macro uses recursion in order to resolve the range expressions, so there is a limit to<74><00><>%" the complexity of the expression.<2E><00><>QN In order to raise the limit, the compiler's recursion limit should be lifted.<2E><1C><02>t<> ### Safety<74><00><>^[ The inter-field form mentioned above assumes that the first field is positioned before the<68>\<5C> second.<2E><00><>2/ This is only guaranteed for `repr(C)` structs.<2E><00><>]Z Usage with `repr(Rust)` structs may yield unexpected results, like downward-going ranges,<2C><00><>he spans that include unexpected fields, empty spans, or spans that include *unexpected* padding bytes.<2E><1C><02>|<7C><01> <<3C><01> ܥ use memoffset::span_of;<3B><1C><02>t<> #[repr(C)]<5D><00><> struct Florp {<7B>t<><01>,<2C><01><1C><02>t<><01>y<00><> struct Blarg {<7B><00><> x: [u32; 2],<2C><00><> y: [u8; 56],<2C><00><> z: Florp,<2C><00><> egg: [[u8; 4]; 4]<5D>,<2C><01><1C><02><00><>,) assert_eq!(0..84, span_of!(Blarg, ..));<3B><00><>.+ assert_eq!(0..8, span_of!(Blarg, .. y));<3B><00><>/, assert_eq!(0..64, span_of!(Blarg, ..= y));<3B><00><>+( assert_eq!(0..8, span_of!(Blarg, x));<3B><00><>.+ assert_eq!(8..84, span_of!(Blarg, y ..));<3B><00><>0- assert_eq!(0..8, span_of!(Blarg, x .. y));<3B><00><>1. assert_eq!(0..64, span_of!(Blarg, x ..= y));<3B><<3C><01> 0<><30>#<13> <0C> <0C>-4 <0C> <0C>  <0C>8helper<65>4<>, <0C>8root<6F>$<24>& <0C>8<02>,<2C>$ <0C> <0C> <0C>#<1C>*<14> <0C> <0C>8<01>̿ <0C> <0C> <0C>7Expected a range, found '..='<27><00><>% <0C> <0C> <0C>  <0C>8<01>4<>, <0C>8<01>$<24>& <0C>8<02>,<2C>$ <0C> <0C> <0C>!<14>*<14> <0C> <0C>8<01>̰ <0C> <0C> <0C>7Expected a range, found '..'<27><00><>% <0C> <0C> <0C> <0C>8<01>4<>, <0C>8<01>$<24>& <0C>8<02>,<2C>$ <0C>, <0C>8<01>24<>& <0C>8<02> $<24>$ <0C> <0C> <0C>!<14>*<14> <0C> <0C> <0C> <0C> <0C> <0C>, <0C>8<01>$<24>8<14>8<02>,<2C>$ <0C>, <0C>8<01>$<24>8<14>8<02>,<2C> <0C>, <0C>8,<2C>'<14>8<01>4<>'<14>8<01>|<7C> <0C> <0C>, <0C>8<01>$<24>% <0C> <0C> <0C> <0C>8<01>4<>, <0C>8<01>$<24>& <0C>8<02>,<2C>$ <0C>, <0C>8<01>24<>& <0C>8<02> $<24>$ <0C> <0C> <0C>#<1C>, <0C>8<02><1C>& <0C>8<02><14>*<14> <0C> <0C> <0C> <0C>8<1C>8<02><1C> <0C>8<01>L<> <0C> <0C> <0C>, <0C>8<01>$<24>$ <0C>, <0C>8<01>24<>$ <0C>, <0C>8<02><1C>% <0C> <0C> <0C>, <0C>8<01>$<24>8<14>8<02>,<2C>$ <0C>8<02><1C>8<14>8<02>,<2C> <0C>, <0C>8,<2C>'<14>8<01>4<>'<14>8<01>|<7C> <0C> <0C>8<02><1C>% <0C> <0C> <0C> <0C>8<01>4<>, <0C>8<01>$<24>& <0C>8<02>,<2C>$ <0C>, <0C>8<01>24<>& <0C>8<02> $<24>$ <0C> <0C> <0C>!<14>, <0C>8<02><1C>& <0C>8<02><14>*<14> <0C> <0C> <0C> <0C> <0C> <0C>
, <0C>8<01>$<24>8<14>8<02>,<2C>$ <0C>8<01>L<> <0C> <0C> <0C>, <0C>8<01>$<24>$ <0C>, <0C>8<01>24<>$ <0C>, <0C>8<02><1C>8<14>8<02>,<2C>% <0C> <0C>  <0C>  <0C> 8<01>4<> , <0C> 8<01>$<24> & <0C> 8<02>,<2C> $ <0C> , <0C> 8<01>24<> & <0C> 8<02> $<24> $ <0C> + <0C> , <0C> 8begin<69>,<2C> & <0C> 8<02><14>  <0C>  <0C> #<1C> , <0C> 8<02><1C> & <0C> 8<02><14> *<14>  <0C>  <0C>" <0C>  <0C>"8<1C> 8<01><>,<2C>  <0C>!8<01>L<>! <0C>! <0C>! <0C>!, <0C>!8<01>$<24>!$ <0C>!, <0C>!8<01>24<>!$ <0C>!, <0C>!8<01><>,<2C>!% <0C>!8<1C>!8<02><1C>! <0C>!8<01>L<>! <0C>! <0C>! <0C>!, <0C>!8<01>$<24>!$ <0C>!, <0C>!8<01>24<>!$ <0C>!, <0C>!8<02><1C>!% <0C>! <0C>! <0C>"8<01><>,<2C>!8<14>!8<02>,<2C>!$ <0C>!8<02><1C>!8<14>!8<02>,<2C>! <0C>", <0C>"8,<2C>"'<14>"8<01>4<>"'<14>"8<01>|<7C>" <0C>" <0C>"8<02><1C>"% <0C>" <0C>" <0C>" <0C>"8<01>4<>", <0C>"8<01>$<24>"& <0C>"8<02>,<2C>"$ <0C>", <0C>"8<01>24<>"& <0C>"8<02> $<24>"$ <0C>"+ <0C>", <0C>"8<01><>,<2C>"& <0C>"8<02><14>" <0C>" <0C>"!<14>", <0C>"8<02><1C>"& <0C>"8<02><14>"*<14>" <0C>" <0C># <0C>" <0C># <0C># <0C># 8<01>L<># <0C># <0C># <0C>#, <0C>#8<01>$<24>#$ <0C>#, <0C>#8<01>24<>#$ <0C>#, <0C>#8<01><>,<2C>#8<14>#8<02>,<2C>#$ <0C>#8<01>L<># <0C># <0C># <0C>#, <0C>#8<01>$<24>#$ <0C>#, <0C>#8<01>24<>#$ <0C>#, <0C>#8<02><1C>#8<14>#8<02>,<2C>#% <0C># <0C>$ <0C>$ <0C>$8<01>4<>$, <0C>$8<01>$<24>$& <0C>$8<02>,<2C>$$ <0C>$, <0C>$8<01>24<>$& <0C>$8<02> $<24>$$ <0C>$+ <0C>$, <0C>$8<01><>,<2C>$& <0C>$8<02><14>$ <0C>$ <0C>$!<14>$*<14>$ <0C>$ <0C>% <0C>$ <0C>% <0C>$ <0C>%8<01>L<>$ <0C>$ <0C>$ <0C>$, <0C>$8<01>$<24>$$ <0C>$, <0C>$8<01>24<>$$ <0C>$, <0C>$8<01><>,<2C>$8<14>$8<02>,<2C>%$ <0C>%, <0C>%8<01>$<24>%8<14>%8<02>,<2C>% <0C>%, <0C>%8,<2C>%'<14>%8<01>4<>%'<14>%8<01>|<7C>% <0C>% <0C>%, <0C>%8<01>$<24>%% <0C>% <0C>% <0C>& <0C>%8<01>4<>%, <0C>%8<01>$<24>%& <0C>%8<02>,<2C>%$ <0C>%, <0C>%8<01>24<>%& <0C>%8<02> $<24>%$ <0C>%+ <0C>%, <0C>%8<01><>,<2C>%& <0C>&8<02><14>& <0C>& <0C>&#<1C>&*<14>& <0C>& <0C>' <0C>& <0C>'8<01>̜& <0C>& <0C>& <0C>'7QFound inclusive range to the end of a struct. Did you mean '..' instead of '..='?<3F><00><>&S% <0C>' <0C>' <0C>' <0C>'8<01>4<>', <0C>'8<01>$<24>'& <0C>'8<02>,<2C>'$ <0C>', <0C>'8<01>24<>'& <0C>'8<02> $<24>'$ <0C>'+ <0C>', <0C>'8<02>,<2C>'& <0C>'8<02><14>' <0C>' <0C>'*<14>' <0C>' <0C>) <0C>' <0C>)8<1C>'8<02>,<2C>( <0C>(8<01>L<>( <0C>( <0C>( <0C>(, <0C>(8<01>$<24>($ <0C>(, <0C>(8<01>24<>($ <0C>(, <0C>(8<02>,<2C>(% <0C>( <0C>( <0C>(8<02>,<2C>(8<14>(8<02>,<2C>($ <0C>(8<02>,<2C>(8<14>(8<02>,<2C>( <0C>(, <0C>(8,<2C>('<14>(8<01>4<>('<14>(8<01>|<7C>( <0C>( <0C>(8<02>,<2C>(% <0C>) <0C>) <0C>) <0C>)8<01>4<>), <0C>)8<01>$<24>)& <0C>)8<02>,<2C>)$ <0C>), <0C>)8<01>24<>)& <0C>)8<02> $<24>)$ <0C>), <0C>) <0C>) <0C>)+ <0C>), <0C>)8<01><>,<2C>)& <0C>)8<02><14>) <0C>) <0C>) <0C>), <0C>)8<02><14>)& <0C>)8<02><14>), <0C>) <0C>) <0C>), <0C>)8rest<73>$<24>)& <0C>)8<02><14>) <0C>)*<14>) <0C>) <0C>* <0C>) <0C>*8<01><<3C>) <0C>) <0C>) <0C>* <0C>)8<01>4<>*, <0C>*8<01>$<24>*$ <0C>*, <0C>*8<01>24<>*$ <0C>*, <0C>* <0C>* <0C>*+ <0C>*, <0C>*8<01><>,<2C>* <0C>*+ <0C>*, <0C>*8<02><14>* <0C>* <0C>*, <0C>* <0C>* <0C>*, <0C>*8<01><>$<24>* <0C>*% <0C>* <0C>* <0C>* <0C>*8<01>4<>*, <0C>*8<01>$<24>*& <0C>*8<02>,<2C>*$ <0C>*, <0C>*8<01>24<>*& <0C>*8<02> $<24>*$ <0C>* <0C>* <0C>*, <0C>*8<02><14>*& <0C>*8<02><14>*, <0C>* <0C>* <0C>*, <0C>*8<01><>$<24>*& <0C>*8<02><14>* <0C>**<14>* <0C>+ <0C>+ <0C>+ <0C>+8<01><<3C>+ <0C>+ <0C>+ <0C>+ <0C>+8<01>4<>+, <0C>+8<01>$<24>+$ <0C>+, <0C>+8<01>24<>+$ <0C>++ <0C>+, <0C>+8<02><14>+ <0C>+ <0C>+, <0C>+ <0C>+ <0C>+, <0C>+8<01><>$<24>+ <0C>+% <0C>+ <0C>+ <0C>+, <0C>+8sty<74><1C>+& <0C>+8<02> $<24>+$ <0C>+, <0C>+ <0C>+ <0C>+, <0C>+8exp<78><1C>+& <0C>+8<02><14>+ <0C>+*<14>+ <0C>+ <0C>- <0C>+ <0C>-8<01>ħ, <0C>, <0C>, <0C>,8<01>$<24>,$ <0C>,, <0C>,8<01><><1C>,% <0C>,8<1C>,8<01>2$<24>, <0C>,8<01>$<24>,8<14>,8<02>,<2C>,% <0C>,8<1C>, <0C>, <0C>-
g<EFBFBD>r<7F><E8AF83><EFBFBD><EFBFBD><EFBFBD><1E><03>ʇ<EFBFBD>H<0E><>u<EFBFBD><75><16>qϴuTA<10><>Q;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD><58>><3E><>jK<6A>/`N<>r<EFBFBD><72>3<1C><>_<EFBFBD>4<EFBFBD>.<2E><><EFBFBD>6<EFBFBD><36>N<EFBFBD><4E><EFBFBD>5<EFBFBD>
<EFBFBD>a<14><><06>F<EFBFBD>9#<23><0E><><16><><EFBFBD><EFBFBD>B<>nd<> =1<><18><>s<>!x<>v<EFBFBD>z<EFBFBD>`<60><><EFBFBD>8<EFBFBD>1f]Y<><59>\<5C>(<28>$kI͵\y@#<23>'<27><>8<>Q<EFBFBD><51><EFBFBD><EFBFBD><EFBFBD>8<1B>Z<7F><5A><EFBFBD>s<EFBFBD>Yk<59>s<EFBFBD><73><1C>
F <01>"<00> | e r <0A> <12> :<1B> 
""<22>$<24>& (<28>,M
.i0<>1<>4<>4S>6<>
E m "<00>4 )))))))))))))))))<29>
D  k <0A> <0A>S<13> <19><1B>"<22>"%' ,4-<2D>/<2F>0<EFBFBD>3<EFBFBD>4<EFBFBD>5`?<3F><05> <0B> <0B> k q w T a m <0A><12>6<1B>""<22>$<24>&(<28>,I.d0<64>1<EFBFBD>4<EFBFBD>4O6<00> @ o u <0C> V g <0A> <0A>P<13>
<19><1B> "<22>" %',1-<2D>/<2F>0<EFBFBD>3<EFBFBD>4<EFBFBD>5]?4 ^ ! X F    ` <00><00>M <0A>
> e
"<00>4<EFBFBD><02><02><02><02><02><02> $+29@G]sz<03><03><03><03><03><03><03><03><03><03><00> <0A>T<13><19><1B><00>"%'!,5-<2D>/<2F>0<EFBFBD>3<00>5a?<00>[V<13><13><13><13><02> ˓<>8:׌<>m<>i<>T[[[ [-[[D[<5B>ODHT @<02><>ϴuTA<10><><00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
g<EFBFBD>r<72>f]Y<><59>\<5C>(<00><03>ʇ<EFBFBD>H<00>$kI͵\yK<>/`N<>r<EFBFBD> ˓<>8:<3A>MIb<><62><EFBFBD><EFBFBD><00><>u<EFBFBD><75><16>q<1B>Z<7F><5A><EFBFBD>s<00><>N<EFBFBD><4E><EFBFBD>5<EFBFBD><00>3<1C><>_ <00><18><>s<><00>nd<> =1!x<>v<EFBFBD>z<EFBFBD>F<>9#<23><0E>@#<23>'<27><>8(&,<2C><> <0A>Q;<3B><><EFBFBD><EFBFBD><EFBFBD> <00><16><><EFBFBD><EFBFBD>B
<EFBFBD>a<14><><06><00>4<EFBFBD>.<2E><><EFBFBD>6 <00>Yk<59>s<EFBFBD><73>V<>+<<3C><><EFBFBD><EFBFBD>`<60><><EFBFBD>8<EFBFBD>1<00>Q<EFBFBD><51><EFBFBD><EFBFBD><EFBFBD>8<00>X<EFBFBD><58>><3E><>j
<00>zt<14><><07><><EFBFBD><EFBFBD><EFBFBD><Gk}<7D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>89w<39>/M<><4D><0E>w<1C><><EFBFBD><EFBFBD>E<EFBFBD>z!<21><>^<5E><><EFBFBD><0E><><1C><><EFBFBD><EFBFBD>5<EFBFBD><35>zt<14><><07><><EFBFBD><EFBFBD><EFBFBD><Gk^C:\Users\xiaji\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\memoffset-0.9.1\src\lib.rs<72>SC:\Users\xiaji\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\memoffset-0.9.1<EFBFBD>^C:\Users\xiaji\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\memoffset-0.9.1\src\lib.rs<72> <20><>}<7D><>\<5C><>̏<EFBFBD><12><><00><15>V#PQPMI<R3NLOJQQ Lq).(EG^ND*  8c9   ܨ<><DCA8>ێ<><DB8E><EFBFBD>R<EFBFBD><52><EFBFBD>k<EFBFBD>dC:\Users\xiaji\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\memoffset-0.9.1\src\raw_field.rs<72>SC:\Users\xiaji\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\memoffset-0.9.1<EFBFBD>dC:\Users\xiaji\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\memoffset-0.9.1\src\raw_field.rs<72> <20><1A>Մ<EFBFBD><D584><EFBFBD>@8i<38>1<18><00><<3C><<3C>.PQPMI<R3NLOJQQ B#-#[C%J,-'!IK1%'!IK%%?2,-24-20L$29-!IK4X %
-!IKX %
NE$03G"R,QE
N$E$.9G"R,QE
N$E \mQC$09G"R,QE
<00>i<EFBFBD>~gc<11>@<40>o7<0F>ydC:\Users\xiaji\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\memoffset-0.9.1\src\offset_of.rs<72>SC:\Users\xiaji\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\memoffset-0.9.1<EFBFBD>dC:\Users\xiaji\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\memoffset-0.9.1\src\offset_of.rs<72> <20>tH#<23><><E<>^<5E><>bHQ0<00>_<EFBFBD>_<EFBFBD>#PQPMI<R3NLOJQQ U#(!@EDB%J3(!KPN8-$JGPdP-#-$*$N6?<*$9U'' FHXSW[$#H>5$0"N6E<$0"9N$Y$"H>;$0$N6E<$0$9U$0 mQC$$H>; ^ 
+++ 
+++ ++ U
111 
0 !!/&
( %$'.0  
 $LLL $$%0J 0J 0J  
$RRR0 
6 )&
60 &
-<00> U*[k3U<33><55><EFBFBD><EFBFBD><EFBFBD>;bC:\Users\xiaji\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\memoffset-0.9.1\src\span_of.rs<72>SC:\Users\xiaji\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\memoffset-0.9.1<EFBFBD>bC:\Users\xiaji\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\memoffset-0.9.1\src\span_of.rs<72> <20><><N<><4E>o<EFBFBD>`is
<00>C<EFBFBD>C<EFBFBD>#PQPMI<R3NLOJQQ +s)&Z>Mf)+, `&R_ 3^i-/0,/12$(D&C$5B>4N=D)J84NI64"A6BB$a>8RVHF<#/"F  
,,0 C
,,0 

$.0G23 

/0/10123C!8 !8 !8 #: "5 #R <00><>.{8V<38>AK<41><4B><EFBFBD>c<EFBFBD><63><EFBFBD><00>^<5E>`<60>b<EFBFBD>ex86_64-pc-windows-gnu<6E><75>4.ڑZ<DA91><5A>AQ<41>w<EFBFBD> memoffset<65>-82a1ec9d252caded<65>˓<>8:<3A><02><>R ٬<00> TN888488"W<04>rust-end-file@feat.00<00><>/0 0 0 0 644 2000 `
BC<EFBFBD><EFBFBD>5b 0A<>
<EFBFBD>` <0B> q<>q<>x<><06>P<0F>@mn<>t<>q<><06>@<0F> <0E>PB S! <00> !"<07>#<23>A<EFBFBD>I29<32><01> %<04>b<EFBFBD>EB<> BD28K
2"<22>H<EFBFBD>d!C<><43>G2B$q<>$)@<40><>K2d<32><08> #B<><42>B*(*<2A>Q\ #<23>@<40> <19><07>"<22><>$2b,9Ȑ#<23><12>:dDG<44>"CF<00> "f<10>B<EFBFBD><42>RB<52><42><EFBFBD>q<EFBFBD>PH
&B<>B"&<08><><EFBFBD>90*|<7C>;<3B>;<3B><>6<EFBFBD><36>qh<71>{Hw <20>w<EFBFBD><77>yh<79>sp<73>z<EFBFBD><7A>
<EFBFBD><EFBFBD><06><><07><><06> wz0r<>s mrpq<>s z0r<><06> w z`t<>v@m<>v@z`t<><06>r<>zr<>m`xzr<>m<>x<>q`z0r<>v@m0 q x<><11><> <0C><><EFBFBD><EFBFBD>l<EFBFBD><6C><EFBFBD>.<2E>m<16><>p<EFBFBD><70>l,<2C><>`<60><><EFBFBD>\w<>$6] <00>2<1E>L<><4C> &G<>C<> <20><00><00>3<08><1C><>f=<3D>C8<43>ÌB<C38C>yxs<>q <0C><0F><0E><>3 B<1E><>Ρf0=<3D>C8<43><38><1B>=<3D>C=<3D>=<3D>x<EFBFBD>tp{yH<79>ppzpvx<76>p <20><19><0E><><0E>0n0<0F><><0E>P3<10><1D>!<1C>!<1D>af0<66>;<3B><>;<3B>C9<43><<3C><><<3C>;<3B><>v`{h7h<37>rh7<><37>p<EFBFBD><70>p`v(v<>vx<76>w<EFBFBD><77>_<08>q<18>r<EFBFBD><72>y<EFBFBD><79>,<2C><><0E><><0E><><0E>0<1C><>̡<1C><><1C>a<1C>!ā<1D>a֐C9<43>C9<43>C9<43>C9<43><39>8<EFBFBD>C8<43>;<3B><>/<2F><><<3C><>;<3B>;<3B><> <0C>i<EFBFBD>pX<70>rp<72>thx`<60>t<18>t<EFBFBD><74><19>S<0F><0F>P<0E><><0E>@<0F> <0E>P3 (<1D><><1E>A<1E>!܁<1E><><1C><><1D>fQ8<51>C:<3A><>;<3B>P$v`{h7`<60>wxx<>QL<51><4C><0F>P3j<1E>a<1C>!<1D><>~<1E><><1C>!<1D>aT<><54>8<EFBFBD><38>;<3B>C=<3D>C9<43><39><<3C>C;<3B><>;<3B>Ì<EFBFBD>
<EFBFBD>y<EFBFBD><EFBFBD>w<18>tz(r<><72>\<5C><0E><><0E>P<0E>0#<23><>A<1E><><17><><1D>fH;<3B><>=<3D><><1B><>8<EFBFBD>C9<43><39><<3C><>9<EFBFBD><39>;<3B><<3C>H<EFBFBD>qv`q<08>qX<71><19><><0E>`<0F><><06> <0F>0<0F> <0F>Pn<0E>0<0E>0<0F><><06><><0E>P<0E>0#<23><>a<1D><><17>!<1D>!<1D>!<1D>!<1D>!f <20>;<3B>C=<3D>9<><39>9<EFBFBD>X<EFBFBD>ppwxzzH<7A>wp<77><19><><0E>0<0F><><0E>@<0F><><0F>0<EFBFBD>s<>w<18>_<EFBFBD><5F>pp<70>t<EFBFBD><74>tЇr<D087><72><EFBFBD>A9<41><39>8<EFBFBD>C=<3D>C9<43>ʡ<1D>A<1E><>f$c0<0E><><0E>0<0F>@<0F>0C!<21>usH<73>_<EFBFBD><5F>|<7C><>r<EFBFBD><72><EFBFBD><<3C><><<3C><>8<EFBFBD>C:<3A><>;<3B>Ì<EFBFBD> H!Ba<1E>!<1D><>R<>fLg0<0E> <0F><><06>P<0F>0<0F>@<0E><><06> <0F><><0E>0<EFBFBD>@<40>vhy<08>R<1A><>;<3B>;<3B>C8̃<1B>9<><39><<3C><<3C><>8<EFBFBD>y &<00>H C<>  dd<64><64> <20><>2FFF<13>B<EFBFBD><42><EFBFBD><EFBFBD><EFBFBD>9B<39><42><EFBFBD>@<40><00>PIC Levelrustc version 1.94.1 (e408947bf 2026-03-25)#0<>3 C@<40>2<12><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\<5C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\<5C><><EFBFBD><EFBFBD><EFBFBD>F <09>T<EFBFBD><54><EFBFBD><EFBFBD>\<5C><><EFBFBD><EFBFBD><EFBFBD>F
<00>-
r(<28>w<EFBFBD>zXp<58>C=<3D><>8<EFBFBD>C9<43>Â<EFBFBD>ơ <0A>A<1E><><1D>!<1D>!<1D><>4<>`<0E>P<0F> <0F>@<0F> <0F>P<0E><><EFBFBD><EFBFBD>y(<28>p`vx<76>qz(rXp<58><70>8<EFBFBD>;<3B><>=<3D><>k<1C>!<1C><><1C> <1C>a<1C> <1C><><1E>aС<1C>a<1D>a<EFBFBD><0F> <0F>P<0F><> <0B>usH<73><05>8<EFBFBD><38>;<3B>C9<43><39>9<EFBFBD><39>;<3B>C9<43>=<3D>;<00><07><<3C><>;<3B>;<3B>=<3D><><<3C>C8<43><38><00> <00><04>Pq 2"<00><>?<3F>Thӝ<68><D39D><EFBFBD><EFBFBD><EFBFBD>|F<> <0A>Z<EFBFBD>}<7D> e <03><>BLXXXBW wX] !<03><>21.1.8-rust-1.94.1-stable 00d23d10dc48c6bb9d57ba96d4a748d85d77d0c7x86_64-pc-windows-gnumemoffset.d73a388e93cb020f-cgu.0