cow2 0.2.6

Like Cow<B>, but B is covariant
Documentation

Like Cow<'_, B>, but B is covariant

Implemented similar to rust#96312

Since std::borrow::Cow uses associated type, it invariant, see rust#115799 for details

Examples

Use std::borrow::Cow compile-fail case:

use std::borrow::Cow;

fn foo<'a>(_: Cow<'a, [Cow<'a, str>]>) { }
fn bar<'a>(x: Cow<'a, [Cow<'static, str>]>) {
    foo(x);
}

Use cow2::Cow compile-passed case:

use cow2::Cow;

fn foo<'a>(_: Cow<'a, [Cow<'a, str>]>) { }
fn bar<'a>(x: Cow<'a, [Cow<'static, str>]>) {
    foo(x);
}