Lines Matching full:let
80 if let Some(elem_size) = NonZeroUsize::new(elem_size) { in try_to_nonzero_elem_size()
186 let align = match repr_align { in new_zst()
285 let mut layout = DstLayout::new_zst(repr_align); in for_repr_c_struct()
287 let mut i = 0; in for_repr_c_struct()
291 let field = fields[i]; in for_repr_c_struct()
346 let max_align = match repr_packed { in extend()
360 if let Some(repr_packed) = repr_packed { in extend()
373 let field_align = min(field.align, max_align); in extend()
377 let align = max(self.align, field_align); in extend()
379 let (interfield_padding, size_info) = match self.size_info { in extend()
394 let padding = padding_needed_for(preceding_size, field_align); in extend()
401 let offset = match preceding_size.checked_add(padding) { in extend()
421 let size = match offset.checked_add(field_size) { in extend()
443 let offset = match offset.checked_add(trailing_offset) { in extend()
454 let statically_shallow_unpadded = self.statically_shallow_unpadded in extend()
495 let (static_padding, size_info) = match self.size_info { in pad_to_align()
499 let padding = padding_needed_for(unpadded_size, self.align); in pad_to_align()
500 let size = match unpadded_size.checked_add(padding) { in pad_to_align()
513 let statically_shallow_unpadded = self.statically_shallow_unpadded && static_padding == 0; in pad_to_align()
620 let e = $e; in validate_cast_and_convert_metadata()
633 // FIXME(#67): Once our MSRV is 1.65, use let-else: in validate_cast_and_convert_metadata()
634 // https://blog.rust-lang.org/2022/11/03/Rust-1.65.0.html#let-else-statements in validate_cast_and_convert_metadata()
635 let size_info = match self.size_info.try_to_nonzero_elem_size() { in validate_cast_and_convert_metadata()
661 let offset = match cast_type { in validate_cast_and_convert_metadata()
676 let (elems, self_bytes) = match size_info { in validate_cast_and_convert_metadata()
688 let max_total_bytes = in validate_cast_and_convert_metadata()
693 // FIXME(#67): Once our MSRV is 1.65, use let-else: in validate_cast_and_convert_metadata()
694 // https://blog.rust-lang.org/2022/11/03/Rust-1.65.0.html#let-else-statements in validate_cast_and_convert_metadata()
695 let max_slice_and_padding_bytes = match max_total_bytes.checked_sub(offset) { in validate_cast_and_convert_metadata()
707 let elems = max_slice_and_padding_bytes / elem_size.get(); in validate_cast_and_convert_metadata()
717 let without_padding = offset + elems * elem_size.get(); in validate_cast_and_convert_metadata()
734 let self_bytes = in validate_cast_and_convert_metadata()
742 let split_at = match cast_type { in validate_cast_and_convert_metadata()
857 // Thus, let `OFFSET_DELTA_ELEMS = (S_OFF - D_OFF)/D_ELEM` and in project()
921 let inner = match (src.size_info, dst.size_info) { in project()
935 let offset_delta = if let Some(od) = src_size.checked_sub(dst.offset) { in project()
941 let dst_elem_size = if let Some(e) = NonZeroUsize::new(dst.elem_size) { in project()
950 let delta_mod_other_elem = offset_delta % dst_elem_size.get(); in project()
959 let dst_meta = offset_delta / dst_elem_size.get(); in project()
966 let offset_delta = if let Some(od) = src.offset.checked_sub(dst.offset) in project()
973 let dst_elem_size = if let Some(e) = NonZeroUsize::new(dst.elem_size) { in project()
982 let delta_mod_other_elem = offset_delta % dst_elem_size.get(); in project()
987 let elem_remainder = src.elem_size % dst_elem_size.get(); in project()
999 let offset_delta_elems = offset_delta / dst_elem_size.get(); in project()
1004 let elem_multiple = src.elem_size / dst_elem_size.get(); in project()
1037 let dst_meta = match self.inner { in project()
1039 let src_meta = src_meta.to_elem_count(); in project()
1083 let src_meta = <Src as KnownLayout>::pointer_to_metadata(src.as_ptr()); in project()
1084 let params = <Dst as Params<Src>>::CAST_PARAMS; in project()
1091 let dst_meta = unsafe { params.cast_metadata(src_meta) }; in project()
1109 let layout = DstLayout::for_slice::<u32>(); in test_dst_layout_for_slice()
1130 let base = DstLayout::for_type::<u8>(); in test_dst_layout_extend_sized_with_sized()
1131 let trailing_field = DstLayout::for_type::<elain::Align<$n>>(); in test_dst_layout_extend_sized_with_sized()
1133 let packs = in test_dst_layout_extend_sized_with_sized()
1137 let composite = base.extend(trailing_field, pack); in test_dst_layout_extend_sized_with_sized()
1138 let max_align = pack.unwrap_or(DstLayout::CURRENT_MAX_ALIGN); in test_dst_layout_extend_sized_with_sized()
1139 let align = $n.min(max_align.get()); in test_dst_layout_extend_sized_with_sized()
1192 let aligns = (0..29).map(|p| NonZeroUsize::new(2usize.pow(p)).unwrap()); in test_dst_layout_extend_sized_with_dst()
1193 let packs = core::iter::once(None).chain(aligns.clone().map(Some)); in test_dst_layout_extend_sized_with_dst()
1197 let base = DstLayout::for_type::<u8>(); in test_dst_layout_extend_sized_with_dst()
1198 let elem_size = 42; in test_dst_layout_extend_sized_with_dst()
1199 let trailing_field_offset = 11; in test_dst_layout_extend_sized_with_dst()
1201 let trailing_field = DstLayout { in test_dst_layout_extend_sized_with_dst()
1207 let composite = base.extend(trailing_field, pack); in test_dst_layout_extend_sized_with_dst()
1209 let max_align = pack.unwrap_or(DstLayout::CURRENT_MAX_ALIGN).get(); in test_dst_layout_extend_sized_with_dst()
1211 let align = align.get().min(max_align); in test_dst_layout_extend_sized_with_dst()
1236 let layout = DstLayout { in test_dst_layout_pad_to_align_with_sized()
1258 let unpadded = DstLayout { in test_dst_layout_pad_to_align_with_sized()
1263 let padded = unpadded.pad_to_align(); in test_dst_layout_pad_to_align_with_sized()
1286 let current_max_align = DstLayout::CURRENT_MAX_ALIGN.get(); in test_dst_layout_pad_to_align_with_sized()
1301 let layout = DstLayout { in test_dst_layout_pad_to_align_with_dst()
1401 let previous_hook = std::panic::take_hook(); in test_validate_cast_and_convert_metadata()
1405 let actual = std::panic::catch_unwind(|| { in test_validate_cast_and_convert_metadata()
1408 let msg = d.downcast::<&'static str>().ok().map(|s| *s.as_ref()); in test_validate_cast_and_convert_metadata()
1516 if let Ok((elems, split_at)) = in test_validate_cast_and_convert_metadata()
1519 let (size_info, align) = (layout.size_info, layout.align); in test_validate_cast_and_convert_metadata()
1520 let debug_str = format!( in test_validate_cast_and_convert_metadata()
1529 let sized = matches!(layout.size_info, SizeInfo::Sized { .. }); in test_validate_cast_and_convert_metadata()
1532 let resulting_size = match layout.size_info { in test_validate_cast_and_convert_metadata()
1535 let padded_size = |elems| { in test_validate_cast_and_convert_metadata()
1536 let without_padding = offset + elems * elem_size; in test_validate_cast_and_convert_metadata()
1540 let resulting_size = padded_size(elems); in test_validate_cast_and_convert_metadata()
1563 let min_size = match layout.size_info { in test_validate_cast_and_convert_metadata()
1572 let insufficient_bytes = bytes_len < min_size; in test_validate_cast_and_convert_metadata()
1574 let base = match cast_type { in test_validate_cast_and_convert_metadata()
1578 let misaligned = (base + addr) % layout.align != 0; in test_validate_cast_and_convert_metadata()
1584 let sizes = 0..8; in test_validate_cast_and_convert_metadata()
1585 let elem_sizes = 1..8; in test_validate_cast_and_convert_metadata()
1586 let size_infos = sizes in test_validate_cast_and_convert_metadata()
1590 let layouts = itertools::iproduct!(size_infos, [1, 2, 4, 8, 16, 32]) in test_validate_cast_and_convert_metadata()
1631 let dst = args.elem_size.is_some(); in test_validate_rust_layout()
1632 let layout = { in test_validate_rust_layout()
1633 let size_info = match args.elem_size { in test_validate_rust_layout()
1654 let ptr = with_elems(elems); in test_validate_rust_layout()
1656 if let Some(addr_of_slice_field) = addr_of_slice_field { in test_validate_rust_layout()
1657 let slc_field_ptr = addr_of_slice_field(ptr).as_ptr(); in test_validate_rust_layout()
1661 let offset: usize = in test_validate_rust_layout()
1668 let (size, align) = unsafe { in test_validate_rust_layout()
1673 let assert_msg = if !cfg!(miri) { in test_validate_rust_layout()
1679 let without_padding = in test_validate_rust_layout()
1697 let expected_size = in test_validate_rust_layout()
1705 let addr = ptr.addr().get(); in test_validate_rust_layout()
1706 let (got_elems, got_split_at) = layout in test_validate_rust_layout()
1710 let assert_msg = if !cfg!(miri) { in test_validate_rust_layout()
1732 let got_ptr = with_elems(got_elems); in test_validate_rust_layout()
1734 let size_of_got_ptr = unsafe { mem::size_of_val_raw(got_ptr.as_ptr()) }; in test_validate_rust_layout()
1752 let args = MacroArgs { in test_validate_rust_layout()
1757 let ret = None::<usize>; in test_validate_rust_layout()
1758 $(let ret = Some($elem_size);)? in test_validate_rust_layout()
1771 let aligned_buf = Align::<_, FooAlign>::new([0u8; 1024]); in test_validate_rust_layout()
1772 let with_elems = |elems| { in test_validate_rust_layout()
1773 … let slc = NonNull::slice_from_raw_parts(NonNull::from(&aligned_buf.t), elems); in test_validate_rust_layout()
1777 let addr_of_slice_field = { in test_validate_rust_layout()
1779 let f = None::<fn(NonNull<Foo>) -> NonNull<u8>>; in test_validate_rust_layout()
1783 … let f: Option<fn(NonNull<Foo>) -> NonNull<u8>> = Some(|ptr: NonNull<Foo>| unsafe { in test_validate_rust_layout()
1786 let _ = $elem_size; in test_validate_rust_layout()
1960 let align: NonZeroUsize = kani::any(); in any()
1961 let size_info: SizeInfo = kani::any(); in any()
1988 let is_sized: bool = kani::any(); in any()
1992 let size: usize = kani::any(); in any()
2005 let elem_size: usize = kani::any(); in any()
2006 let offset: usize = kani::any(); in any()
2017 let layout: DstLayout = kani::any(); in prove_requires_dynamic_padding()
2019 let SizeInfo::SliceDst(size_info) = layout.size_info else { in prove_requires_dynamic_padding()
2024 let meta: usize = kani::any(); in prove_requires_dynamic_padding()
2026 let Some(trailing_slice_size) = size_info.elem_size.checked_mul(meta) else { in prove_requires_dynamic_padding()
2032 let Some(unpadded_size) = size_info.offset.checked_add(trailing_slice_size) else { in prove_requires_dynamic_padding()
2044 let trailing_padding = util::padding_needed_for(unpadded_size, layout.align); in prove_requires_dynamic_padding()
2055 let base: DstLayout = kani::any(); in prove_dst_layout_extend()
2056 let field: DstLayout = kani::any(); in prove_dst_layout_extend()
2057 let packed: Option<NonZeroUsize> = kani::any(); in prove_dst_layout_extend()
2059 if let Some(max_align) = packed { in prove_dst_layout_extend()
2066 let base_size = if let SizeInfo::Sized { size } = base.size_info { in prove_dst_layout_extend()
2073 let composite = base.extend(field, packed); in prove_dst_layout_extend()
2083 let field_align = min(field.align, packed.unwrap_or(DstLayout::THEORETICAL_MAX_ALIGN)); in prove_dst_layout_extend()
2097 let padding = padding_needed_for(base_size, field_align); in prove_dst_layout_extend()
2098 let offset = base_size + padding; in prove_dst_layout_extend()
2103 let base_analog = Layout::from_size_align(base_size, base.align.get()).unwrap(); in prove_dst_layout_extend()
2107 if let SizeInfo::Sized { size: composite_size } = composite.size_info { in prove_dst_layout_extend()
2114 let field_analog = in prove_dst_layout_extend()
2117 if let Ok((actual_composite, actual_offset)) = base_analog.extend(field_analog) in prove_dst_layout_extend()
2139 if let SizeInfo::SliceDst(TrailingSliceLayout { in prove_dst_layout_extend()
2151 let field_analog = in prove_dst_layout_extend()
2154 if let Ok((actual_composite, actual_offset)) = base_analog.extend(field_analog) in prove_dst_layout_extend()
2178 let base: DstLayout = kani::any(); in prove_dst_layout_extend_dst_panics()
2179 let field: DstLayout = kani::any(); in prove_dst_layout_extend_dst_panics()
2180 let packed: Option<NonZeroUsize> = kani::any(); in prove_dst_layout_extend_dst_panics()
2182 if let Some(max_align) = packed { in prove_dst_layout_extend_dst_panics()
2189 let _ = base.extend(field, packed); in prove_dst_layout_extend_dst_panics()
2196 let layout: DstLayout = kani::any(); in prove_dst_layout_pad_to_align()
2198 let padded = layout.pad_to_align(); in prove_dst_layout_pad_to_align()
2203 if let SizeInfo::Sized { size: unpadded_size } = layout.size_info { in prove_dst_layout_pad_to_align()
2204 if let SizeInfo::Sized { size: padded_size } = padded.size_info { in prove_dst_layout_pad_to_align()
2209 let padding = padding_needed_for(unpadded_size, layout.align); in prove_dst_layout_pad_to_align()
2214 let layout_analog = in prove_dst_layout_pad_to_align()
2216 let padded_analog = layout_analog.pad_to_align(); in prove_dst_layout_pad_to_align()