owned this note
owned this note
Published
Linked with GitHub
# Core Transmutation Call Graph
Legend for methods/intrinsics: blue is safe, red is unsafe. solid is stable, dashed is unstable
```graphviz
digraph hierarchy {
rankdir=LR
nodesep=1.0 // increases the separation between nodes
node [color=Red,fontname=Courier,shape=box] //All nodes will this shape and colour
edge [color=Blue] //All the lines look like this
transmute
transmute_unchecked
{rank=same;transmute,transmute_unchecked}
{rank=same;str_as_bytes,str_as_bytes_mut}
str_as_bytes -> str_as_bytes_mut[color=White]
char_convert_from_u32_unchecked[label="char::convert::from_u32_unchecked"]
char_convert_from_u32_unchecked -> transmute
char_convert_char_try_from_u32 [label="char::convert::char_try_from_u32", color=Blue]
char_convert_char_try_from_u32 -> transmute
Ipv6Addr_new[label="Ipv6Addr::new", color = Blue]
Ipv6Addr_new -> transmute
Ipv6Addr_segments[label="Ipv6Addr::segments", color = Blue]
Ipv6Addr_segments -> transmute
const_ptr_addr[label="<*const T>::addr", color = Blue, style=dashed]
const_ptr_addr -> transmute
ptr_without_provenance[label="ptr::without_provenance<T>", color = Blue, style=dashed]
ptr_without_provenance -> transmute
ptr_without_provenance_mut[label="ptr::without_provenance_mut<T>", color = Blue, style=dashed]
ptr_without_provenance_mut -> transmute
ptr_align_offset[label="ptr::align_offset<T>", color = Red]
ptr_align_offset -> transmute
mut_ptr_addr[label="<*mut T>::addr", color = Blue, style=dashed]
mut_ptr_addr -> transmute
alignment_new_unchecked[label="Alignment::new_unchecked", color = Red, style=dashed]
alignment_new_unchecked -> transmute
ptr_metadata_vtable_ptr[label="ptr::metadata::DynMetadata<Dyn>::vtable_ptr", color=Blue]
ptr_metadata_vtable_ptr -> transmute
fmt_rt_argument_new[label="fmt::rt::Argument<'a>::new<'b,T>", color=Blue]
fmt_rt_argument_new -> transmute
task_wake_from_waker[label="task::wake::ContextBuilder::from_waker"]
task_wake_from_waker -> transmute
task_wake_as_ref[label="<AsRef<LocalWaker> as task::wake::Waker>::as_ref", color=Blue]
task_wake_as_ref -> transmute
maybe_uninit_array_assume_init[label="MaybeUninit<T>::array_assume_init<N>", style=dashed]
maybe_uninit_array_assume_init -> transmute_unchecked
maybe_uninit_copy_from_slice[label="MaybeUninit<T>::copy_from_slice", color=Blue, style=dashed]
maybe_uninit_copy_from_slice -> transmute
maybe_uninit_transpose_of_arr[label="MaybeUninit<[T; N]>::transpose", color=Blue, style=dashed]
maybe_uninit_transpose_of_arr -> transmute_unchecked
maybe_uninit_transpose_arr_of[label="[MaybeUninit<T>; N]::transpose", color=Blue, style=dashed]
maybe_uninit_transpose_arr_of -> transmute_unchecked
mem_transmute_copy[label="mem::transmute_copy"]
ascii_char_from_u8[label="ascii_char::AsciiChar::from_u8", color=Blue, style=dashed]
ascii_char_from_u8 -> ascii_char_from_u8_unchecked
ascii_char_from_u8_unchecked[label="ascii_char::AsciiChar::from_u8_unchecked", color=Red, style=dashed]
ascii_char_from_u8_unchecked -> transmute
io_borrowed_buf_unfilled[label="io::borrowed_buf::BorrowedBuf::unfilled", color=Blue]
io_borrowed_buf_unfilled -> transmute
io_borrowed_buf_reborrow[label="io::borrowed_buf::BorrowedCursor::reborrow", color=Blue]
io_borrowed_buf_reborrow -> transmute
slice_align_to[label="<[T]>::align_to<U>"]
slice_align_to_mut[label="<[T]>::align_to_mut<U>"]
slice_as_simd[label="<[T]>::as_simd<LANES>", color=Blue, style=dashed]
slice_as_simd -> slice_align_to
slice_as_simd_mut[label="<[T]>::as_simd_mut<LANES>", color=Blue, style=dashed]
slice_as_simd_mut -> slice_align_to_mut
str_as_bytes[label="str::as_bytes", color=Blue]
str_as_bytes -> transmute
str_as_bytes_mut[label="str::as_bytes_mut", color=Red]
str_from_utf8_unchecked[label="str::from_utf8_unchecked"]
str_from_utf8_unchecked -> transmute
array_iter_into_iter[label="<[T; N] as array::iter::IntoIterator>::into_iter", color=Blue]
array_iter_into_iter -> transmute_unchecked
array_equality_spec_eq[label="<T as SpecArrayEq<U, N>>::spec_eq", color=Blue]
array_equality_spec_eq -> transmute
slice_memchr_memrchr[label="slice::memchr::memrchr", color=Blue]
slice_memchr_memrchr -> slice_align_to
str_count_do_count_chars[label="str::count::do_count_chars", color=Blue]
str_count_do_count_chars -> slice_align_to
iter_adapters_filter_next_chunk[label="<Filter<I,P> as Iterator>::next_chunk", color=Blue]
iter_adapters_filter_next_chunk -> maybe_uninit_array_assume_init
iter_adapters_filter_map_next_chunk[label="<FilterMap<I,F> as Iterator>::next_chunk", color=Blue]
iter_adapters_filter_map_next_chunk -> maybe_uninit_array_assume_init
iter_adapters_copied_spec_next_chunk[label="<slice::Iter<T> as SpecNextChunk<N,T>>::next_chunk", color=Blue]
iter_adapters_copied_spec_next_chunk -> maybe_uninit_array_assume_init
array_try_from_fn[label="array::try_from_fn<R,N,F>", color=Blue, style=dashed]
array_try_from_fn -> maybe_uninit_array_assume_init
array_iter_next_chunk[label="array::iter_next_chunk", color=Blue]
array_iter_next_chunk -> maybe_uninit_array_assume_init
char_decode_decode_utf16_next[label="<char::decode::DecodeUtf16 as Iterator>::next", color=Blue]
char_decode_decode_utf16_next -> char_from_u32_unchecked
char_from_u32_unchecked[label="char::from_u32_unchecked"]
char_from_u32_unchecked -> char_convert_from_u32_unchecked
char_encode_utf16_raw[label="char::encode_utf16_raw", color=Blue, style=dashed]
char_encode_utf16_raw -> char_from_u32_unchecked
iter_range_step_forward_checked[label="<char as iter::range::Step>::forward_checked", color=Blue]
iter_range_step_forward_checked -> char_from_u32_unchecked
iter_range_step_backward_checked[label="<char as iter::range::Step>::backward_checked", color=Blue]
iter_range_step_backward_checked -> char_from_u32_unchecked
iter_range_step_forward_unchecked[label="<char as iter::range::Step>::forward_unchecked", color=Red]
iter_range_step_forward_unchecked -> char_from_u32_unchecked
iter_range_step_backward_unchecked[label="<char as iter::range::Step>::backward_unchecked", color=Red]
iter_range_step_backward_unchecked -> char_from_u32_unchecked
str_iter_chars_next[label="<Chars as Iterator>::next", color=Blue]
str_iter_chars_next -> char_from_u32_unchecked
str_iter_chars_next_back[label="<Chars as DoubleEndedIterator>::next_back", color=Blue ]
str_iter_chars_next_back -> char_from_u32_unchecked
iter_range_range_iterator_impl_spec_next[label="<ops::Range as iter::range::RangeIteratorImpl>::spec_next", color=Blue]
iter_range_range_iterator_impl_spec_next -> iter_range_step_forward_unchecked
iter_range_range_iterator_impl_spec_nth[label="<ops::Range as iter::range::RangeIteratorImpl>::spec_nth", color=Blue]
iter_range_range_iterator_impl_spec_nth -> iter_range_step_forward_unchecked
iter_range_range_iterator_impl_spec_advance_by[label="<ops::Range as iter::range::RangeIteratorImpl>::spec_advance_by", color=Blue]
iter_range_range_iterator_impl_spec_advance_by -> iter_range_step_forward_unchecked
iter_range_range_iterator_impl_spec_iterator_get_unchecked[label="<ops::Range as iter::range::RangeIteratorImpl>::__iterator_get_unchecked", color=Red]
iter_range_range_iterator_impl_spec_iterator_get_unchecked -> iter_range_step_forward_unchecked
iter_range_rangeinclusive_iterator_impl_spec_next[label="<ops::RangeInclusive<T> as iter::range::RangeInclusiveIteratorImpl>::spec_next", color=Blue]
iter_range_rangeinclusive_iterator_impl_spec_next -> iter_range_step_forward_unchecked
iter_range_rangeinclusive_iterator_impl_spec_try_fold[label="<ops::RangeInclusive<T> as iter::range::RangeInclusiveIteratorImpl>::spec_try_fold", color=Blue]
iter_range_rangeinclusive_iterator_impl_spec_try_fold -> iter_range_step_forward_unchecked
iter_range_range_iterator_impl_spec_next_back[label="<ops::Range as iter::range::RangeIteratorImpl>::spec_next_back", color=Blue]
iter_range_range_iterator_impl_spec_next_back -> iter_range_step_backward_unchecked
iter_range_range_iterator_impl_spec_nth_back[label="<ops::Range as iter::range::RangeIteratorImpl>::spec_nth_back", color=Blue]
iter_range_range_iterator_impl_spec_nth_back -> iter_range_step_backward_unchecked
iter_range_range_iterator_impl_spec_advance_back_by[label="<ops::Range as iter::range::RangeIteratorImpl>::spec_advance_back_by", color=Blue]
iter_range_range_iterator_impl_spec_advance_back_by -> iter_range_step_backward_unchecked
const_ptr_is_aligned_to[label="const_ptr::is_aligned_to", color=Blue, style=dashed]
const_ptr_is_aligned_to -> ptr_align_offset
mut_ptr_is_aligned_to[label="mut_ptr::is_aligned_to", color=Blue, style=dashed]
mut_ptr_is_aligned_to -> ptr_align_offset
slice_memchr_memchr_aligned[label="slice::memchr::memchr_aligned", color=Blue]
slice_memchr_memchr_aligned -> ptr_align_offset
slice_align_to -> ptr_align_offset
slice_align_to_mut -> ptr_align_offset
str_validations_run_utf8_validation[label="str::validations::run_utf8_validation", color=Blue]
str_validations_run_utf8_validation -> ptr_align_offset
str_converts_from_utf8[label="str::converts::from_utf8", color=Blue]
str_converts_from_utf8 -> str_validations_run_utf8_validation
str_converts_from_utf8_mut[label="str::converts::from_utf8_mut", color=Blue]
str_converts_from_utf8_mut -> str_validations_run_utf8_validation
alignment_new[label="Alignment::new", color=Blue]
alignment_new -> alignment_new_unchecked
alloc_layout_from_size_align[label="Layout::from_size_align", color=Blue]
alloc_layout_from_size_align -> alignment_new_unchecked
alloc_layout_from_size_align_unchecked[label="Layout::from_size_align_unchecked", color=Red]
alloc_layout_from_size_align_unchecked -> alignment_new_unchecked
ptr_metadata_dynmetadata_size_of[label="ptr::metadata::DynMetadata::size_of", color=Blue]
ptr_metadata_dynmetadata_size_of -> ptr_metadata_vtable_ptr
ptr_metadata_dynmetadata_align_of[label="ptr::metadata::DynMetadata::align_of", color=Blue]
ptr_metadata_dynmetadata_align_of -> ptr_metadata_vtable_ptr
ptr_metadata_dynmetadata_partial_eq[label="<ptr::metadata::DynMetadata as PartialEq>::partial_eq", color=Blue]
ptr_metadata_dynmetadata_partial_eq -> ptr_metadata_vtable_ptr
ptr_metadata_dynmetadata_ord[label="<ptr::metadata::DynMetadata as Ord>::cmp", color=Blue]
ptr_metadata_dynmetadata_ord -> ptr_metadata_vtable_ptr
ptr_metadata_dynmetadata_partial_ord[label="<ptr::metadata::DynMetadata as PartialOrd>::partial_cmp", color=Blue]
ptr_metadata_dynmetadata_partial_ord -> ptr_metadata_vtable_ptr
ptr_metadata_dynmetadata_hash[label="<ptr::metadata::DynMetadata as Hash>::hash", color=Blue]
ptr_metadata_dynmetadata_hash -> ptr_metadata_vtable_ptr
char_as_ascii[label="char::as_ascii", color=Blue, style=dashed]
char_as_ascii -> ascii_char_from_u8_unchecked
iter_range_step_backward_checked -> ascii_char_from_u8_unchecked
iter_range_step_forward_unchecked -> ascii_char_from_u8_unchecked
iter_range_step_backward_unchecked -> ascii_char_from_u8_unchecked
str_make_ascii_uppercase[label="str::make_ascii_uppercase", color=Blue]
str_make_ascii_uppercase -> str_as_bytes_mut
str_make_ascii_lowercase[label="str::make_ascii_lowercase", color=Blue]
str_make_ascii_lowercase -> str_as_bytes_mut
async_runtime_code[shape=circle, color=Blue]
async_runtime_code -> task_wake_from_waker
async_runtime_code -> task_wake_as_ref
iterator_get_unchecked_callers[shape=circle, color=Blue]
iterator_get_unchecked_callers -> iter_range_range_iterator_impl_spec_iterator_get_unchecked
from_utf8_unchecked_callers[shape=circle, color=Blue]
from_utf8_unchecked_callers -> str_from_utf8_unchecked
}
```