# 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 } ```