you_can/
lib.rs

1//! [`#[you_can::turn_off_the_borrow_checker]`][turn_off_the_borrow_checker]
2#![no_std]
3#![allow(clippy::needless_doctest_main)]
4#![warn(unused_extern_crates)]
5#![deny(unsafe_op_in_unsafe_fn, rustdoc::broken_intra_doc_links)]
6#![doc(
7    html_favicon_url = "data:image/png;base64,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",
8    html_logo_url = "data:image/png;base64,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"
9)]
10
11#[doc = include_str!("./turn_off_the_borrow_checker.md")]
12#[doc(inline)]
13pub use you_can_build_macros::turn_off_the_borrow_checker;
14
15#[doc = include_str!("./borrow_unchecked.md")]
16#[inline(always)]
17pub unsafe fn borrow_unchecked<
18    'original,
19    'unbounded,
20    Ref: BorrowUnchecked<'original, 'unbounded>,
21>(
22    reference: Ref,
23) -> Ref::Unbounded {
24    unsafe { BorrowUnchecked::borrow_unchecked(reference) }
25}
26
27#[doc(hidden)]
28pub unsafe trait BorrowUnchecked<'original, 'unbounded> {
29    type Unbounded;
30
31    unsafe fn borrow_unchecked(self) -> Self::Unbounded;
32}
33
34unsafe impl<'original, 'unbounded, T: 'unbounded> BorrowUnchecked<'original, 'unbounded>
35    for &'original T
36{
37    type Unbounded = &'unbounded T;
38
39    #[inline(always)]
40    unsafe fn borrow_unchecked(self) -> Self::Unbounded {
41        unsafe { ::core::mem::transmute(self) }
42    }
43}
44
45unsafe impl<'original, 'unbounded, T: 'unbounded> BorrowUnchecked<'original, 'unbounded>
46    for &'original mut T
47{
48    type Unbounded = &'unbounded mut T;
49
50    #[inline(always)]
51    unsafe fn borrow_unchecked(self) -> Self::Unbounded {
52        unsafe { ::core::mem::transmute(self) }
53    }
54}