Coverage Report

Created: 2025-11-24 06:31

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/rust/registry/src/index.crates.io-1949cf8c6b5b557f/yoke-0.8.1/src/zero_from.rs
Line
Count
Source
1
// This file is part of ICU4X. For terms of use, please see the file
2
// called LICENSE at the top level of the ICU4X source tree
3
// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
4
5
use crate::Yoke;
6
use crate::Yokeable;
7
8
use core::ops::Deref;
9
use stable_deref_trait::StableDeref;
10
11
use crate::ZeroFrom;
12
13
impl<Y, C> Yoke<Y, C>
14
where
15
    Y: for<'a> Yokeable<'a>,
16
    for<'a> <Y as Yokeable<'a>>::Output: ZeroFrom<'a, <C as Deref>::Target>,
17
    C: StableDeref + Deref,
18
    <C as Deref>::Target: 'static,
19
{
20
    /// Construct a [`Yoke`]`<Y, C>` from a cart implementing `StableDeref` by zero-copy cloning
21
    /// the cart to `Y` and then yokeing that object to the cart.
22
    ///
23
    /// The type `Y` must implement [`ZeroFrom`]`<C::Target>`. This trait is auto-implemented
24
    /// on many common types and can be custom implemented or derived in order to make it easier
25
    /// to construct a `Yoke`.
26
    ///
27
    /// # Example
28
    ///
29
    /// Attach to a cart:
30
    ///
31
    /// ```
32
    /// use std::borrow::Cow;
33
    /// use yoke::Yoke;
34
    ///
35
    /// let yoke = Yoke::<Cow<'static, str>, String>::attach_to_zero_copy_cart(
36
    ///     "demo".to_owned(),
37
    /// );
38
    ///
39
    /// assert_eq!("demo", yoke.get());
40
    /// ```
41
0
    pub fn attach_to_zero_copy_cart(cart: C) -> Self {
42
0
        Yoke::<Y, C>::attach_to_cart(cart, |c| <Y as Yokeable>::Output::zero_from(c))
43
0
    }
44
}