rust r#rustc 1.76.0 (07dca489a 2024-02-04) JSY׃(h.N9-66d8041607d2929b20@vϑ+I-693a8f23970c5917c\i %LRlU-13fc9d1ed9c7a2bcrustc_std_workspace_core vJ][.(b{-5af394d9b1f07bdc"E~+-e9d126c51bb8b2bbu$5mS-39c59240bfdfab27 "mL7e?^]-65c422a3ad95273dcfg_if :Xc^,I-7e6330a6c0cb9441 miniz_oxideCMFrf1=f<-306712ebb1ee1a3fadler}s9ycK )2 -349c574f342b0d30 hashbrownKs~曁X5-ce1d65fb391ae98brustc_std_workspace_allocQMzR#|.廍܅ -8933a2fb54d88492 std_detect >1~-b93dac2525ec4d1erustc_demanglex>)F0-a6e97aae2681ad8f addr2line)˂K-1ff34b0cf871cb60gimliӸWFf_Vmgq-0c110dd0650d6cb7object:[fu#r-dcd9be90ae2cb505memchrTivpJ5-516789932d161b4eIph:=jvl-a57e2388c0aea9b1 ansi_termiaI-jQ,-14e1e96b4807e180diff@Da]IpX98-867026f56a728eb3 666 6 init   ?? ?  ?  printerpaint SIGN_RIGHT SIGN_LEFT write_header'asettakeflushTWrite write_lines  InlineWriter Writerstyle! ! !!write_with_style!finishwrite_inline_diff'  Comparison) )TLeft)TRight)left)right/ / / /4 4 4 4 assert_neLatentDeletion; ;value;? ?<777777777%7%7&7'7'7'7878787;;=>楼@ M)) - . зܼ5   4)?;M >'>'<'<') Style%uMuM~M# 9 / :i # Pretty AssertionsL When writing tests in Rust, you'll probably use `assert_eq!(a, b)` _a lot_.OlF If such a test fails, it will present all the details of `a` and `b`.pIT But you have to spot the differences yourself, which is not always straightforward,W like here: ![standard assertion](https://raw.githubusercontent.com/colin-kiegel/rust-pretty-assertions/2d2357ff56d22c51a86b2f1cfe6efcee9f5a8081/examples/standard_assertion.png): Wouldn't that task be _much_ easier with a colorful diff?= ![pretty assertion](https://raw.githubusercontent.com/colin-kiegel/rust-pretty-assertions/2d2357ff56d22c51a86b2f1cfe6efcee9f5a8081/examples/pretty_assertion.png)B Yep — and you only need **one line of code** to make it happen:E ```rust / use pretty_assertions::{assert_eq, assert_ne};2 ```
 B Show the example behind the screenshots above.E ```rust,should_panic> // 1. add the `pretty_assertions` dependency to `Cargo.toml`.A< // 2. insert this line at the top of each module, as needed?2 #[derive(Debug, PartialEq)] struct Foo {  lorem: &'static str,  ipsum: u32, # dolor: Result, & }  U let x = Some(Foo { lorem: "Hello World!", ipsum: 42, dolor: Ok("hey".to_string())}); XY let y = Some(Foo { lorem: "Hello Wrold!", ipsum: 42, dolor: Ok("hey ho!".to_string())}); \  assert_eq!(x, y);  
   ## Tip  q Specify it as [`[dev-dependencies]`](http://doc.crates.io/specifying-dependencies.html#development-dependencies) tH and it will only be used for compiling tests, examples, and benchmarks. K> This way the compile time of `cargo build` won't be affected! A= Also add `#[cfg(test)]` to your `use` statements, like this:@  #[cfg(test)]2 ## Note 1 * Since `Rust 2018` edition, you need to declare4? `use pretty_assertions::{assert_eq, assert_ne};` per module.BI Before you would write `#[macro_use] extern crate pretty_assertions;`.LN * The replacement is only effective in your own crate, not in other librariesQ you include.O * `assert_ne` is also switched to multi-line presentation, but does _not_ showR a diff. ) %uMuM~M9 : * ';Fixed ++ Green% ++ Red, ++ 6I%:*,*++++++,,D,O\bhi jk lpr coloursy z~       write   {} -         A B7C7 B7MMMflagsJMfillJMJMwidthJM precisionJMbufJҠ᷷C7  y  * ;;=>楼 5!D7 D76  5    % E7 E76  7    FF7G7 F76 G7 4 9M9  988t H7I7J7 H7  I7 J74 :M: :  ::##    #< #   4 <4 #<;;;#  <# #  foreground backgroundis_bold is_dimmed is_italic is_underlineis_blink is_reverse is_hiddenis_strikethroughǛ#G* " #"#<#M<$    4" <$%&#???$!$ " <@!! $" <$&E&K7L7 K7@ L7>4!&! %" <&& &*#*M7 M7@4!*! &" <*-`-N7O7P7 N7: O7 P74 ((.;-;- ':. . .CC( A comparison of two values.W Where both values implement `Debug`, the comparison can be displayed as a pretty diff.Z# use pretty_assertions::Comparison;&+ print!("{}", Comparison::new(&123, &134));.U The values may have different types, although in practice they are usually the same.X  * + ,,*+* * )) - . зܼ* зܼ-.HHHG)) * H)) * b* 0 1 2012)) - . зܼ0 3JJJO+ Store two values to be compared in future..: Expensive diffing is deferred until calling `Debug::fmt`.= 0  0 K// 30   ~* 5 6 7567MM8MMM4Q7R7S7 Q7 R7MMM2JM2JMJM3JM3JM3JҠ᷷S7444 85 #L Asserts that two expressions are equal to each other (using [`PartialEq`]).OP On panic, this macro will print a diff derived from [`Debug`] representation ofS each value.  7 This is a drop in replacement for [`std::assert_eq!`]. :3 You can provide a custom panic message if desired. 6! # Examples!!!" use pretty_assertions::assert_eq;!%! let a = 3;! let b = 1 + 2;" assert_eq!(a, b);""B assert_eq!(a, b, "we are testing addition with {} and {}", a, b);"E"# U##+ ## #  ## ###  ## ######## ## #  ####  ###  ##$$ $  $$ $$$  $$ $$$'$' $$$ $$$$  $$ $$$$  $$'$$ left_val$$ right_val$ $$' % %%% % [%% % [% %'%  %% % %%' assertion failed: `(left == right)`\ \n\ \n{}\ \n%&& &&  & & &&' [&' [' ''' '  '' '''  '' '''''' arg''  ' '''+'+ '(( ((((  (( ((((  ((+(( [(( [( ((+ ( ((( ( [(( ( [( (+)  )) ) ))+ assertion failed: `(left == right)`: {}\ \n\ \n{}\ \n)* *  ******* `* *** **  * * *++ [++ [+ +/P Asserts that two expressions are not equal to each other (using [`PartialEq`]).+S,I On panic, this macro will print the values of the expressions with their,L [`Debug`] representations.,-7 This is a drop in replacement for [`std::assert_ne!`].-:R-6.R..." use pretty_assertions::assert_ne;.%.S. let b = 2;. assert_ne!(a, b);./B assert_ne!(a, b, "we are testing that the values are not equal");/E// m//?00 0  00 000  00 0000000 00  0  000 00  000  000000000 0  00 000  00 00011111 11  1  111 11  111  111111111 1  11 111  11 111111 `11  1 1112121 12  2  222 22  222  22: 222222 `2 22222 22  22 222  22 222 maybe_semicolon22 222222 `22  2 222?2? 333 3333  33 3333  33?33 [33 [3 33? 3 3 [33 3 [3 3> 4 left_dbg444  44 4 444{:?}44 4 4 [44 4 right_dbg4 44  44 4 445~44 4 4 [4 5 5 }55 5 5;5  55 5 55;!assertion failed: `(left != right)`{}{}\ \n\ \n{}\ \n{}: According to the `PartialEq` implementation, both of the values \ are partially equivalent, even if the `Debug` outputs differ.\ \n\ \n588 y88 9  9999999 `9 999 99  9 9 999 [99 [9 9: :: :: :::: bold:::: underline: ::;  ;;;Note;;  ;; ; ;;>assertion failed: `(left != right)`{}{}\ \n\ \n{}:\ \n{:#?}\ \n\ \n;== y== =  ======= `= ==> >> >> >>>> ҇>>>>  >>> Both sides> > [>? <<;;=>楼< 楼=>;;   <  ;; * @@A?? A@ 4* *6*7*8**:***A*&*B*C*.*.*O** */!std::assert_nestd::assert_eq!1http://doc.crates.io/specifying-dependencies.htmlstd::assert_ne!std::assert_equM ϒϒ[dev-dependencies]uM  uMM=>==>-<2!9v}K*k<2!9<2!9<2!9f3Ǣ<2!9;Tܱ;<2!9͖rv<2!9f^w<2!9XbNhs<2!9h^آ<2!94PpԿ<2!9.p]<2!9M>,J<2!9g-<4$9<2!9|Ā6<2!9>i|W<2!9]i (<2!9a+E{e<2!9h<2!9l4i΢<2!9q&"8<2!9ck=<2!9i4ۢ<2!9 <2!9]x<2!9ۣ7T<2!9HL <2!9+*f<2!9ɃV/Q<2!9&)eP<2!9dGݢ<2!9oC™<2!9\e@<2!9@,a<2!9Ȅ3*#A <2!9*Cb<2!9`K<2!9h<2!9o?7~<2!9H[<2!96$<2!90&!X<2!9?X~|ly<2!9h#8 xy<2!9°<2!9@S<2!99[<2!9Weŷ΢<2!9/0Nc<2!9>%x<2!9{9<2!9mI>X<2!9t.¿'<2!9[GrC?<2!9e{~ɟ<2!9Y":ڴ<2!9R㵹)<2!9/ <2!9FQ<2!9ج53q<2!98<2!9+@F,<2!9@NQB<2!9<2!9[i<2!9.L*F<2!9R {Zcѣ<2!9#8y<2!95.rɮ<2!9'p!$T<2!9eC<2!9t <2!9y3jv<2!9^l<2!9RRs<2!9ZJ<2!9[<2!9Z }<2!9^-<2!9>VHbl<2!98!!!\$f$z$$$$N%X%l%%{&&&&''44 GGGGHNHVHHHHHHHHHHHHHHHHI II9?ISYciu=CIOU[dm-zPv7=Mu_T E!!#c$m$$$$$U%_%s%&&&&''*6GGGG4HRHZHHHHHHHHHHHHHHHIIII #a&V(G_0 "!!!#w$$$$%i%}%Q&&& ''1GG HIH~HS}9 y@V~b' !!!#p$$$$$b%v%H&&&''GGH7HuH %c*~Nc4 &!!$$$%U&&'3GGHKHHDg  k  \!#(&+'GmHDh  m ]!+&.'nH4W [ L!&'^HI!y$$k%%& 'Fg6UC  5!!g&'H& sx]#$&G2H&R$vGD$iG "&*.26:FWgz~ !8E]du|+26=CIOU[agmsy)U$yGu*6!ISJ **zacore_intrinsics<2!9\t'** <2!9'R$kήZ*<2!9Y;}2ȿ````Aaga``Waa1aODHT T<2!9l4i<2!9h^<2!9GR><<2!9`K#<2!9'p!$TE<2!9]i (<2!9\e@<2!9M>,J <2!9i4<2!9>i|W<2!9HL <2!9e{~ɟ5<2!9;Tܱ;<2!9t G<2!99[-<2!98%x0<2!9+*f<2!9@,a <2!9o?7~%<2!9.p] <2!9{91<2!9/ 8<2!95.rɮD<2!9y3jvH<2!9f3<2!9 <2!9ج53q:<2!9[L<2!9ۣ7T<2!9/0Nc/<2!9^-N<2!9Y":ڴ6<2!9/R<2!9q&"8<2!9eCF<2!9°+<2!9h<2!9t.¿'3<2!9|Ā6 <2!9oC™<2!9a+E{e<2!9RRsJ<2!9g-<4$9 <2!90&!X(<2!9mI>X2<2!9R {ZcѣB<2!9H[&<2!9ZJK<2!9ck=<2!98VHblO<2!9&)eP<2!9[i@<2!9.L*FA<2!94PpԿ <2!9@S,<2!9͖rv<2!9[GrC?4<2!9+@F,=<2!9@NQB><2!9v}K*k<2!9Weŷ.<2!9?<2!9?X~|ly)<2!9{r/;Sgl *TBsmz}Ot8>(D~ 1E" ! P)["*(! \LH!&(848 >*$6)J:Qc++G*1 VS H,2 VT  0S*,46%EB2W <(M"$* & # $'#' B #" $E#'' B %% D'#'# B %!& v#'#' BU $ .' <1       V\&T ##'' <&@1\ '  , #' <G (! * #' <A ( ! ,#' <9      #' <^Fth/home/dwhitfield/.cargo/registry/src/index.crates.io-6f17d22bba15001f/pretty_assertions-0.7.2/src/lib.rs *fY&38+iPJX>F 3FB@3 'Y] uLBA 3 5CMRS1&   ; ['/Y)63BV#B;@68*#;PT;7&F&*%&'0H I 2&'0L 3I TM;7&F$5%51=J&'-EG-N "d] !/5K2).1J!+1J#   /"% !' '*0' I2!!) I2!!$* I2 !"' T2!! A T2!! +B /% !"' '*0' I) I$* I !' T A T +B C#I2+!MC&G715&4 *)) ZDDDDDDDDDEEEEEFFFFFGGGGGGGGGIIIIIIIIKKLLLLLLLLLLLLNNNNNOOOOOOOOOUUWWXY[[]]_```````````````x.ڀ2 ο-lPox86_64-unknown-linux-gnu-4q:;|_ӥ3Xpretty_assertions-4074682d4ca98dd5<2!9;;T *<~ B @TBTTTBBBBBB@8p&&@B@BBB&B&BBB@<