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() -> CodePointInversionListBuilder

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 add_u32(&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.add_u32(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_range_u32(&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_range_u32(&(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_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 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_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_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 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_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_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_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 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_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_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(&mut self) -> bool

Returns whether the build is empty.

Examples
use icu_collections::codepointinvlist::{
    CodePointInversionList, 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 Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

const: unstable · source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

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

const: unstable · 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, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

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

Performs the conversion.
source§

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

§

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

The type returned in the event of a conversion error.
const: unstable · source§

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

Performs the conversion.
§

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

source§

impl<T> MaybeSendSync for T