Re: [PATCH 1/4] rust: alloc: implement `Borrow` and `BorrowMut` for `Vec`

From: Alexandre Courbot
Date: Sun Jun 01 2025 - 21:25:50 EST


Hi Benno,

On Mon Jun 2, 2025 at 1:11 AM JST, Benno Lossin wrote:
> On Sun Jun 1, 2025 at 5:00 AM CEST, Alexandre Courbot wrote:
>> Implement these two common traits, which allow generic types to store
>> either an owned value or a reference to it.
>
> I don't understand the second part of the sentence.

I want to say that Borrow allows you to do something like:

struct Foo<B: Borrow<u32>>(B);

// `foo1` owns its value...
let foo1 = Foo(0x12);

let i = 0x24;
// ... but `foo2` just borrows it, subject to the lifetime of `i`.
let foo2 = Foo(&i);

And the implementations in this series also let you do:

// `foo3`'s value is owned, but heap-allocated
let foo3 = Arc::new(KBox::new(0x56, GFP_KERNEL)?);

let j = Arc::new(0x78, GFP_KERNEL)?;
// `foo4`'s value is shared and its lifetime runtime-managed.
let foo4 = Foo(j.clone());