// This file is part of ICU4X. For terms of use, please see the file // called LICENSE at the top level of the ICU4X source tree // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). #![allow(unused)] use std::borrow::Cow; use yoke::{Yoke, Yokeable}; use zerovec::{maps::ZeroMapKV, ule::AsULE, VarZeroVec, ZeroMap, ZeroVec}; #[derive(Yokeable)] pub struct StringExample { x: String, } #[derive(Yokeable, Copy, Clone)] pub struct IntExample { x: u32, } #[derive(Yokeable, Copy, Clone)] pub struct GenericsExample { x: u32, y: T, } #[derive(Yokeable, Copy, Clone)] pub struct GenericsExampleWithDefault { x: T, y: U, } #[derive(Yokeable)] pub struct CowExample<'a> { x: u8, y: &'a str, z: Cow<'a, str>, w: Cow<'a, [u8]>, } #[derive(Yokeable)] pub struct ZeroVecExample<'a> { var: VarZeroVec<'a, str>, vec: ZeroVec<'a, u16>, } #[derive(Yokeable)] pub struct ZeroVecExampleWithGenerics<'a, T: AsULE> { gen: ZeroVec<'a, T>, vec: ZeroVec<'a, u16>, bare: T, } // Since ZeroMap has generic parameters, the Rust compiler cannot // prove the covariance of the lifetimes. To use derive(Yokeable) // with a type such as ZeroMap, you just add the attribute // yoke(prove_covariance_manually) #[derive(Yokeable)] #[yoke(prove_covariance_manually)] pub struct ZeroMapExample<'a> { map: ZeroMap<'a, str, u16>, } #[derive(Yokeable)] #[yoke(prove_covariance_manually)] pub struct ZeroMapGenericExample<'a, T: for<'b> ZeroMapKV<'b> + ?Sized> { map: ZeroMap<'a, str, T>, } pub struct AssertYokeable { string: Yoke>, int: Yoke>, gen1: Yoke, Box<[u8]>>, gen2: Yoke, Box<[u8]>>, gen_default1: Yoke, Box<[u8]>>, gen_default2: Yoke, Box<[u8]>>, cow: Yoke, Box<[u8]>>, zv: Yoke, Box<[u8]>>, zv_gen1: Yoke, Box<[u8]>>, zv_gen2: Yoke, Box<[u8]>>, map: Yoke, Box<[u8]>>, map_gen1: Yoke, Box<[u8]>>, map_gen2: Yoke, Box<[u8]>>, } fn main() {}