Re: [PATCH 4/7] xdiff: make fields of xrecord_t Rust friendly
- From
- Phillip Wood <phillip.wood123@gmail.com>
- Date
- Jul 28, 2025, 19:52 UTC
- Message-ID
- <a765cde9-0fad-414a-996f-2ec162d1e4f3@gmail.com>
- In-Reply-To
- <CAH=ZcbCnEpBokM9rxmmkeM9GT948n7+RipXODHLfPssuwJuVCw@mail.gmail.com>
On 28/07/2025 20:34, Ezekiel Newren wrote:
Show 16 quoted lines
> On Fri, Jul 18, 2025 at 7:35 AM Phillip Wood <phillip.wood123@gmail.com> wrote: >> On 17/07/2025 21:32, Ezekiel Newren via GitGitGadget wrote: >>> From: Ezekiel Newren <ezekielnewren@gmail.com> >>> >>> A few commits ago, we added definitions for Rust primitive types, >>> to facilitate interoperability between C and Rust. Switch a >>> few variables to use these types. Which, for now, will >>> require adding some casts. >> >> How necessary is it to change char' to 'u8' so long as the rust and C >> sides both use a type that is the same size? Also what's the advantage >> of using these typedefs rather than the normal C types like unit8_t ? > > Rust defines char as 32 bits. C treats char as signed 8 bits. What git > really means by char* is treat everything like a byte string, and u8 > is how raw bytes are handled in Rust.
Right - we need to use u8 on the rust side but I'm trying to understand why we need to change the type on the C side and why do we need typedefs like usize and u32 on the C side when we already have size_t and uint32_t?
Thanks
Phillip
Show 20 quoted lines
>>> diff --git a/xdiff/xdiffi.c b/xdiff/xdiffi.c
>>> index 5a96e36dfbea..3b364c61f671 100644
>>> --- a/xdiff/xdiffi.c
>>> +++ b/xdiff/xdiffi.c
>>> @@ -418,7 +418,7 @@ static int get_indent(xrecord_t *rec)
>>> long i;
>>> int ret = 0;
>>>
>>> - for (i = 0; i < rec->size; i++) {
>>> + for (i = 0; i < (long) rec->size; i++) {
>>
>> i is a loop counter and array index so we can lose this cast by
>> changeing i to size_t
>
> Ok, but I'm going to change the type of i to usize and stuff it inside
> the loop i.e. for (usize i = 0; ...
>
>> Thanks
>>
>> Phillip