2 #![warn(clippy::assertions_on_result_states)]
4 use std::result::Result;
11 #[derive(Copy, Clone, Debug)]
14 macro_rules! get_ok_macro {
16 Ok::<_, DebugFoo>(Foo)
22 let r: Result<Foo, DebugFoo> = Ok(Foo);
23 debug_assert!(r.is_ok());
26 // test ok with non-debug error type
27 let r: Result<Foo, Foo> = Ok(Foo);
30 // test ok with some messages
31 let r: Result<Foo, DebugFoo> = Ok(Foo);
32 assert!(r.is_ok(), "oops");
34 // test ok with unit error
35 let r: Result<Foo, ()> = Ok(Foo);
39 fn get_ok() -> Result<Foo, DebugFoo> {
42 assert!(get_ok().is_ok());
45 assert!(get_ok_macro!().is_ok());
47 // test ok that shouldn't be moved
48 let r: Result<CopyFoo, DebugFoo> = Ok(CopyFoo);
49 fn test_ref_unmoveable_ok(r: &Result<CopyFoo, DebugFoo>) {
52 test_ref_unmoveable_ok(&r);
56 // test ok that is copied
57 let r: Result<CopyFoo, CopyFoo> = Ok(CopyFoo);
61 // test reference to ok
62 let r: Result<CopyFoo, CopyFoo> = Ok(CopyFoo);
63 fn test_ref_copy_ok(r: &Result<CopyFoo, CopyFoo>) {
70 let r: Result<DebugFoo, Foo> = Err(Foo);
71 debug_assert!(r.is_err());
74 // test err with non-debug value type
75 let r: Result<Foo, Foo> = Err(Foo);
81 let res: Result<i32, i32> = Ok(1);