lkml.org 
[lkml]   [2024]   [Feb]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
SubjectRe: [PATCH v3] rust: str: add {make,to}_{upper,lower}case() to CString
From
On 2/16/24 18:11, Danilo Krummrich wrote:
> On 2/16/24 17:53, Alice Ryhl wrote:
>>> +    /// Returns a copy of this [`CString`] where each character is
>>> mapped to its
>>> +    /// ASCII upper case equivalent.
>>> +    ///
>>> +    /// ASCII letters 'a' to 'z' are mapped to 'A' to 'Z',
>>> +    /// but non-ASCII letters are unchanged.
>>> +    ///
>>> +    /// To uppercase the value in-place, use [`make_ascii_uppercase`].
>>> +    ///
>>> +    /// [`make_ascii_uppercase`]: str::make_ascii_uppercase
>>> +    pub fn to_ascii_uppercase(&self) -> Result<CString, AllocError> {
>>> +        let mut s = (*self).to_cstring()?;
>>> +
>>> +        s.make_ascii_uppercase();
>>> +
>>> +        return Ok(s);
>>> +    }
>>
>> Please move these to `CStr` as well.
>
> That would result into two copies if I actually want a CString, wouldn't
> it?
>
> Also, what would be the use case? And even if someone wants to have a CStr
> again, couldn't we just deref the resulting CString?

To clarify, I want you to move it to the `impl CStr` block. That changes
the type of the `self` argument. I don't want you to change the return
type - that should still be `CString`.

Currently, if I have a `&CStr` and I want an uppercase `CString`, I
can't do that with this method.

Alice

\
 
 \ /
  Last update: 2024-05-27 15:07    [W:1.482 / U:0.012 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site