pub struct CodePointInversionListBuilder { /* private fields */ }
Expand description

A builder for CodePointInversionList.

Provides exposure to builder functions and conversion to CodePointInversionList

Implementations§

source§

impl CodePointInversionListBuilder

source

pub const fn new() -> Self

source

pub fn build(self) -> CodePointInversionList<'static>

source

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

Add the character to the CodePointInversionListBuilder

§Examples
use icu::collections::codepointinvlist::CodePointInversionListBuilder;
let mut builder = CodePointInversionListBuilder::new();
builder.add_char('a');
let check = builder.build();
assert_eq!(check.iter_chars().next(), Some('a'));
source

pub fn add32(&mut self, c: u32)

Add the code point value to the CodePointInversionListBuilder

Note: Even though u32 and char in Rust are non-negative 4-byte values, there is an important difference. A u32 can take values up to a very large integer value, while a char in Rust is defined to be in the range from 0 to the maximum valid Unicode Scalar Value.

§Examples
use icu::collections::codepointinvlist::CodePointInversionListBuilder;
let mut builder = CodePointInversionListBuilder::new();
builder.add32(0x41);
let check = builder.build();
assert!(check.contains32(0x41));
source

pub fn add_range(&mut self, range: impl RangeBounds<char>)

Add the range of characters to the CodePointInversionListBuilder

§Examples
use icu::collections::codepointinvlist::CodePointInversionListBuilder;
let mut builder = CodePointInversionListBuilder::new();
builder.add_range('A'..='Z');
let check = builder.build();
assert_eq!(check.iter_chars().next(), Some('A'));
source

pub fn add_range32(&mut self, range: impl RangeBounds<u32>)

Add the range of characters, represented as u32, to the CodePointInversionListBuilder

§Examples
use icu::collections::codepointinvlist::CodePointInversionListBuilder;
let mut builder = CodePointInversionListBuilder::new();
builder.add_range32(0xd800..=0xdfff);
let check = builder.build();
assert!(check.contains32(0xd900));
source

pub fn add_set(&mut self, set: &CodePointInversionList<'_>)

Add the CodePointInversionList reference to the CodePointInversionListBuilder

§Examples
use icu::collections::codepointinvlist::{
    CodePointInversionList, CodePointInversionListBuilder,
};
let mut builder = CodePointInversionListBuilder::new();
let set = CodePointInversionList::try_from_u32_inversion_list_slice(&[
    0x41, 0x4C,
])
.unwrap();
builder.add_set(&set);
let check = builder.build();
assert_eq!(check.iter_chars().next(), Some('A'));
source

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

Remove the character from the CodePointInversionListBuilder

§Examples
use icu::collections::codepointinvlist::CodePointInversionListBuilder;
let mut builder = CodePointInversionListBuilder::new();
builder.add_range('A'..='Z');
builder.remove_char('A');
let check = builder.build();
assert_eq!(check.iter_chars().next(), Some('B'));
source

pub fn remove32(&mut self, c: u32)

source

pub fn remove_range(&mut self, range: impl RangeBounds<char>)

Remove the range of characters from the CodePointInversionListBuilder

§Examples
use icu::collections::codepointinvlist::CodePointInversionListBuilder;
let mut builder = CodePointInversionListBuilder::new();
builder.add_range('A'..='Z');
builder.remove_range('A'..='C');
let check = builder.build();
assert_eq!(check.iter_chars().next(), Some('D'));
source

pub fn remove_range32(&mut self, range: impl RangeBounds<u32>)

source

pub fn remove_set(&mut self, set: &CodePointInversionList<'_>)

Remove the CodePointInversionList from the CodePointInversionListBuilder

§Examples
use icu::collections::codepointinvlist::{CodePointInversionList, CodePointInversionListBuilder};
let mut builder = CodePointInversionListBuilder::new();
let set = CodePointInversionList::try_from_u32_inversion_list_slice(&[0x41, 0x46]).unwrap();
builder.add_range('A'..='Z');
builder.remove_set(&set); // removes 'A'..='E'
let check = builder.build();
assert_eq!(check.iter_chars().next(), Some('F'));
source

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

Retain the specified character in the CodePointInversionListBuilder if it exists

§Examples
use icu::collections::codepointinvlist::CodePointInversionListBuilder;
let mut builder = CodePointInversionListBuilder::new();
builder.add_range('A'..='Z');
builder.retain_char('A');
let set = builder.build();
let mut check = set.iter_chars();
assert_eq!(check.next(), Some('A'));
assert_eq!(check.next(), None);
source

pub fn retain32(&mut self, c: u32)

source

pub fn retain_range(&mut self, range: impl RangeBounds<char>)

Retain the range of characters located within the CodePointInversionListBuilder

§Examples
use icu::collections::codepointinvlist::CodePointInversionListBuilder;
let mut builder = CodePointInversionListBuilder::new();
builder.add_range('A'..='Z');
builder.retain_range('A'..='B');
let set = builder.build();
let mut check = set.iter_chars();
assert_eq!(check.next(), Some('A'));
assert_eq!(check.next(), Some('B'));
assert_eq!(check.next(), None);
source

pub fn retain_range32(&mut self, range: impl RangeBounds<u32>)

source

pub fn retain_set(&mut self, set: &CodePointInversionList<'_>)

Retain the elements in the specified set within the CodePointInversionListBuilder

§Examples
use icu::collections::codepointinvlist::{
    CodePointInversionList, CodePointInversionListBuilder,
};
let mut builder = CodePointInversionListBuilder::new();
let set =
    CodePointInversionList::try_from_u32_inversion_list_slice(&[65, 70])
        .unwrap();
builder.add_range('A'..='Z');
builder.retain_set(&set); // retains 'A'..='E'
let check = builder.build();
assert!(check.contains('A'));
assert!(!check.contains('G'));
source

pub fn complement(&mut self)

Computes the complement of the builder, inverting the builder (any elements in the builder are removed, while any elements not in the builder are added)

§Examples
use icu::collections::codepointinvlist::{
    CodePointInversionList, CodePointInversionListBuilder,
};
let mut builder = CodePointInversionListBuilder::new();
let set = CodePointInversionList::try_from_u32_inversion_list_slice(&[
    0x0,
    0x41,
    0x46,
    (std::char::MAX as u32) + 1,
])
.unwrap();
builder.add_set(&set);
builder.complement();
let check = builder.build();
assert_eq!(check.iter_chars().next(), Some('A'));
source

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

Complements the character in the builder, adding it if not in the builder, and removing it otherwise.

§Examples
use icu::collections::codepointinvlist::CodePointInversionListBuilder;
let mut builder = CodePointInversionListBuilder::new();
builder.add_range('A'..='D');
builder.complement_char('A');
builder.complement_char('E');
let check = builder.build();
assert!(check.contains('E'));
assert!(!check.contains('A'));
source

pub fn complement32(&mut self, c: u32)

source

pub fn complement_range(&mut self, range: impl RangeBounds<char>)

Complements the range in the builder, adding any elements in the range if not in the builder, and removing them otherwise.

§Examples
use icu::collections::codepointinvlist::CodePointInversionListBuilder;
let mut builder = CodePointInversionListBuilder::new();
builder.add_range('A'..='D');
builder.complement_range('C'..='F');
let check = builder.build();
assert!(check.contains('F'));
assert!(!check.contains('C'));
source

pub fn complement_range32(&mut self, range: impl RangeBounds<u32>)

source

pub fn complement_set(&mut self, set: &CodePointInversionList<'_>)

Complements the set in the builder, adding any elements in the set if not in the builder, and removing them otherwise.

§Examples
use icu::collections::codepointinvlist::{
    CodePointInversionList, CodePointInversionListBuilder,
};
let mut builder = CodePointInversionListBuilder::new();
let set = CodePointInversionList::try_from_u32_inversion_list_slice(&[
    0x41, 0x46, 0x4B, 0x5A,
])
.unwrap();
builder.add_range('C'..='N'); // 67 - 78
builder.complement_set(&set);
let check = builder.build();
assert!(check.contains('Q')); // 81
assert!(!check.contains('N')); // 78
source

pub fn is_empty(&self) -> bool

Returns whether the build is empty.

§Examples
use icu::collections::codepointinvlist::CodePointInversionListBuilder;
let mut builder = CodePointInversionListBuilder::new();
let check = builder.build();
assert!(check.is_empty());

Trait Implementations§

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> 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> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. 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.
§

impl<T> ErasedDestructor for T
where T: 'static,