Releases: starkat99/widestring-rs
Releases · starkat99/widestring-rs
1.1.0
Added
Utf32String::into_char_vec
and missing conversion toVec<char>
forUtf32String
. Fixes #37.include_utf16str!
macro to include UTF-16 file at compile-time asUtf16Str
. By @daxpedda.
Fixed
U16String::pop_char
panics with surrogate string. Fixes #38.- Various import warnings and new clippy warnings, plus stabilized debugger visualizer warnings.
1.0.2
1.0.1
Fixed
- Reduce collision potential for macros. By @OpenByteDev.
1.0.0
Changed
- Breaking Change Minimum supported Rust version is now 1.58.
- Added
#[must_use]
attributes to many crate functions, as appropriate. - Remove
unsafe
qualifiers fromas_mut_ptr
andas_mut_ptr_range
to match standard library. By @yescallop.
Added
- Added
new
function that creates and empty string toU16CString
andU32CString
to match other string types. - Additional
From
implementations for conversion toOsString
.
Also see the changes in 1.0.0-beta.1 if upgrading from 0.5.1 or earlier.
1.0.0-beta.1
Changed
- Breaking Change Minimum supported Rust version is now 1.56.
- Breaking Change The following methods on
U16String
andU32String
have been renamed and replaced by functions with different semantics:pop
is nowpop_char
remove
is nowremove_char
insert
is nowinsert_char
- Breaking Change Moved and renamed the following iterator types:
iter::Utf16Chars
renamed toCharsUtf16
and moved toustr
anducstr
iter::Utf32Chars
renamed toCharsUtf32
and moved toustr
anducstr
iter::CharsLossy
split and renamed toCharsLossyUtf16
andCharsLossyUtf32
and moved toustr
anducstr
iter::Utf16CharIndices
renamed toCharIndicesUtf16
and moved toustr
anducstr
iter::Utf16CharIndicesLossy
renamed toCharIndicesLossyUtf16
and moved toustr
anducstr
- Breaking Change
error::FromUtf16Error
anderror::FromUtf32Error
has been renamed toUtf16Error
andUtf32Error
respectively and expanded with more details about the error. - Migrated crate to Rust 2021 edition.
- The following methods on
U16Str
andU32Str
are nowconst
:from_slice
as_slice
as_ptr
len
is_empty
- The following methods on
U16CStr
andU32CStr
are nowconst
:from_slice_unchecked
as_slice_with_nul
as_ptr
len
is_empty
- The following methods on
U16String
andU32String
are nowconst
:new
Added
- Added new UTF-encoded string types and associated types:
Utf16Str
Utf32Str
Utf16String
Utf32String
- Added macros to convert string literals into
const
wide string slices:u16str!
u16cstr!
u32str!
u32cstr!
widestr!
widecstr!
utf16str!
utf32str!
- Added
NUL_TERMINATOR
associated constant toU16CStr
,U32CStr
,U16CString
, andU32CString
. - Added
DoubleEndedIterator
andExactSizeIterator
implementations to a number of iterator types. - Added new UTF encoding functions alongside existing decode functions:
encode_utf8
encode_utf16
encode_utf32
- Added various methods:
repeat
onU16Str
,U32Str
,U16CStr
, andU32CStr
shrink_to
onU16String
andU32String
retain
onU16String
andU32String
drain
onU16String
andU32String
replace_range
onU16String
andU32String
get
,get_mut
,get_unchecked
, andget_unchecked_mut
onU16CStr
andU32CStr
split_at
andsplit_at_mut
onU16CStr
andU32CStr
- Added more trait implementations.
Removed
- Breaking Change Functions and types deprecated in 0.5 have been removed.
- Breaking Change The following types and traits, which were implementation details, have been removed. Use the existing non-generic types instead (e.g. use
U16Str
instead ofUStr<u16>
).UChar
UStr
UCStr
UString
UCString
- Breaking Change Removed
IndexMut<RangeFull>
trait implementation ofU16CString
andU32CString
. Use the unsafeget_mut
method instead, which also supports more ranges.
Fixed
- Breaking Change The iterator returned by
U16Str::char_indices
andU16CStr::char_indices
is now over(usize, Result<char, DecodeUtf16Error>)
tuples instead of the reverse order, to better match standard library string iterators. The same is true ofU16Str::char_indices_lossy
andU16CStr::char_indices_lossy
. This matches what was stated in original documentation. U32Str::to_string
andU32CStr::to_string
now only allocate once instead of twice.
0.5.1
0.5.0
Changed
- Breaking Change Renamed a number of types and functions to increase consistency and clarity. This also meant renaming errors to more clearly convey error and trying to be more consistent with name conventions and functionality across types. Check renamed function docs for any changes in functionality, as there have been some minor tweaks (mostly relaxing/removing error conditions and reducing panics). Old names have been deprecated to ease transition and will be removed in a future release. Fixes #18.
MissingNulError
=>error::MissingNulTerminator
FromUtf32Error
=>error::FromUtf32Error
NulError
=>error::ContainsNul
UCStr::from_ptr_with_nul
=>from_ptr_unchecked
UCStr::from_slice_with_nul
=>from_slice_truncate
UCStr::from_slice_with_nul_unchecked
=>from_slice_unchecked
U32CStr::from_char_ptr_with_nul
=>from_char_ptr_unchecked
U32CStr::from_char_slice_with_nul
=>from_char_slice_truncate
U32CStr::from_char_slice_with_nul_unchecked
=>from_char_slice_unchecked
UCString::new
=>from_vec
UCString::from_vec_with_nul
=>from_vec_truncate
UCString::from_ustr_with_nul
=>from_ustr_truncate
UCString::from_ptr_with_nul
=>from_ptr_truncate
UCString::from_str_with_nul
=>from_str_truncate
UCString::from_os_str_with_nul
=>from_os_str_truncate
U32CString::from_chars_with_nul
=>from_chars_truncate
U32CString::from_char_ptr_with_nul
=>from_char_ptr_truncate
- Deprecated error types in the crate root. Use the errors directly from
error
module instead. - Improved implementations in some areas to reduce unncessary double allocations.
- Improved
Debug
implementations. No more debugging lists of raw integer values. - Migrated crate to Rust 2018 edition.
- Minimum supported Rust version is now 1.48.
- Made crate package REUSE compliant.
- Improved documentation and used intra-doc links.
Added
- Added crate-level functions
decode_utf16
,decode_utf16_lossy
,decode_utf32
, anddecode_utf32_lossy
and associated iterators. Note thatdecode_utf16
is an alias ofcore::char::decode_utf16
, but provided for consistency. - Added
display
method to to bothUStr
andUCStr
to display strings in formatting without heap allocations, similar toPath::display
. Fixes #20. - Added more trait implementations, including more index operations and string formatting via
Write
trait. Fixes #19. - Added new functions:
UStr::from_ptr_mut
UStr::from_slice_mut
UStr::as_mut_slice
UStr::as_mut_ptr
UStr::as_ptr_range
UStr::as_mut_ptr_range
UStr::get
UStr::get_mut
UStr::get_unchecked
UStr::get_unchecked_mut
UStr::split_at
UStr::split_at_mut
UStr::chars
UStr::chars_lossy
U16Str::char_indices
U16Str::char_indices_lossy
U32Str::from_char_ptr_mut
U32Str::from_char_slice_mut
UCStr::from_ptr
UCStr::from_ptr_truncate
UCStr::from_slice
UCStr::as_ustr
UCStr::from_ptr_str_mut
UCStr::from_ptr_mut
UCStr::from_ptr_truncate_mut
UCStr::from_ptr_unchecked_mut
UCStr::from_slice_mut
UCStr::from_slice_truncate_mut
UCStr::from_slice_unchecked_mut
UCStr::as_mut_slice
UCStr::as_mut_ptr
UCStr::as_ustr_with_nul
UCStr::as_mut_ustr
UCStr::as_ptr_range
UCStr::as_mut_ptr_range
UCStr::chars
UCStr::chars_lossy
U16CStr::char_indices
U16CStr::char_indices_lossy
U32CStr::from_char_ptr_str_mut
U32CStr::from_char_ptr_mut
U32CStr::from_char_ptr_truncate_mut
U32CStr::from_char_ptr_unchecked_mut
U32CStr::from_char_slice_mut
U32CStr::from_char_slice_truncate_mut
U32CStr::from_char_slice_unchecked_mut
U32CStr::from_char_ptr
U32CStr::from_char_ptr_truncate
U32CStr::from_char_slice
UString::as_vec
UString::as_mut_vec
UString::push_char
UString::truncate
UString::pop
UString::remove
UString::insert
UString::insert_ustr
UString::split_off
UCString::as_mut_ucstr
UCString::into_ustring
UCString::into_ustring_with_nul
U32CString::from_char_ptr_str
Deprecated
- Deprecated functions as part of simplifying to increase clarity. These will be removed entirely in a future release.
UCString::from_vec_with_nul_unchecked
. Usefrom_vec_unchecked
instead.UCString::from_ustr_with_nul_unchecked
. Usefrom_ustr_unchecked
instead.UCString::from_ptr_with_nul_unchecked
. Usefrom_ptr_unchecked
instead.UCString::from_str_with_nul_unchecked
. Usefrom_str_unchecked
instead.UCString::from_os_str_with_nul_unchecked
. Usefrom_os_str_unchecked
instead.U32CString::from_chars_with_nul_unchecked
. Usefrom_chars_unchecked
instead.U32CString::from_char_ptr_with_nul_unchecked
. Usefrom_char_ptr_unchecked
instead.
0.4.2
0.4.1
0.4.0
Added
- New
U32String
,U32Str
,U32CString
, andU32CStr
types for dealing with UTF-32 FFI. These
new types are roughly equivalent to the existing UTF-16 types. WideChar
is a type alias tou16
on Windows butu32
on non-Windows platforms.- The generic types
UString
,UStr
,UCString
andUCStr
are used to implement the string
types.
Changed
- Breaking Change Existing wide string types have been renamed to
U16String
,U16Str
,
U16CString
, andU16CStr
(previouslyWideString
,WideStr
, etc.). Some function have
also been renamed to reflect this change (wide_str
tou16_str
, etc.). - Breaking Change
WideString
,WideStr
,WideCString
, andWideCStr
are now type aliases
that vary between platforms. On Windows, these are aliases to theU16
types and are equivalent
to the previous version, but on non-Windows platforms these alias the newU32
types instead.
See crate documentation for more details.