odbc_api

Struct U16String

Source
pub struct U16String { /* private fields */ }
Expand description

An owned, mutable 16-bit wide string with undefined encoding.

The string slice of a U16String is U16Str.

U16String are strings that do not have a defined encoding. While it is sometimes assumed that they contain possibly invalid or ill-formed UTF-16 data, they may be used for any wide encoded string. This is because U16String is intended to be used with FFI functions, where proper encoding cannot be guaranteed. If you need string slices that are always valid UTF-16 strings, use Utf16String instead.

Because U16String does not have a defined encoding, no restrictions are placed on mutating or indexing the string. This means that even if the string contained properly encoded UTF-16 or other encoding data, mutationing or indexing may result in malformed data. Convert to a Utf16String if retaining proper UTF-16 encoding is desired.

§FFI considerations

U16String is not aware of nul values. Strings may or may not be nul-terminated, and may contain invalid and ill-formed UTF-16. These strings are intended to be used with FFI functions that directly use string length, where the strings are known to have proper nul-termination already, or where strings are merely being passed through without modification.

U16CString should be used instead if nul-aware strings are required.

§Examples

The easiest way to use U16String outside of FFI is with the u16str! macro to convert string literals into UTF-16 string slices at compile time:

use widestring::{u16str, U16String};
let hello = U16String::from(u16str!("Hello, world!"));

You can also convert any u16 slice or vector directly:

use widestring::{u16str, U16String};

let sparkle_heart = vec![0xd83d, 0xdc96];
let sparkle_heart = U16String::from_vec(sparkle_heart);

assert_eq!(u16str!("💖"), sparkle_heart);

// This unpaired UTf-16 surrogate is invalid UTF-16, but is perfectly valid in U16String
let malformed_utf16 = vec![0x0, 0xd83d]; // Note that nul values are also valid an untouched
let s = U16String::from_vec(malformed_utf16);

assert_eq!(s.len(), 2);

The following example constructs a U16String and shows how to convert a U16String to a regular Rust String.

use widestring::U16String;
let s = "Test";
// Create a wide string from the rust string
let wstr = U16String::from_str(s);
// Convert back to a rust string
let rust_str = wstr.to_string_lossy();
assert_eq!(rust_str, "Test");

Implementations§

Source§

impl U16String

Source

pub const fn new() -> U16String

Constructs a new empty wide string.

Source

pub fn from_vec(raw: impl Into<Vec<u16>>) -> U16String

Constructs a wide string from a vector.

No checks are made on the contents of the vector. It may or may not be valid character data.

§Examples
use widestring::U16String;
let v = vec![84u16, 104u16, 101u16]; // 'T' 'h' 'e'
// Create a wide string from the vector
let wstr = U16String::from_vec(v);
use widestring::U32String;
let v = vec![84u32, 104u32, 101u32]; // 'T' 'h' 'e'
// Create a wide string from the vector
let wstr = U32String::from_vec(v);
Source

pub unsafe fn from_ptr(p: *const u16, len: usize) -> U16String

Constructs a wide string copy from a pointer and a length.

The len argument is the number of elements, not the number of bytes.

§Safety

This function is unsafe as there is no guarantee that the given pointer is valid for len elements.

In addition, the data must meet the safety conditions of std::slice::from_raw_parts.

§Panics

Panics if len is greater than 0 but p is a null pointer.

Source

pub fn with_capacity(capacity: usize) -> U16String

Constructs a wide string with the given capacity.

The string will be able to hold exactly capacity elements without reallocating. If capacity is set to 0, the string will not initially allocate.

Source

pub fn capacity(&self) -> usize

Returns the capacity this wide string can hold without reallocating.

Source

pub fn clear(&mut self)

Truncates the wide string to zero length.

Source

pub fn reserve(&mut self, additional: usize)

Reserves the capacity for at least additional more capacity to be inserted in the given wide string.

More space may be reserved to avoid frequent allocations.

Source

pub fn reserve_exact(&mut self, additional: usize)

Reserves the minimum capacity for exactly additional more capacity to be inserted in the given wide string. Does nothing if the capacity is already sufficient.

Note that the allocator may give more space than is requested. Therefore capacity can not be relied upon to be precisely minimal. Prefer reserve if future insertions are expected.

Source

pub fn into_vec(self) -> Vec<u16>

Converts the string into a Vec, consuming the string in the process.

Source

pub fn as_ustr(&self) -> &U16Str

Converts to a wide string slice.

Source

pub fn as_mut_ustr(&mut self) -> &mut U16Str

Converts to a mutable wide string slice.

Source

pub fn as_vec(&self) -> &Vec<u16>

Returns a Vec reference to the contents of this string.

Source

pub fn as_mut_vec(&mut self) -> &mut Vec<u16>

Returns a mutable reference to the contents of this string.

Source

pub fn push(&mut self, s: impl AsRef<U16Str>)

Extends the string with the given string slice.

No checks are performed on the strings. It is possible to end up nul values inside the string, or invalid encoding, and it is up to the caller to determine if that is acceptable.

§Examples
use widestring::U16String;
let s = "MyString";
let mut wstr = U16String::from_str(s);
let cloned = wstr.clone();
// Push the clone to the end, repeating the string twice.
wstr.push(cloned);

assert_eq!(wstr.to_string().unwrap(), "MyStringMyString");
Source

pub fn push_slice(&mut self, s: impl AsRef<[u16]>)

Extends the string with the given slice.

No checks are performed on the strings. It is possible to end up nul values inside the string, or invalid encoding, and it is up to the caller to determine if that is acceptable.

§Examples
use widestring::U16String;
let s = "MyString";
let mut wstr = U16String::from_str(s);
let cloned = wstr.clone();
// Push the clone to the end, repeating the string twice.
wstr.push_slice(cloned);

assert_eq!(wstr.to_string().unwrap(), "MyStringMyString");
Source

pub fn shrink_to_fit(&mut self)

Shrinks the capacity of the wide string to match its length.

Source

pub fn shrink_to(&mut self, min_capacity: usize)

Shrinks the capacity of this string with a lower bound.

The capacity will remain at least as large as both the length and the supplied value.

If the current capacity is less than the lower limit, this is a no-op.

Source

pub fn into_boxed_ustr(self) -> Box<U16Str>

Converts this wide string into a boxed string slice.

§Examples
use widestring::{U16String, U16Str};

let s = U16String::from_str("hello");

let b: Box<U16Str> = s.into_boxed_ustr();
Source

pub fn truncate(&mut self, new_len: usize)

Shortens this string to the specified length.

If new_len is greater than the string’s current length, this has no effect.

Note that this method has no effect on the allocated capacity of the string.

Source

pub fn insert_ustr(&mut self, idx: usize, string: &U16Str)

Inserts a string slice into this string at a specified position.

This is an O(n) operation as it requires copying every element in the buffer.

§Panics

Panics if idx is larger than the string’s length.

Source

pub fn split_off(&mut self, at: usize) -> U16String

Splits the string into two at the given index.

Returns a newly allocated string. self contains values [0, at), and the returned string contains values [at, len).

Note that the capacity of self does not change.

§Panics

Panics if at is equal to or greater than the length of the string.

Source

pub fn retain<F>(&mut self, f: F)
where F: FnMut(u16) -> bool,

Retains only the elements specified by the predicate.

In other words, remove all elements e such that f(e) returns false. This method operates in place, visiting each element exactly once in the original order, and preserves the order of the retained elements.

Source

pub fn drain<R>(&mut self, range: R) -> Drain<'_, u16>
where R: RangeBounds<usize>,

Creates a draining iterator that removes the specified range in the string and yields the removed elements.

Note: The element range is removed even if the iterator is not consumed until the end.

§Panics

Panics if the starting point or end point are out of bounds.

Source

pub fn replace_range<R>(&mut self, range: R, replace_with: impl AsRef<U16Str>)
where R: RangeBounds<usize>,

Removes the specified range in the string, and replaces it with the given string.

The given string doesn’t need to be the same length as the range.

§Panics

Panics if the starting point or end point are out of bounds.

Source§

impl U16String

Source

pub fn from_str<S>(s: &S) -> U16String
where S: AsRef<str> + ?Sized,

Constructs a U16String copy from a str, encoding it as UTF-16.

This makes a string copy of the str. Since str will always be valid UTF-8, the resulting U16String will also be valid UTF-16.

§Examples
use widestring::U16String;
let s = "MyString";
// Create a wide string from the string
let wstr = U16String::from_str(s);

assert_eq!(wstr.to_string().unwrap(), s);
Source

pub fn from_os_str<S>(s: &S) -> U16String
where S: AsRef<OsStr> + ?Sized,

Constructs a U16String copy from an OsStr.

This makes a string copy of the OsStr. Since OsStr makes no guarantees that it is valid data, there is no guarantee that the resulting U16String will be valid UTF-16.

Note that the encoding of OsStr is platform-dependent, so on some platforms this may make an encoding conversions, while on other platforms (such as windows) no changes to the string will be made.

§Examples
use widestring::U16String;
let s = "MyString";
// Create a wide string from the string
let wstr = U16String::from_os_str(s);

assert_eq!(wstr.to_string().unwrap(), s);
Source

pub fn push_str(&mut self, s: impl AsRef<str>)

Extends the string with the given string slice, encoding it at UTF-16.

No checks are performed on the strings. It is possible to end up nul values inside the string, and it is up to the caller to determine if that is acceptable.

§Examples
use widestring::U16String;
let s = "MyString";
let mut wstr = U16String::from_str(s);
// Push the original to the end, repeating the string twice.
wstr.push_str(s);

assert_eq!(wstr.to_string().unwrap(), "MyStringMyString");
Source

pub fn push_os_str(&mut self, s: impl AsRef<OsStr>)

Extends the string with the given string slice.

No checks are performed on the strings. It is possible to end up nul values inside the string, and it is up to the caller to determine if that is acceptable.

§Examples
use widestring::U16String;
let s = "MyString";
let mut wstr = U16String::from_str(s);
// Push the original to the end, repeating the string twice.
wstr.push_os_str(s);

assert_eq!(wstr.to_string().unwrap(), "MyStringMyString");
Source

pub fn push_char(&mut self, c: char)

Appends the given char encoded as UTF-16 to the end of this string.

Source

pub fn pop_char(&mut self) -> Option<u32>

Removes the last character or unpaired surrogate from the string buffer and returns it.

This method assumes UTF-16 encoding, but handles invalid UTF-16 by returning unpaired surrogates.

Returns None if this String is empty. Otherwise, returns the character cast to a u32 or the value of the unpaired surrogate as a u32 value.

Source

pub fn remove_char(&mut self, idx: usize) -> u32

Removes a char or unpaired surrogate from this string at a position and returns it as a u32.

This method assumes UTF-16 encoding, but handles invalid UTF-16 by returning unpaired surrogates.

This is an O(n) operation, as it requires copying every element in the buffer.

§Panics

Panics if idx is larger than or equal to the string’s length.

Source

pub fn insert_char(&mut self, idx: usize, c: char)

Inserts a character encoded as UTF-16 into this string at a specified position.

This is an O(n) operation as it requires copying every element in the buffer.

§Panics

Panics if idx is larger than the string’s length.

Methods from Deref<Target = U16Str>§

Source

pub fn to_ustring(&self) -> U16String

Copies the string reference to a new owned wide string.

Source

pub fn as_slice(&self) -> &[u16]

Converts to a slice of the underlying elements of the string.

Source

pub fn as_mut_slice(&mut self) -> &mut [u16]

Converts to a mutable slice of the underlying elements of the string.

Source

pub fn as_ptr(&self) -> *const u16

Returns a raw pointer to the string.

The caller must ensure that the string outlives the pointer this function returns, or else it will end up pointing to garbage.

The caller must also ensure that the memory the pointer (non-transitively) points to is never written to (except inside an UnsafeCell) using this pointer or any pointer derived from it. If you need to mutate the contents of the string, use as_mut_ptr.

Modifying the container referenced by this string may cause its buffer to be reallocated, which would also make any pointers to it invalid.

Source

pub fn as_mut_ptr(&mut self) -> *mut u16

Returns an unsafe mutable raw pointer to the string.

The caller must ensure that the string outlives the pointer this function returns, or else it will end up pointing to garbage.

Modifying the container referenced by this string may cause its buffer to be reallocated, which would also make any pointers to it invalid.

Source

pub fn as_ptr_range(&self) -> Range<*const u16>

Returns the two raw pointers spanning the string slice.

The returned range is half-open, which means that the end pointer points one past the last element of the slice. This way, an empty slice is represented by two equal pointers, and the difference between the two pointers represents the size of the slice.

See as_ptr for warnings on using these pointers. The end pointer requires extra caution, as it does not point to a valid element in the slice.

This function is useful for interacting with foreign interfaces which use two pointers to refer to a range of elements in memory, as is common in C++.

Source

pub fn as_mut_ptr_range(&mut self) -> Range<*mut u16>

Returns the two unsafe mutable pointers spanning the string slice.

The returned range is half-open, which means that the end pointer points one past the last element of the slice. This way, an empty slice is represented by two equal pointers, and the difference between the two pointers represents the size of the slice.

See as_mut_ptr for warnings on using these pointers. The end pointer requires extra caution, as it does not point to a valid element in the slice.

This function is useful for interacting with foreign interfaces which use two pointers to refer to a range of elements in memory, as is common in C++.

Source

pub fn len(&self) -> usize

Returns the length of the string as number of elements (not number of bytes).

Source

pub fn is_empty(&self) -> bool

Returns whether this string contains no data.

Source

pub fn display(&self) -> Display<'_, U16Str>

Returns an object that implements Display for printing strings that may contain non-Unicode data.

This method assumes this string is intended to be UTF-16 encoding, but handles ill-formed UTF-16 sequences lossily. The returned struct implements the Display trait in a way that decoding the string is lossy UTF-16 decoding but no heap allocations are performed, such as by to_string_lossy.

By default, invalid Unicode data is replaced with U+FFFD REPLACEMENT CHARACTER (�). If you wish to simply skip any invalid Uncode data and forego the replacement, you may use the alternate formatting with {:#}.

§Examples

Basic usage:

use widestring::U16Str;

// 𝄞mus<invalid>ic<invalid>
let s = U16Str::from_slice(&[
    0xD834, 0xDD1E, 0x006d, 0x0075, 0x0073, 0xDD1E, 0x0069, 0x0063, 0xD834,
]);

assert_eq!(format!("{}", s.display()),
"𝄞mus�ic�"
);

Using alternate formatting style to skip invalid values entirely:

use widestring::U16Str;

// 𝄞mus<invalid>ic<invalid>
let s = U16Str::from_slice(&[
    0xD834, 0xDD1E, 0x006d, 0x0075, 0x0073, 0xDD1E, 0x0069, 0x0063, 0xD834,
]);

assert_eq!(format!("{:#}", s.display()),
"𝄞music"
);
Source

pub fn get<I>(&self, i: I) -> Option<&U16Str>
where I: SliceIndex<[u16], Output = [u16]>,

Returns a subslice of the string.

This is the non-panicking alternative to indexing the string. Returns None whenever equivalent indexing operation would panic.

Source

pub fn get_mut<I>(&mut self, i: I) -> Option<&mut U16Str>
where I: SliceIndex<[u16], Output = [u16]>,

Returns a mutable subslice of the string.

This is the non-panicking alternative to indexing the string. Returns None whenever equivalent indexing operation would panic.

Source

pub unsafe fn get_unchecked<I>(&self, i: I) -> &U16Str
where I: SliceIndex<[u16], Output = [u16]>,

Returns an unchecked subslice of the string.

This is the unchecked alternative to indexing the string.

§Safety

Callers of this function are responsible that these preconditions are satisfied:

  • The starting index must not exceed the ending index;
  • Indexes must be within bounds of the original slice.

Failing that, the returned string slice may reference invalid memory.

Source

pub unsafe fn get_unchecked_mut<I>(&mut self, i: I) -> &mut U16Str
where I: SliceIndex<[u16], Output = [u16]>,

Returns aa mutable, unchecked subslice of the string.

This is the unchecked alternative to indexing the string.

§Safety

Callers of this function are responsible that these preconditions are satisfied:

  • The starting index must not exceed the ending index;
  • Indexes must be within bounds of the original slice.

Failing that, the returned string slice may reference invalid memory.

Source

pub fn split_at(&self, mid: usize) -> (&U16Str, &U16Str)

Divide one string slice into two at an index.

The argument, mid, should be an offset from the start of the string.

The two slices returned go from the start of the string slice to mid, and from mid to the end of the string slice.

To get mutable string slices instead, see the split_at_mut method.

Source

pub fn split_at_mut(&mut self, mid: usize) -> (&mut U16Str, &mut U16Str)

Divide one mutable string slice into two at an index.

The argument, mid, should be an offset from the start of the string.

The two slices returned go from the start of the string slice to mid, and from mid to the end of the string slice.

To get immutable string slices instead, see the split_at method.

Source

pub fn repeat(&self, n: usize) -> U16String

Creates a new owned string by repeating this string n times.

§Panics

This function will panic if the capacity would overflow.

Source

pub fn to_os_string(&self) -> OsString

Decodes a string reference to an owned OsString.

This makes a string copy of the U16Str. Since U16Str makes no guarantees that its encoding is UTF-16 or that the data valid UTF-16, there is no guarantee that the resulting OsString will have a valid underlying encoding either.

Note that the encoding of OsString is platform-dependent, so on some platforms this may make an encoding conversions, while on other platforms (such as windows) no changes to the string will be made.

§Examples
use widestring::U16String;
use std::ffi::OsString;
let s = "MyString";
// Create a wide string from the string
let wstr = U16String::from_str(s);
// Create an OsString from the wide string
let osstr = wstr.to_os_string();

assert_eq!(osstr, OsString::from(s));
Source

pub fn to_string(&self) -> Result<String, Utf16Error>

Decodes this string to a String if it contains valid UTF-16 data.

This method assumes this string is encoded as UTF-16 and attempts to decode it as such.

§Failures

Returns an error if the string contains any invalid UTF-16 data.

§Examples
use widestring::U16String;
let s = "MyString";
// Create a wide string from the string
let wstr = U16String::from_str(s);
// Create a regular string from the wide string
let s2 = wstr.to_string().unwrap();

assert_eq!(s2, s);
Source

pub fn to_string_lossy(&self) -> String

Decodes the string to a String even if it is invalid UTF-16 data.

This method assumes this string is encoded as UTF-16 and attempts to decode it as such. Any invalid sequences are replaced with U+FFFD REPLACEMENT CHARACTER, which looks like this: �

§Examples
use widestring::U16String;
let s = "MyString";
// Create a wide string from the string
let wstr = U16String::from_str(s);
// Create a regular string from the wide string
let lossy = wstr.to_string_lossy();

assert_eq!(lossy, s);
Source

pub fn chars(&self) -> CharsUtf16<'_>

Returns an iterator over the chars of a string slice.

As this string has no defined encoding, this method assumes the string is UTF-16. Since it may consist of invalid UTF-16, the iterator returned by this method is an iterator over Result<char, DecodeUtf16Error> instead of chars directly. If you would like a lossy iterator over charss directly, instead use chars_lossy.

It’s important to remember that char represents a Unicode Scalar Value, and may not match your idea of what a ‘character’ is. Iteration over grapheme clusters may be what you actually want. That functionality is not provided by by this crate.

Source

pub fn chars_lossy(&self) -> CharsLossyUtf16<'_>

Returns a lossy iterator over the chars of a string slice.

As this string has no defined encoding, this method assumes the string is UTF-16. Since it may consist of invalid UTF-16, the iterator returned by this method will replace unpaired surrogates with U+FFFD REPLACEMENT CHARACTER (�). This is a lossy version of chars.

It’s important to remember that char represents a Unicode Scalar Value, and may not match your idea of what a ‘character’ is. Iteration over grapheme clusters may be what you actually want. That functionality is not provided by by this crate.

Source

pub fn char_indices(&self) -> CharIndicesUtf16<'_>

Returns an iterator over the chars of a string slice, and their positions.

As this string has no defined encoding, this method assumes the string is UTF-16. Since it may consist of invalid UTF-16, the iterator returned by this method is an iterator over Result<char, DecodeUtf16Error> as well as their positions, instead of chars directly. If you would like a lossy indices iterator over charss directly, instead use char_indices_lossy.

The iterator yields tuples. The position is first, the char is second.

Source

pub fn char_indices_lossy(&self) -> CharIndicesLossyUtf16<'_>

Returns a lossy iterator over the chars of a string slice, and their positions.

As this string slice may consist of invalid UTF-16, the iterator returned by this method will replace unpaired surrogates with U+FFFD REPLACEMENT CHARACTER (�), as well as the positions of all characters. This is a lossy version of char_indices.

The iterator yields tuples. The position is first, the char is second.

Trait Implementations§

Source§

impl Add<&U16CStr> for U16String

Source§

type Output = U16String

The resulting type after applying the + operator.
Source§

fn add(self, rhs: &U16CStr) -> <U16String as Add<&U16CStr>>::Output

Performs the + operation. Read more
Source§

impl Add<&U16Str> for U16String

Source§

type Output = U16String

The resulting type after applying the + operator.
Source§

fn add(self, rhs: &U16Str) -> <U16String as Add<&U16Str>>::Output

Performs the + operation. Read more
Source§

impl Add<&Utf16Str> for U16String

Source§

type Output = U16String

The resulting type after applying the + operator.
Source§

fn add(self, rhs: &Utf16Str) -> <U16String as Add<&Utf16Str>>::Output

Performs the + operation. Read more
Source§

impl Add<&str> for U16String

Source§

type Output = U16String

The resulting type after applying the + operator.
Source§

fn add(self, rhs: &str) -> <U16String as Add<&str>>::Output

Performs the + operation. Read more
Source§

impl AddAssign<&U16CStr> for U16String

Source§

fn add_assign(&mut self, rhs: &U16CStr)

Performs the += operation. Read more
Source§

impl AddAssign<&U16Str> for U16String

Source§

fn add_assign(&mut self, rhs: &U16Str)

Performs the += operation. Read more
Source§

impl AddAssign<&Utf16Str> for U16String

Source§

fn add_assign(&mut self, rhs: &Utf16Str)

Performs the += operation. Read more
Source§

impl AddAssign<&str> for U16String

Source§

fn add_assign(&mut self, rhs: &str)

Performs the += operation. Read more
Source§

impl AsMut<[u16]> for U16String

Source§

fn as_mut(&mut self) -> &mut [u16]

Converts this type into a mutable reference of the (usually inferred) input type.
Source§

impl AsMut<U16Str> for U16String

Source§

fn as_mut(&mut self) -> &mut U16Str

Converts this type into a mutable reference of the (usually inferred) input type.
Source§

impl AsRef<[u16]> for U16String

Source§

fn as_ref(&self) -> &[u16]

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl AsRef<U16Str> for U16String

Source§

fn as_ref(&self) -> &U16Str

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl Borrow<U16Str> for U16String

Source§

fn borrow(&self) -> &U16Str

Immutably borrows from an owned value. Read more
Source§

impl BorrowMut<U16Str> for U16String

Source§

fn borrow_mut(&mut self) -> &mut U16Str

Mutably borrows from an owned value. Read more
Source§

impl Clone for U16String

Source§

fn clone(&self) -> U16String

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for U16String

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl Default for U16String

Source§

fn default() -> U16String

Returns the “default value” for a type. Read more
Source§

impl Deref for U16String

Source§

type Target = U16Str

The resulting type after dereferencing.
Source§

fn deref(&self) -> &U16Str

Dereferences the value.
Source§

impl DerefMut for U16String

Source§

fn deref_mut(&mut self) -> &mut <U16String as Deref>::Target

Mutably dereferences the value.
Source§

impl<'a> Extend<&'a U16CStr> for U16String

Source§

fn extend<T>(&mut self, iter: T)
where T: IntoIterator<Item = &'a U16CStr>,

Extends a collection with the contents of an iterator. Read more
Source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
Source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
Source§

impl<'a> Extend<&'a U16Str> for U16String

Source§

fn extend<T>(&mut self, iter: T)
where T: IntoIterator<Item = &'a U16Str>,

Extends a collection with the contents of an iterator. Read more
Source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
Source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
Source§

impl<'a> Extend<&'a Utf16Str> for U16String

Source§

fn extend<T>(&mut self, iter: T)
where T: IntoIterator<Item = &'a Utf16Str>,

Extends a collection with the contents of an iterator. Read more
Source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
Source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
Source§

impl<'a> Extend<&'a char> for U16String

Source§

fn extend<T>(&mut self, iter: T)
where T: IntoIterator<Item = &'a char>,

Extends a collection with the contents of an iterator. Read more
Source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
Source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
Source§

impl<'a> Extend<&'a str> for U16String

Source§

fn extend<T>(&mut self, iter: T)
where T: IntoIterator<Item = &'a str>,

Extends a collection with the contents of an iterator. Read more
Source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
Source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
Source§

impl Extend<Box<U16Str>> for U16String

Source§

fn extend<T>(&mut self, iter: T)
where T: IntoIterator<Item = Box<U16Str>>,

Extends a collection with the contents of an iterator. Read more
Source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
Source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
Source§

impl<'a> Extend<Cow<'a, U16Str>> for U16String

Source§

fn extend<T>(&mut self, iter: T)
where T: IntoIterator<Item = Cow<'a, U16Str>>,

Extends a collection with the contents of an iterator. Read more
Source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
Source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
Source§

impl Extend<String> for U16String

Source§

fn extend<T>(&mut self, iter: T)
where T: IntoIterator<Item = String>,

Extends a collection with the contents of an iterator. Read more
Source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
Source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
Source§

impl Extend<U16CString> for U16String

Source§

fn extend<T>(&mut self, iter: T)
where T: IntoIterator<Item = U16CString>,

Extends a collection with the contents of an iterator. Read more
Source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
Source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
Source§

impl Extend<U16String> for U16String

Source§

fn extend<T>(&mut self, iter: T)
where T: IntoIterator<Item = U16String>,

Extends a collection with the contents of an iterator. Read more
Source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
Source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
Source§

impl Extend<Utf16String> for U16String

Source§

fn extend<T>(&mut self, iter: T)
where T: IntoIterator<Item = Utf16String>,

Extends a collection with the contents of an iterator. Read more
Source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
Source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
Source§

impl Extend<char> for U16String

Source§

fn extend<T>(&mut self, iter: T)
where T: IntoIterator<Item = char>,

Extends a collection with the contents of an iterator. Read more
Source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
Source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
Source§

impl<'a, T> From<&'a T> for U16String
where T: AsRef<U16Str> + ?Sized,

Source§

fn from(s: &'a T) -> U16String

Converts to this type from the input type.
Source§

impl From<&str> for U16String

Source§

fn from(s: &str) -> U16String

Converts to this type from the input type.
Source§

impl From<Box<U16Str>> for U16String

Source§

fn from(boxed: Box<U16Str>) -> U16String

Converts to this type from the input type.
Source§

impl From<OsString> for U16String

Source§

fn from(s: OsString) -> U16String

Converts to this type from the input type.
Source§

impl From<String> for U16String

Source§

fn from(s: String) -> U16String

Converts to this type from the input type.
Source§

impl From<U16CString> for U16String

Source§

fn from(s: U16CString) -> U16String

Converts to this type from the input type.
Source§

impl From<Utf16String> for U16String

Source§

fn from(value: Utf16String) -> U16String

Converts to this type from the input type.
Source§

impl From<Vec<u16>> for U16String

Source§

fn from(value: Vec<u16>) -> U16String

Converts to this type from the input type.
Source§

impl<'a> FromIterator<&'a U16CStr> for U16String

Source§

fn from_iter<T>(iter: T) -> U16String
where T: IntoIterator<Item = &'a U16CStr>,

Creates a value from an iterator. Read more
Source§

impl<'a> FromIterator<&'a U16Str> for U16String

Source§

fn from_iter<T>(iter: T) -> U16String
where T: IntoIterator<Item = &'a U16Str>,

Creates a value from an iterator. Read more
Source§

impl<'a> FromIterator<&'a Utf16Str> for U16String

Source§

fn from_iter<T>(iter: T) -> U16String
where T: IntoIterator<Item = &'a Utf16Str>,

Creates a value from an iterator. Read more
Source§

impl<'a> FromIterator<&'a char> for U16String

Source§

fn from_iter<T>(iter: T) -> U16String
where T: IntoIterator<Item = &'a char>,

Creates a value from an iterator. Read more
Source§

impl<'a> FromIterator<&'a str> for U16String

Source§

fn from_iter<T>(iter: T) -> U16String
where T: IntoIterator<Item = &'a str>,

Creates a value from an iterator. Read more
Source§

impl FromIterator<Box<U16Str>> for U16String

Source§

fn from_iter<T>(iter: T) -> U16String
where T: IntoIterator<Item = Box<U16Str>>,

Creates a value from an iterator. Read more
Source§

impl<'a> FromIterator<Cow<'a, U16Str>> for U16String

Source§

fn from_iter<T>(iter: T) -> U16String
where T: IntoIterator<Item = Cow<'a, U16Str>>,

Creates a value from an iterator. Read more
Source§

impl FromIterator<String> for U16String

Source§

fn from_iter<T>(iter: T) -> U16String
where T: IntoIterator<Item = String>,

Creates a value from an iterator. Read more
Source§

impl FromIterator<U16CString> for U16String

Source§

fn from_iter<T>(iter: T) -> U16String
where T: IntoIterator<Item = U16CString>,

Creates a value from an iterator. Read more
Source§

impl FromIterator<U16String> for U16String

Source§

fn from_iter<T>(iter: T) -> U16String
where T: IntoIterator<Item = U16String>,

Creates a value from an iterator. Read more
Source§

impl FromIterator<Utf16String> for U16String

Source§

fn from_iter<T>(iter: T) -> U16String
where T: IntoIterator<Item = Utf16String>,

Creates a value from an iterator. Read more
Source§

impl FromIterator<char> for U16String

Source§

fn from_iter<T>(iter: T) -> U16String
where T: IntoIterator<Item = char>,

Creates a value from an iterator. Read more
Source§

impl FromStr for U16String

Source§

type Err = Infallible

The associated error which can be returned from parsing.
Source§

fn from_str(s: &str) -> Result<U16String, <U16String as FromStr>::Err>

Parses a string s to return a value of this type. Read more
Source§

impl Hash for U16String

Source§

fn hash<__H>(&self, state: &mut __H)
where __H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl<I> Index<I> for U16String
where I: SliceIndex<[u16], Output = [u16]>,

Source§

type Output = U16Str

The returned type after indexing.
Source§

fn index(&self, index: I) -> &U16Str

Performs the indexing (container[index]) operation. Read more
Source§

impl<I> IndexMut<I> for U16String
where I: SliceIndex<[u16], Output = [u16]>,

Source§

fn index_mut(&mut self, index: I) -> &mut <U16String as Index<I>>::Output

Performs the mutable indexing (container[index]) operation. Read more
Source§

impl IntoParameter for U16String

Source§

impl Ord for U16String

Source§

fn cmp(&self, other: &U16String) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · Source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · Source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · Source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized,

Restrict a value to a certain interval. Read more
Source§

impl<'a> PartialEq<&'a U16CStr> for U16String

Source§

fn eq(&self, other: &&'a U16CStr) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<'a> PartialEq<&'a U16Str> for U16String

Source§

fn eq(&self, other: &&'a U16Str) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<'a> PartialEq<Cow<'a, U16CStr>> for U16String

Source§

fn eq(&self, other: &Cow<'a, U16CStr>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<'a> PartialEq<Cow<'a, U16Str>> for U16String

Source§

fn eq(&self, other: &Cow<'a, U16Str>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl PartialEq<U16CStr> for U16String

Source§

fn eq(&self, other: &U16CStr) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl PartialEq<U16CString> for U16String

Source§

fn eq(&self, other: &U16CString) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl PartialEq<U16Str> for U16String

Source§

fn eq(&self, other: &U16Str) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl PartialEq<U16String> for &U16CStr

Source§

fn eq(&self, other: &U16String) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl PartialEq<U16String> for &U16Str

Source§

fn eq(&self, other: &U16String) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl PartialEq<U16String> for U16CStr

Source§

fn eq(&self, other: &U16String) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl PartialEq<U16String> for U16Str

Source§

fn eq(&self, other: &U16String) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl PartialEq<U16String> for Utf16Str

Source§

fn eq(&self, other: &U16String) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl PartialEq<Utf16Str> for U16String

Source§

fn eq(&self, other: &Utf16Str) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl PartialEq<Utf16String> for U16String

Source§

fn eq(&self, other: &Utf16String) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl PartialEq for U16String

Source§

fn eq(&self, other: &U16String) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<'a> PartialOrd<&'a U16CStr> for U16String

Source§

fn partial_cmp(&self, other: &&'a U16CStr) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · Source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl<'a> PartialOrd<&'a U16Str> for U16String

Source§

fn partial_cmp(&self, other: &&'a U16Str) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · Source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl<'a> PartialOrd<Cow<'a, U16CStr>> for U16String

Source§

fn partial_cmp(&self, other: &Cow<'a, U16CStr>) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · Source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl<'a> PartialOrd<Cow<'a, U16Str>> for U16String

Source§

fn partial_cmp(&self, other: &Cow<'a, U16Str>) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · Source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl PartialOrd<U16CStr> for U16String

Source§

fn partial_cmp(&self, other: &U16CStr) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · Source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl PartialOrd<U16CString> for U16String

Source§

fn partial_cmp(&self, other: &U16CString) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · Source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl PartialOrd<U16Str> for U16String

Source§

fn partial_cmp(&self, other: &U16Str) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · Source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl PartialOrd for U16String

Source§

fn partial_cmp(&self, other: &U16String) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · Source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl Write for U16String

Source§

fn write_str(&mut self, s: &str) -> Result<(), Error>

Writes a string slice into this writer, returning whether the write succeeded. Read more
Source§

fn write_char(&mut self, c: char) -> Result<(), Error>

Writes a char into this writer, returning whether the write succeeded. Read more
1.0.0 · Source§

fn write_fmt(&mut self, args: Arguments<'_>) -> Result<(), Error>

Glue for usage of the write! macro with implementors of this trait. Read more
Source§

impl Eq for U16String

Source§

impl StructuralPartialEq for U16String

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.