2 use core::intrinsics::assume;
5 fn test_typeid_sized_types() {
9 assert_eq!(TypeId::of::<X>(), TypeId::of::<X>());
10 assert_eq!(TypeId::of::<Y>(), TypeId::of::<Y>());
11 assert!(TypeId::of::<X>() != TypeId::of::<Y>());
15 fn test_typeid_unsized_types() {
18 struct Y(dyn Z + 'static);
20 assert_eq!(TypeId::of::<X>(), TypeId::of::<X>());
21 assert_eq!(TypeId::of::<Y>(), TypeId::of::<Y>());
22 assert!(TypeId::of::<X>() != TypeId::of::<Y>());
25 // Check that `const_assume` feature allow `assume` intrinsic
26 // to be used in const contexts.
28 fn test_assume_can_be_in_const_contexts() {
29 const unsafe fn foo(x: usize, y: usize) -> usize {
30 // SAFETY: the entire function is not safe,
31 // but it is just an example not used elsewhere.
32 unsafe { assume(y != 0) };
35 let rs = unsafe { foo(42, 97) };