Re: [PATCH v2 3/5] rust: scatterlist: Add type-state abstraction for sg_table
From: Alexandre Courbot
Date: Sat Aug 23 2025 - 10:29:54 EST
On Sat Aug 23, 2025 at 11:20 PM JST, Danilo Krummrich wrote:
> On Sat Aug 23, 2025 at 4:16 PM CEST, Alexandre Courbot wrote:
>> On Sat Aug 23, 2025 at 10:57 PM JST, Danilo Krummrich wrote:
>>> On Sat Aug 23, 2025 at 3:47 PM CEST, Alexandre Courbot wrote:
>>>> Oops, forgot to mention a couple more things:
>>>>
>>>> On Thu Aug 21, 2025 at 1:52 AM JST, Danilo Krummrich wrote:
>>>>> Add a safe Rust abstraction for the kernel's scatter-gather list
>>>>> facilities (`struct scatterlist` and `struct sg_table`).
>>>>>
>>>>> This commit introduces `SGTable<T>`, a wrapper that uses a type-state
>>>>> pattern to provide compile-time guarantees about ownership and lifetime.
>>>>
>>>> Is this actually a typestate? From my understanding, the typestate
>>>> pattern implies transitions from one state to the other (such as
>>>> Unmapped -> Mapped), but in this version there are no such transitions
>>>> (the previous ones had, though). We are just using a generic parameter,
>>>> so mentioning typestate sounds a bit misleading to me.
>>>
>>> I'd argue that it's still kind of a typestate. You can derive &SGTable (i.e.
>>> &SGTable<Borrowed>) from SGTabe<Owned>. So, technically there is an
>>> uni-directional transition I guess.
>>
>> That's technically correct, but is also not the intent of the design, at
>> least compared to something like Unmapped <-> Mapped. Not a big problem
>> if you prefer to keep the current naming though.
>
> I don't mind to name / call it differently, any suggestion?
Simply using "generic parameter" would lift the possiblity for
misinterpretation IMHO.