ELF                      @                 @ 8  @ # !       @       @       @                                                                                                                                                  p      p             Rtd                                            Ptd                        <       <              Qtd                                                                              8       8                       Android %            GNU 's{FRZOAz6(                        2                      A                      N                                                   `          c    h                                TD
                                           rust_metadata_static_assertions_351233de52bd9ed6 __cxa_finalize __cxa_atexit __register_atfork libc.so LIBC libstatic_assertions.dylib.so      APS2                                                                           ;<         T      h      |                               zR |       x             ,   p             @   `             T   P             h   H             |   L                   @X   _@    _  ` V    ՃV           {  @b      @   @   @                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           `              m                     o            o          o           o                               H                                         8                           0      
              o                                                   o          o          o                                                   @      @      @      rustc version 1.93.1-dev (01f6ddf75 2026-02-11) (Android Rust Toolchain version 14933020-linux-x86) Android (14863223, +pgo, +bolt, +lto, +mlgo, based on r584948b) clang version 22.0.1 (https://android.googlesource.com/toolchain/llvm-project 2d65e4108033380e6fe8e08b1f1826cd2bfb0c99)  Linker: LLD 22.0.1 (/mnt/disks/build-disk/src/googleplex-android/llvm-r584948-release/out/llvm-project/llvm 2d65e4108033380e6fe8e08b1f1826cd2bfb0c99) rust   
      rust   
D      [rustc 1.93.1-dev (01f6ddf75 2026-02-11) (Android Rust Toolchain version 14933020-linux-x86)*˝N   ӥLBٿ   \hRꋔ Y   i@|W
   	|pȲΦxJ    $l3< P!97,    	hashbrownpp|S\M    
std_detect;!QRX    rustc_demanglec.0"g    cfg_ifSLU   {"tĪg=/                      _core   
assert_cfg    assert_eq_align    assert_eq_size   assert_eq_size_ptr  assert_eq_size_val   assert_fields    assert_impl  assert_impl_one  assert_impl_all  assert_impl_any  assert_not_impl_all  assert_not_impl_any   assert_obj_safe    assert_trait  assert_trait_sub_all  assert_trait_super_all   assert_type  assert_type_eq_all  assert_type_ne_all   const_assert   const_assert_eq  const_assert_ne       ,      T   |   t	  	   
    l
   |   |   |'   H   \   |   
            d	   |	   |	           [![Banner](https://raw.githubusercontent.com/nvzqz/static-assertions-rs/assets/Banner.png)](https://github.com/nvzqz/static-assertions-rs)     ē   <div align="center">  =  :     <a href="https://crates.io/crates/static_assertions">  ]  Z         <img src="https://img.shields.io/crates/d/static_assertions.svg" alt="Downloads">  d  	     </a>  C  @     <a href="https://travis-ci.org/nvzqz/static-assertions-rs">  m  j         <img src="https://travis-ci.org/nvzqz/static-assertions-rs.svg?branch=master" alt="Build Status">  d   [  X     <img src="https://img.shields.io/badge/rustc-^1.37.0-blue.svg" alt="rustc ^1.37.0">         <br><br>  T   </div>     N  K Assertions to ensure correct assumptions about constants, types, and more.     M  J _All_ checks provided by this crate are performed at [compile-time]. This  I  F allows for finding errors quickly and early when it comes to ensuring  J  G certain features or aspects of a codebase. These macros are especially  P  M important when exposing a public API that requires types to be the same size      or implement certain traits.     \   # Usage     O  L This crate is available [on crates.io][crate] and can be used by adding the  	/  , following to your project's [`Cargo.toml`]:  	   \	   ```toml  	   [dependencies]  	   static_assertions = "1.1.0"  <
   ```  
   
8  5 and this to your crate root (`main.rs` or `lib.rs`):  
   <
   
   #[macro_use]  
#    extern crate static_assertions;     # fn main() {}  <      M  J When using [Rust 2018 edition][2018], the following shorthand can help if  )  & having `#[macro_use]` is undesirable.        ```edition2018  )  & extern crate static_assertions as sa;        sa::const_assert!(true);  <      t   # Examples     7  4 Very thorough examples are provided in the docs for  P  M [each individual macro](#macros). Failure case examples are also documented.     l  
 # Changes     `  ] See [`CHANGELOG.md`](https://github.com/nvzqz/static-assertions-rs/blob/master/CHANGELOG.md)  K  H for an exhaustive list of what has changed from one version to another.     d  	 # Donate     N  K This project is made freely available (as in free beer), but unfortunately  N  K not all beer is free! So, if you would like to buy me a beer (or coffee or  K  H *more*), then consider supporting my work that's benefited your project     and thousands of others.     ,  ) <a href="https://www.patreon.com/nvzqz">  v  s     <img src="https://c5.patreon.com/external/logo/become_a_patron_button.png" alt="Become a Patron!" height="35">  D   </a>  *  ' <a href="https://www.paypal.me/nvzqz">  n  k     <img src="https://buymecoffee.intm.org/img/button-paypal-white.png" alt="Buy me a coffee" height="35">  D !     G  D [Rust 1.37]: https://blog.rust-lang.org/2019/08/15/Rust-1.37.0.html  X  U [2018]: https://blog.rust-lang.org/2018/12/06/Rust-1.31-and-rust-2018.html#rust-2018  7  4 [crate]: https://crates.io/crates/static_assertions  >  ; [compile-time]: https://en.wikipedia.org/wiki/Compile_time  K  H [`Cargo.toml`]: https://doc.rust-lang.org/cargo/reference/manifest.html     8 l       7 'https://docs.rs/static_assertions/1.1.0 ) B      8 l       7 Lhttps://raw.githubusercontent.com/nvzqz/static-assertions-rs/assets/Icon.png N g                         #  	 2  
 A   P   _   n   }                                  t   T          . + Asserts that a given configuration is set.   /   t3   B   FP M A project will simply fail to compile if the given configuration is not set.      <   ? < # #[macro_use] extern crate static_assertions; fn main() {}     // We're not masochists   > ; # #[cfg(not(target_pointer_width = "16"))] // Just in case   2 / assert_cfg!(not(target_pointer_width = "16"));   <      J G If a project does not support a set of configurations, you may want to   P M report why. There is the option of providing a compile error message string:      <   ?,      # #[cfg(any(unix, windows))]   Q N assert_cfg!(any(unix, windows), "There is only support for Unix or Windows");      0 - // User needs to specify a database back-end   6 3 # #[cfg(target_pointer_width = "0")] // Impossible   E B assert_cfg!(all(not(all(feature = "mysql", feature = "mongodb")),   E B                 any(    feature = "mysql", feature = "mongodb")),   N K             "Must exclusively use MySQL or MongoDB as database back-end");   <      N K Some configurations are impossible. For example, we can't be compiling for   , ) both macOS _and_ Windows simultaneously:   	   	  ```compile_fail   	?,   	( % assert_cfg!(all(target_os = "macos",   
+ (                 target_os = "windows"),   
8 5             "No, that's not how it works! ಠ_ಠ");   < &|          *   %    ,  , 8  & 8
 $  $  , 8 msg  & 8 $  ,  $ - *   +  8   8   ,  , 8   8 l 	  , 88  %  %    ,  , 8  & 8   *   +  8   8   ,  , 8   8 l 	  8 4 	  7 Cfg does not pass:   $  8 L 	  ,  , 8   %  %    |          . + Asserts that types are equal in alignment.   /   3N K This is useful when ensuring that pointer arithmetic is done correctly, or   O L when [FFI] requires a type to have the same alignment as some foreign type.      t      9 6 A `usize` has the same alignment as any pointer type:      <   ?,   0 - assert_eq_align!(usize, *const u8, *mut u8);   <      L I The following passes because `[i32; 4]` has the same alignment as `i32`:      <   ?,   $ ! assert_eq_align!([i32; 4], i32);   <      K H The following example fails to compile because `i32x4` explicitly has 4   & # times the alignment as `[i32; 4]`:      5   ?,   $ ! # #[allow(non_camel_case_types)]     #[repr(align(16))]     struct i32x4([i32; 4]);      & # assert_eq_align!(i32x4, [i32; 4]);   <      C @ [FFI]: https://en.wikipedia.org/wiki/Foreign_function_interface &|      
   , 8 x  & 8  $  ,  , 8 xs  & 8  $   ,  $ - * 
 	 8 ,  8  &  8         	
  8# 	  ,
 8 ,
 '
 8 ,
 '
 8 mem 
 '
 8 D
 %
  ,


  8 
  8 
 &
 

 	

   %
  8 D
 '
 
 ,
 8F 
 


    
 

	

   %
  8 D
 '
 
 ,
 8F 
 


   %
 
  %
  %
    t      ܐ	    ) & Asserts that types are equal in size.   *   .N K When performing operations such as pointer casts or dealing with [`usize`]   }O L versus [`u64`] versus [`u32`], the size of your types matter. That is where     this macro comes into play.        # Alternatives      O L There also exists [`assert_eq_size_val`](macro.assert_eq_size_val.html) and   P M [`assert_eq_size_ptr`](macro.assert_eq_size_ptr.html). Instead of specifying   P M types to compare, values' sizes can be directly compared against each other.      t      L I These three types, despite being very different, all have the same size:      <   ?,   . + assert_eq_size!([u8; 4], (u16, u16), u32);   <      P M The following example fails to compile because `u32` has 4 times the size of   L  `u8`:      5   ?,     assert_eq_size!(u32, u8);   <      A > [`usize`]: https://doc.rust-lang.org/std/primitive.usize.html   = : [`u64`]: https://doc.rust-lang.org/std/primitive.u64.html   = : [`u32`]: https://doc.rust-lang.org/std/primitive.u32.html &|	 #     	
		   ,	 8F 	 &	 8 	 $	  ,			  ,	 8F 	 &	 8 	 $	 	  ,			  $	 -	 *	 	
 	 8 ,	  8 	 &	  8 			     	  	 	
  ,		
  8 	  8 
   
  ,
 8 ,
 '
 8 ,
 '
 8H 
 '
 8 L
 '
 
 ,
 8F 
 $
  ,
 8F 
 
 %
 
  %
  %
    
5 2 Asserts that values pointed to are equal in size.   
   t      P M This especially is useful for when coercing pointers between different types   9 6 and ensuring the underlying values are the same size.      <   ?,   0 - fn operation(x: &(u32, u32), y: &[u16; 4]) {   "      assert_eq_size_ptr!(x, y);   t      // ...   ,  }   <      K H The following example fails to compile because byte arrays of different   !  lengths have different sizes:      5   2 / # #[macro_use] extern crate static_assertions;     # fn main() {     static BYTES: &[u8; 4] = &[         /* ... */   t      # 0; 4   4  ];         static TABLE: &[u8; 16] = &[   ^   |      # 0; 16   4^      & # assert_eq_size_ptr!(BYTES, TABLE);   < &| 2        , 8F  & 8 $ $  ,  , 8F  & 8 $ $   ,  $ - *   	 +  8 ,  8 unknown_lints l $  8 unsafe_code \ $  8 forget_copy \ $  8 useless_transmute  8   8        8" 4   8#   , 8 , ' 8 , ' 8H  $  8  %  8   8   8 $     8  ' 8 read $  , 8F  %  ,  8  ' 8 write ,   8   8 $ $  8H  ' 8 L  8  ' 8d $  , 8F  %   8H  ' 8 4  8 $ %  %    * ' Asserts that values are equal in size.      ? < This macro doesn't consume its arguments and thus works for     non-[`Clone`]able values.      t      <   2]   ^     struct Byte(u8);        let x = 10u8;   6 3 let y = Byte(42); // Works for non-cloneable types        assert_eq_size_val!(x, y);   #   assert_eq_size_val!(x, y, 0u8);   <  # }   <      J G Even though both values are 0, they are of types with different sizes:      5   2]   ^   #   assert_eq_size_val!(0u8, 0u32);   <k   <      C @ [`Clone`]: https://doc.rust-lang.org/std/clone/trait.Clone.html &#A        , 8F  & 8 $ $  ,  , 8F  & 8 $ $   ,  $ - *    8  	   , 8F  $  ,   , 8F  $  %    l      Ԁ
    / , Asserts that the type has the given fields.   0   t4   C   GM J One common use case is when types have fields defined multiple times as a   H E result of `#[cfg]`. This can be an issue when exposing a public API.      <   2]     pub struct Ty {         #[cfg(windows)]         pub val1: u8,         #[cfg(not(windows))]         pub val1: usize,            #[cfg(unix)]         pub val2: u32,         #[cfg(not(unix))]         pub val2: usize,   ,\      * ' // Always have `val2` regardless of OS     assert_fields!(Ty: val2);   <      / , This macro even works with `enum` variants:      <   ?,   |  enum Data {   l 
     Val {             id: i32,   ̆          name: String,             bytes: [u8; 128],   T      },         Ptr(*const u8),   ,\      ) & assert_fields!(Data::Val: id, bytes);   <      b _ The following example fails to compile because [`Range`] does not have a field named `middle`:      5   ?,     use std::ops::Range;      ' $ assert_fields!(Range<u32>: middle);   <	   	   	B ? [`Range`]: https://doc.rust-lang.org/std/ops/struct.Range.html &|	 P     


   ,
 8 t 
 &
 8 ,
 '
 ,
 8 v 
 &
 8 ,
 &
  ,


  ,
 8 
 &
 8 ,
 $
 
 *
 
  +

  8 ,


  8b l
 $
  8 unneeded_field_pattern 
 8 ,  8  &  8           +  8 ,  8 L $  8 unreachable_patterns  8   8 4   8 , &  , 8{    8 ,  8 ,    , 	 , 8{  ' , 8|     , 8  &  8  $  !  *   $   8   *    %  %   	 , 8{  & 8 $ &  ,  , 8  & 8 , $  *   +  8 ,  8b l $  8}  8 ,  8  &  8           ,  8   , 8{    , 8  &  8  $  !  %   %  % |   \          D A Asserts that the type implements exactly one in a set of traits.   E   dI 	 Related:   V  - [`assert_impl_any!`]   q  - [`assert_impl_all!`]     - [`assert_not_impl_all!`]     - [`assert_not_impl_any!`]      t      P M Given some type `Foo`, it is expected to implement either `Snap`, `Crackle`,   l 
 or `Pop`:      5   : 7 # use static_assertions::assert_impl_one; fn main() {}   |  struct Foo;        trait Snap {}     trait Crackle {}     trait Pop {}      . + assert_impl_one!(Foo: Snap, Crackle, Pop);   <      = : If _only_ `Crackle` is implemented, the assertion passes:      <   :ۈ     # struct Foo;     # trait Snap {}     # trait Crackle {}     # trait Pop {}     impl Crackle for Foo {}      .   <      B ? If `Snap` or `Pop` is _also_ implemented, the assertion fails:      5   :ۈ   ͋              # impl Crackle for Foo {}     impl Pop for Foo {}      .   <	   	   	8 5 [`assert_impl_any!`]:     macro.assert_impl_any.html   	8 5 [`assert_impl_all!`]:     macro.assert_impl_all.html   
< 9 [`assert_not_impl_all!`]: macro.assert_not_impl_all.html   
< 9 [`assert_not_impl_any!`]: macro.assert_not_impl_any.html &| _        , 8F  & 8  &  ,  , 8{  & 8 $ $   ,  $ - *  	 8 ,  8  &  8           8 ,  8 AmbiguousIfMoreThanOne   8 A      8   8 	some_item L      ,   +  8 ,  8 L 8 4  8 Token , %  8 $  8  &  - 8 ,    , 8{    8̓   8 ,   8   8       8   8       , 8F   8   8̓   8   ' 8 L %  %  %    ? < Asserts that the type implements _all_ of the given traits.      C @ See [`assert_not_impl_all!`] for achieving the opposite effect.      t      O L This can be used to ensure types implement auto traits such as [`Send`] and   @ = [`Sync`], as well as traits with [blanket `impl`s][blanket].      <   ?,   & # assert_impl_all!(u32: Copy, Send);   ) & assert_impl_all!(&str: Into<String>);   <      P M The following example fails to compile because raw pointers do not implement   ? < [`Send`] since they cannot be moved between threads safely:      5   ?,   & # assert_impl_all!(*const u8: Send);   <      <   B ? [`Send`]: https://doc.rust-lang.org/std/marker/trait.Send.html   B ? [`Sync`]: https://doc.rust-lang.org/std/marker/trait.Sync.html   w t [blanket]: https://doc.rust-lang.org/book/ch10-02-traits.html#using-trait-bounds-to-conditionally-implement-methods &| n        , 8! $ & 8  &  ,  , 8 , & 8 $ $   ,  $ - *  	 8 ,  8  &  8           8   8 |  8  &  - 8 ,  ,    , 8 ,        8 | '  , 8! $    %  %  % '   ? < Asserts that the type implements _any_ of the given traits.      C @ See [`assert_not_impl_any!`] for achieving the opposite effect.      t        L I `u8` cannot be converted from `u16`, but it can be converted into `u16`:       <     ?,   !/ , assert_impl_any!(u8: From<u16>, Into<u16>);   <!   !   !O L The unit type cannot be converted from `u8` or `u16`, but it does implement   l" 
 [`Send`]:   "   <"   "?,   #4 1 assert_impl_any!((): From<u8>, From<u16>, Send);   <#   #   #P   $M J [`Send`] or [`Sync`] since they cannot be moved or shared between threads   \$  safely:   $   $5   %?,   %, ) assert_impl_any!(*const u8: Send, Sync);   <%   %   &<   &B   'B؞ &|' }     ':'(   ,' 8F ' &' 8 ' &'  ,(((  ,( 8{ ( &( 8 $( $( (  ,(((  $( -( *( (: 	 8 ,(  8 ( &(  8 (((     (  ( (: 6 8# (  ,( 8 ,( '( 8 ,( '( 8
 4( '( 8 PhantomData \( %(  8# (  ,( 8 ,( ') 8 ,) ') 8 ) ') 8 ,) %)  8 )  8 previous D)   )  8 AssertImplAnyFallback * %*  8 4*  8 * %*  8 4-  8 ActualAssertImplAnyToken - %-  8 ,.  8 AssertImplAnyToken . ..   8 $.  8 .  8 .  8 . ..   8 .  8 assert_impl_any_token . / 8 / &/  8 / ///   8 / &/  8 ///   ,//7  8 /  8 D/   / /7 1 8 4/  8 </ / 8 / $/  8 / //0  8 \/ / 8 0 0 $0  8 0 %0  8 $1 1 8 1 $1  8 2 2  8 ,2  8 2  8 <2 2 8 2 $2  8 2 2 23   8! $2  8 42   2  8 2 %2  8 2  8 ,222   2 8 $2 (2  2 8 $2 '2 8 42 23   3 8 $3  3 7 3  8 $5 5 8 5 &5  ,5 8{ 5 $5  8 5 5  8 <5 5 8 5 $5  8 5 5 56   8 5  8 _static_assertions_impl_any 556   5 8 $5 (6  8 ć6 66   8 ĺ6  8 <7 '7 7 ,7 8F 7 $7  8 7 777   8 \7 $7  8 D7 %7 7  8 99:  8 D9  9 8 9::   %:  %:  %: H    :K H Asserts that the type does **not** implement _all_ of the given traits.   :   ;I F This can be used to ensure types do not implement auto traits such as   ;M J [`Send`] and [`Sync`], as well as traits with [blanket `impl`s][blanket].   <   <J G Note that the combination of all provided traits is required to not be   <F C implemented. If you want to check that none of multiple traits are   =C @ implemented you should invoke [`assert_not_impl_any!`] instead.   =   t=   >   >O L Although `u32` implements `From<u16>`, it does not implement `Into<usize>`:   >   <>   >?,   ?6 3 assert_not_impl_all!(u32: From<u16>, Into<usize>);   <?   ?   ?L I The following example fails to compile since `u32` can be converted into   T@  `u64`.   @   @5   @?,   A) & assert_not_impl_all!(u32: Into<u64>);   <A   A   AP M The following compiles because [`Cell`] is not both [`Sync`] _and_ [`Send`]:   B   <B   B?,   B  use std::cell::Cell;   C   C0 - assert_not_impl_all!(Cell<u32>: Sync, Send);   <C   C   C1 . But it is [`Send`], so this fails to compile:   C   C5   D?,   D  # std::cell::Cell;   D* ' assert_not_impl_all!(Cell<u32>: Send);   <E   E   EB   EB؞   F<   FA > [`Cell`]: https://doc.rust-lang.org/std/cell/struct.Cell.html   Gw &|H      HOHH   ,H 8F H &H 8 H &H  ,HHH  ,H 8{ H &H 8 $H $H H  ,HHH  $H -H *H HO 	 8 ,H  8 I &I  8 III     I  I IO 8 8 ,I  8 AmbiguousIfImpl |I I 8 I I JJ   8 J  8 LJJJ   JJ   8 $K K 8 K &K  -K 8 ,K K  8 |K KKK   K  8 K  8 K KK   +LLL  8 ,LLL  8 LL 8 4L  8 Invalid <L %L  8 $L L 8 L &L  -L 8 ,L  ,LLM  L  ,M 8{ M M M  8 |M M 8 <M M  8 M  8 M MM   8 O  8 O   O  O ,O 8F O  8 O  8 |O O 8 O O 'O 8 LO %O  %O  %O \    OK H Asserts that the type does **not** implement _any_ of the given traits.   P   PI   PM   Q   QM J This macro causes a compilation failure if any of the provided individual   RP M traits are implemented for the type. If you want to check that a combination   RK H of traits is not implemented you should invoke [`assert_not_impl_all!`]   S; 8 instead. For single traits both macros behave the same.   S   tS   S   SM J If `u32` were to implement `Into` conversions for `usize` _and_ for `u8`,   T( % the following would fail to compile:   T   <T   T?,   U5 2 assert_not_impl_any!(u32: Into<usize>, Into<u8>);   <U   U   V/ , This is also good for simple one-off cases:   V   <V   V?,   V0 - assert_not_impl_any!(&'static mut u8: Copy);   <W   W   WL   X; 8 `u64` even though it can not be converted into a `u16`:   X   X5   X?,   Y4 1 assert_not_impl_any!(u32: Into<u64>, Into<u16>);   <Y   Y   YB   ZB؞   Z<   [w &|\      \d\\   ,\ 8F \ &\ 8 \ &\  ,\\\  ,\ 8{ \ &\ 8 $\ $\ \  ,\\\  $\ -\ *\ \d 	 8 ,\  8 \ &\  8 ]]]     ]  ] ]d % 8 ,]  8 |] ] 8 ] ] ]^   8 ^  8 L^^^   ^^   8 $_ _ 8 _ &_  -_ 8 ,_ _  8 |_ ___   _  8 _  8 _ __   ,aab ab  +aaa  8 ,aaa  8 La 8 4a  8 <a %a  8 $a a 8 a &a  -a 8 ,a  a  ,a 8{ a a  8 |b b 8 <b b  8 b  8 b bb   b  8 d  8 d   d  d ,d 8F d  8 d  8 |d d 8 d d 'd 8 Ld %d  %d  %d    |         44 1 Asserts that the traits support dynamic dispatch   i} z ([object-safety](https://doc.rust-lang.org/book/ch17-02-trait-objects.html#object-safety-is-required-for-trait-objects)).      I F This is useful for when changes are made to a trait that accidentally   L I prevent it from being used as an [object]. Such a case would be adding a   N K generic method and forgetting to add `where Self: Sized` after it. If left   N K unnoticed, that mistake will affect crate users and break both forward and   ܠ  backward compatibility.      t      P M When exposing a public API, it's important that traits that could previously   M J use dynamic dispatch can still do so in future compatible crate versions.      <   ?,     trait MySafeTrait {         fn foo(&self) -> u32;   ,\      3 0 assert_obj_safe!(std::fmt::Write, MySafeTrait);   <      9 6 Works with traits that are not in the calling module:      <   ?,   |  mod inner {         pub trait BasicTrait {             fn bar(&self);   L	      }   	% "     assert_obj_safe!(BasicTrait);   ,	\   	   	( % assert_obj_safe!(inner::BasicTrait);   <	   	   	N K The following example fails to compile because raw pointers cannot be sent   
   between threads safely:   
   
5   ?,   "  assert_impl!(*const u8, Send);   <      C @ The following example fails to compile because generics without   O L `where Self: Sized` are not allowed in [object-safe][object] trait methods:      5   ?,     trait MyUnsafeTrait {         fn baz<T>(&self) -> T;   ,\      $ ! assert_obj_safe!(MyUnsafeTrait);   <      5 2 When we fix that, the previous code will compile:      <   ?,      0 -     fn baz<T>(&self) -> T where Self: Sized;   ,\      $   <      s p [object]: https://doc.rust-lang.org/book/ch17-02-trait-objects.html#object-safety-is-required-for-trait-objects &|         ,  , 8F  & 8 $ $   ,  $ - *   ,  8 ,  8  &  8 4   , 8F       8 $ %   %    d      
!    A > Asserts that the trait is a child of all of the other traits.   B   dF   S!  - [`assert_trait_super_all!`]   u   ty      ? < All types that implement [`Copy`] must implement [`Clone`]:      <   ?,   ' $ assert_trait_sub_all!(Copy: Clone);   <      N K All types that implement [`Ord`] must implement [`PartialEq`], [`Eq`], and     [`PartialOrd`]:      <   ?,   : 7 assert_trait_sub_all!(Ord: PartialEq, Eq, PartialOrd);   <      M J The following example fails to compile because [`Eq`] is not required for         5   ?,   * ' assert_trait_sub_all!(PartialOrd: Eq);   <      B ? [`assert_trait_super_all!`]: macro.assert_trait_super_all.html      H E [`Copy`]:       https://doc.rust-lang.org/std/marker/trait.Copy.html   H E [`Clone`]:      https://doc.rust-lang.org/std/clone/trait.Clone.html   D A [`Ord`]:        https://doc.rust-lang.org/std/cmp/trait.Ord.html   K H [`PartialOrd`]: https://doc.rust-lang.org/std/cmp/trait.PartialOrd.html   	C @ [`Eq`]:         https://doc.rust-lang.org/std/cmp/trait.Eq.html   	J G [`PartialEq`]:  https://doc.rust-lang.org/std/cmp/trait.PartialEq.html &|
      

   ,
 8 
 &
 8 $
 &
  ,


  ,
 8 ,
 &
 8 $
 $
 
  ,  $ - *   8 ,  8  &         ,   +  8 ,  8 non_camel_case_types  8 ,  8 __Impl_Implication  &  , 8 ,    8 $  8  &  , 8    8   8   8       %  % #   B ? Asserts that the trait is a parent of all of the other traits.      d     - [`assert_trait_sub_all!`]      t      M J With this, traits `A` and `B` can both be tested to require [`Copy`] on a     single line:      <   4 1 # use static_assertions::assert_trait_super_all;     trait A: Copy {}     trait B: Copy {}      ( % assert_trait_super_all!(Copy: A, B);   <      ; 8 Otherwise, each sub-trait would require its own call to     [`assert_trait_sub_all!`]:      <   ?,     # trait A: Copy {}     # trait B: Copy {}   #   assert_trait_sub_all!(A: Copy);   #   assert_trait_sub_all!(B: Copy);   <      M J The following example fails to compile because trait `C` does not require   l 
 [`Copy`]:      5   4         t  trait C {}      + ( assert_trait_super_all!(Copy: A, B, C);   <      > ; [`assert_trait_sub_all!`]: macro.assert_trait_sub_all.html      B ? [`Copy`]: https://doc.rust-lang.org/std/marker/trait.Copy.html &#        , 8 , & 8 $ &  ,  , 8  & 8 $ $   ,  $ - *   ,  8  	  , 8  &  , 8 , %   % |   \      
    ? < Asserts that _all_ types in a list are equal to each other.   @   tD   S   WP M Often times, type aliases are used to express usage semantics via naming. In   P M some cases, the underlying type may differ based on platform. However, other   ; 8 types like [`c_float`] will always alias the same type.      <   ?,     use std::os::raw::c_float;      & # assert_type_eq_all!(c_float, f32);   <      M J This macro can also be used to compare types that involve lifetimes! Just     use `'static` in that case:      <   2]   ^     type Buf<'a> = &'a [u8];      5 2 assert_type_eq_all!(Buf<'static>, &'static [u8]);   <k   <      L I The following example fails to compile because `String` and `str` do not     refer to the same type:      5   ?,   % " assert_type_eq_all!(String, str);   <      G D This should also work the other way around, regardless of [`Deref`]     implementations.      5   ?,   	% " assert_type_eq_all!(str, String);   <	   	   	G D [`c_float`]: https://doc.rust-lang.org/std/os/raw/type.c_float.html   
A > [`Deref`]: https://doc.rust-lang.org/std/ops/trait.Deref.html &|
         , 8F  & 8  $  ,  , 8F  & 8  $   ,  $  *  	 8 ,  8  &  8           ,  4 8 ,  8 TypeEq 4    8! $  8 $ &  - 8 , %  8 $  8  &  - 8 ,   8ޛ 4  8   8     8! $  8 $     8 $ %  8   8   8  $  8 U      8$ ,  8  &  - 8 ,    8ޛ 4  8 $     8   $  8  &  - 8 , $    8  '  , 8F  $  , 8F     %    %  %    = : Asserts that _all_ types are **not** equal to each other.      t      M J Rust has all sorts of slices, but they represent different types of data:      <   ?,   * ' assert_type_ne_all!([u8], [u16], str);   <      N K The following example fails to compile because [`c_uchar`] is a type alias   |  for [`u8`]:      5   ?,     use std::os::raw::c_uchar;      * ' assert_type_ne_all!(c_uchar, u8, u32);   <      G D [`c_uchar`]: https://doc.rust-lang.org/std/os/raw/type.c_uchar.html   ; 8 [`u8`]: https://doc.rust-lang.org/std/primitive.u8.html &|         , 8F  & 8  $  ,  , 8 y  & 8  $   ,  $ - *  	 8 ,  8  &  8           8 ,  8 MutuallyExclusive     8 $  8   8   , 8F     ,  8 $  8   8   , 8      %  %    d      	    9	 6 Asserts that constant expressions evaluate to `true`.   :	   >K	 H Constant expressions can be ensured to have certain properties via this   P	 M macro If the expression evaluates to `false`, the file will fail to compile.   B	 ? This is synonymous to [`static_assert` in C++][static_assert].   	   	M   	   I	 F There also exists [`const_assert_eq`](macro.const_assert_eq.html) for   J	 G validating whether a sequence of expressions are equal to one another.   	   t	   	   N	 K A common use case is to guarantee properties about a constant value that's   #	   generated via meta-programming.   	   <	   ?	,   	  const VALUE: i32 = // ...   D	  # 3;   	   	  const_assert!(VALUE >= 2);   <	   	   (	 % Inputs are type-checked as booleans:   	   	5   ?	,   	  const_assert!(!0);   <	   	   B	 ? Despite this being a macro, we see this produces a type error:   	   T	  ```txt   	    | const_assert!(!0);   ?	 <   |               ^^ expected bool, found integral variable   <	    |   "	    = note: expected type `bool`   '	 $              found type `{integer}`   <		   		   	L	 I The following fails to compile because multiplying by 5 does not have an   		  identity property:   
	   
	5   
?	,   
	  const_assert!(5 * 5 == 5);   <	   	   L	 I [static_assert]: http://en.cppreference.com/w/cpp/language/static_assert &|	      				   ,	 8F 	 &	 8 $	  ,			  $	 -	 *	 		 	 +			  8 ,			  8b l	 $	  8 eq_op ,	 8 ,	  8 	 &	 		 		   %	  7 	  	  				  	 8 ,	  8 ASSERT 4	 &	  8 $	   	  ,	 8F 	 %	  8 4	  8 	  8 ,	  	 		  %	  %	 	   .	 + Asserts that constants are equal in value.   	   t	   	   :	 7 This works as a shorthand for `const_assert!(a == b)`:   	   <	   ?	,   	  const TWO: usize = 2;   	   +	 ( const_assert_eq!(TWO * TWO, TWO + TWO);   <	   	   M	 J Just because 2 × 2 = 2 + 2 doesn't mean it holds true for other numbers:   	   	5   ?	,   #	   const_assert_eq!(4 + 4, 4 * 4);   <	 &#	     				   ,	 8F 	 &	 8 $	 $	  ,	 8 	 &	 8 $	  ,			  $	 -	 *	 		  8 d	 				  ,	 8F 	  	  ,	 8 	 %	  %	 	   6	 3 Asserts that constants are **not** equal in value.   	   t	   	   :	 7 This works as a shorthand for `const_assert!(a != b)`:   	   <	   ?	,   	  const NUM: usize = 32;   	   $	 ! const_assert_ne!(NUM * NUM, 64);   <	   	   Q	 N The following example fails to compile because 2 is magic and 2 × 2 = 2 + 2:   	   	5   ?	,   #	   const_assert_ne!(2 + 2, 2 * 2);   <	 &#	     				   ,	 8F 	 &	 8 $	 $	  ,	 8 	 &	 8 $	  ,			  $	 -	 *	 		  8 d	 				  ,	 8F 	  	  ,	 8 	 %	  %	 - Rust 2018 edition  Bhttps://blog.rust-lang.org/2018/12/06/Rust-1.31-and-rust-2018.html  each individual macro   Banner   CHANGELOG.md  -https://github.com/nvzqz/static-assertions-rs  compile-time  *https://en.wikipedia.org/wiki/Compile_time   Fhttps://github.com/nvzqz/static-assertions-rs/blob/master/CHANGELOG.md  6https://blog.rust-lang.org/2019/08/15/Rust-1.37.0.html    on crates.io  *https://crates.io/crates/static_assertions  
Cargo.toml   7https://doc.rust-lang.org/cargo/reference/manifest.html                                             8https://en.wikipedia.org/wiki/Foreign_function_interface  FFI       $ 0https://doc.rust-lang.org/std/primitive.u32.html  macro.assert_eq_size_val.html  macro.assert_eq_size_ptr.html     u   4https://doc.rust-lang.org/std/clone/trait.Clone.html   2https://doc.rust-lang.org/std/primitive.usize.html   0https://doc.rust-lang.org/std/primitive.u64.html       u              u             3https://doc.rust-lang.org/std/ops/struct.Range.html        0 macro.assert_not_impl_all.html  assert_not_impl_any!  macro.assert_not_impl_any.html   4https://doc.rust-lang.org/std/marker/trait.Send.html  4https://doc.rust-lang.org/std/marker/trait.Sync.html   assert_impl_any!    blanket impls  macro.assert_impl_any.html  assert_impl_all!  macro.assert_impl_all.html    2https://doc.rust-lang.org/book/ch10-02-traits.html  3https://doc.rust-lang.org/std/cell/struct.Cell.html   assert_not_impl_all!    q                  q                    q    object  object-safe   object-safety  9https://doc.rust-lang.org/book/ch17-02-trait-objects.html            0 assert_trait_sub_all!  macro.assert_trait_sub_all.html   assert_trait_super_all!  !macro.assert_trait_super_all.html   4https://doc.rust-lang.org/std/marker/trait.Copy.html  u     0https://doc.rust-lang.org/std/cmp/trait.Ord.html  6https://doc.rust-lang.org/std/cmp/trait.PartialEq.html  /https://doc.rust-lang.org/std/cmp/trait.Eq.html   7https://doc.rust-lang.org/std/cmp/trait.PartialOrd.html            u                  u                   c_float   /https://doc.rust-lang.org/std/primitive.u8.html   6https://doc.rust-lang.org/std/os/raw/type.c_float.html  2https://doc.rust-lang.org/std/ops/trait.Deref.html    c_uchar    6https://doc.rust-lang.org/std/os/raw/type.c_uchar.html                     7http://en.cppreference.com/w/cpp/language/static_assert  macro.const_assert_eq.html  static_assert in C++                           ֞R35ﲌ$pD[bZǦNLIP|284k9~4sŨQ܅!xҔZeмhh[}O6B^M*qV#~{O"bb="׆WR121;mӖiLrv#ne`e{9e&W2`o1sm	B%WhՒȝqDYJx@M-\9fg'}܌Tb=Jc:Y$O         W o& # %!%r",3$ 8<48 B8BK$"R 1](f oFo. yG'y-  .9 3/#	         k         %         8 8    B                o   B y              )))))))))))))))))))      ]	#%*(06*8=BH#PUcPkox4y~	lFJLSk%%m,3 888BBK R\fno*yByր4+  H  PY#%*%06&8=BH PUbMkow0y~i      _
#%*)06,8=BH$PUcQk	ox6y~
	m      W    %      $8  B          o  .y         ,EY`r3Pb{            #  *506  =  H0PUc]k  x  ~ͅ    y)#            I        o                ^                                                 ֞R35mi   [W_sODHT         @                                    m	B%                           ~4s               LI   x@M-               Ւ               }܌T                           hh[}O   Zeм
   Wh   !xҔ	   \   c:Y                                       v   qDYJ   b="   [b               ~{O"b   6B^   ֞R35                                                    ﲌ$pD               ZǦN   #ne`e   {9e&W2   mӖiLr   M*qV#   9fg'   84k9   b=J               `o1s               ׆WR121;   P|2                                                                           ŨQ܅                                                                           o9d*'Fku,Z%1cw"'	9~%9 _o9d*'  E./external/rust/android-crates-io/crates/static_assertions/src/lib.rs  ]f|<)Vͅ4                 a>^Dn\ONJKQ!P0 9$N**8QaLOOL-w	+o	HY8?LCh  'ϒhg8G D    L./external/rust/android-crates-io/crates/static_assertions/src/assert_cfg.rs  K86}68                 1/Q@?3KQ@!R17FFOO-@),9*NBx	L1    Q./external/rust/android-crates-io/crates/static_assertions/src/assert_eq_align.rs  %R|g++                 

-/OP:@1M@%L'@%'D$O.I MoQ    P./external/rust/android-crates-io/crates/static_assertions/src/assert_eq_size.rs  RC=7u?                 {*OP PQQM@/Q
@B>>$B6Q:@1#L"3 !'"(M+*G+@37$K3$D$"(- 70@9-`	    O./external/rust/android-crates-io/crates/static_assertions/src/assert_fields.rs  fgDfrw                 H0NI3+0@*c@(C-86#4"8& 3z	`Z    M./external/rust/android-crates-io/crates/static_assertions/src/assert_impl.rs  92UGD                 ddEQ;/>;/C;/99==%M.L"OF@$LPMP.B@DPA@'*Q@@'=CCx,Q<(@DM@0P@5QN@-=CC%4+P2*NQM*O-(DE9KQD5%7 MM=/X18QLO!KLJNKGDP@7M@*Q@12@+CC=Bx#%J'L"9B) GPM;;LJNNQL<N)@60@1M<@5CC=x#%J'L"9QQ0$ GPM?; O;sCh    Q./external/rust/android-crates-io/crates/static_assertions/src/assert_obj_safe.rs  Isǘr~ox-                 L45~JMOOQN@4:@
&)O@#DP@%6@1%t* |"J=dB    N./external/rust/android-crates-io/crates/static_assertions/src/assert_trait.rs  0ޛfTD                 iB"@@(O@;N@+CIIELDK$-*/4K%:C N5)<@$$N5,?C$&-1 
p4>bqא    M./external/rust/android-crates-io/crates/static_assertions/src/assert_type.rs  {Cؘ6                 e@QQ<@'N 36M@&H@&HB"$!#+"*.->N@+O@+H<"#'-1 2Upa    N./external/rust/android-crates-io/crates/static_assertions/src/const_assert.rs  K짨İ|x                 m:LQCJKO$@	)@C@#(M@M'O/;@,N@$$"!7;@%R@$$"!1u8ea^(9  .׹wiF=/ aarch64-linux-android'eC&9 static_assertions   ֞R35      ׃                                                                 `  W     @ @ @  @                                                                                                   :          @          @         :                    W
        rust-end-file            PQ        >             (/`>  #%@M1\17U+ldY[DD!!2\W:Z[ggC	S3fn'ij(AX(E(EԊxr# C<N#N_bw%4r}Ńxb+: `L606ژ=,k	:pzUDW       ]             (/`] E b(-piFNî{a>`X;OZk![7?A<y|˪:QUp4**,F,Ic[<d,)_AIhfbpOx	;,lAē,kƴ,XȄ  = `F0uL!00q:Pi%ܪp8B.S xv)4- hV           	 L           	    ]  j    I           n              V                         (/` e	 API
!Pҩ*Rڊĭ$: : 6 .&-T <Nmb<!!XeQDko /ѻ-Lj"jYD!IbMI{(wt7:(uC_k.2"G׬EFųs/΍-_g EÔ
E%hLʶ֝
.ׂf"5:sͲw=^?Oeu NPS/l0'hF2Ȏsx       `              (/ ` \         (,4      
  2Y@>m%hC ^                    (/` 	     z       Z   K&3%C튢7)]3߸2.f&|QFG^IA~yiu	{UQ1; 
 	  !   *1$KL 	
K
, G    Abionic/libc/arch-common/  crtbrand.S HBend_so.S     #NUggWj7	*3 Y 1em4*^1WZ       y              (/ y} D8IfL,y&#c\>Qu2fȿx,Hj={K a>i                                                   *                    -                    ;                  H                    K                     N                  `                    c                    f                    i      ,              l                     o                    r                    u                      x                      {                      ~                                                                                                                 `                                                                                                                                                                         5                I   ,                  `                   `                    h              j                                                           <                     X                      .note.android.ident .note.gnu.build-id .dynsym .gnu.version .gnu.version_r .gnu.hash .hash .dynstr .rela.dyn .relr.dyn .rela.plt .eh_frame_hdr .eh_frame .text .plt .data.rel.ro .fini_array .dynamic .got.plt .relro_padding .comment .rustc .debug_loclists .debug_abbrev .debug_info .debug_rnglists .debug_str_offsets .debug_str .debug_addr .debug_line .debug_line_str .symtab .shstrtab .strtab  static_assertions.351233de52bd9ed6-cgu.0 $d crtbegin_so.c __on_dlclose $x $x __on_dlclose_late $x $x $x $x $d $d $d $d $d $d $d $d $d $d $d $d $d $d abitag $d $d __FRAME_END__ $d $d rust_metadata_static_assertions_351233de52bd9ed6 __dso_handle __cxa_finalize __emutls_unregister_key __atexit_handler_wrapper atexit __cxa_atexit pthread_atfork __register_atfork _DYNAMIC                                                                                                                                                                                      (             8      8      x                           0   o                   
                            =   o                                                L   o                                                 V                           0                            \             0      0                                    d     `                                                n    o                                                x      B                   H                                                      <                                           `      `                                                             D                                           @      @      P                                                                                                                                                                       p                                                    0                                                       H                                   0                                                                       k                                                         <                                                         Y                                                        >      
                                                  H      #                              )                     k      P                              <     0                    N                            G                    	      V                              S                    _      B                             _     0                    p                             o                                 "   &                 w                                                                                   s                             