Struct icu::uniset::UnicodeSetBuilder[][src]

pub struct UnicodeSetBuilder { /* fields omitted */ }

A builder for UnicodeSet.

Provides exposure to builder functions and conversion to UnicodeSet

Implementations

impl UnicodeSetBuilder[src]

pub const fn new() -> UnicodeSetBuilder[src]

Returns empty UnicodeSetBuilder

pub fn build(self) -> UnicodeSet[src]

Returns a UnicodeSet and consumes the UnicodeSetBuilder

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

Add the character to the UnicodeSetBuilder

Examples

use icu::uniset::UnicodeSetBuilder;
let mut builder = UnicodeSetBuilder::new();
builder.add_char('a');
let check = builder.build();
assert_eq!(check.iter_chars().next(), Some('a'));

pub fn add_u32(&mut self, c: u32)[src]

Add the code point value to the UnicodeSetBuilder

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::uniset::UnicodeSetBuilder;
let mut builder = UnicodeSetBuilder::new();
builder.add_u32(65);
let check = builder.build();
assert_eq!(check.contains_u32(65), true);

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

Add the range of characters to the UnicodeSetBuilder

Examples

use icu::uniset::UnicodeSetBuilder;
let mut builder = UnicodeSetBuilder::new();
builder.add_range(&('A'..='Z'));
let check = builder.build();
assert_eq!(check.iter_chars().next(), Some('A'));

pub fn add_set(&mut self, set: &UnicodeSet)[src]

Add the UnicodeSet reference to the UnicodeSetBuilder

Examples

use icu::uniset::{UnicodeSet, UnicodeSetBuilder};
let mut builder = UnicodeSetBuilder::new();
let set = UnicodeSet::from_inversion_list(vec![65, 76]).unwrap();
builder.add_set(&set);
let check = builder.build();
assert_eq!(check.iter_chars().next(), Some('A'));

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

Remove the character from the UnicodeSetBuilder

Examples

use icu::uniset::UnicodeSetBuilder;
let mut builder = UnicodeSetBuilder::new();
builder.add_range(&('A'..='Z'));
builder.remove_char('A');
let check = builder.build();
assert_eq!(check.iter_chars().next(), Some('B'));

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

Remove the range of characters from the UnicodeSetBuilder

Examples

use icu::uniset::UnicodeSetBuilder;
let mut builder = UnicodeSetBuilder::new();
builder.add_range(&('A'..='Z'));
builder.remove_range(&('A'..='C'));
let check = builder.build();
assert_eq!(check.iter_chars().next(), Some('D'));

pub fn remove_set(&mut self, set: &UnicodeSet)[src]

Remove the UnicodeSet from the UnicodeSetBuilder

Examples

use icu::uniset::{UnicodeSet, UnicodeSetBuilder};
let mut builder = UnicodeSetBuilder::new();
let set = UnicodeSet::from_inversion_list(vec![65, 70]).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'));

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

Retain the specified character in the UnicodeSetBuilder if it exists

Examples

use icu::uniset::UnicodeSetBuilder;
let mut builder = UnicodeSetBuilder::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);

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

Retain the range of characters located within the UnicodeSetBuilder

Examples

use icu::uniset::UnicodeSetBuilder;
let mut builder = UnicodeSetBuilder::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);

pub fn retain_set(&mut self, set: &UnicodeSet)[src]

Retain the elements in the specified set within the UnicodeSetBuilder

Examples

use icu::uniset::{UnicodeSetBuilder, UnicodeSet};
let mut builder = UnicodeSetBuilder::new();
let set = UnicodeSet::from_inversion_list(vec![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'));

pub fn complement(&mut self)[src]

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::uniset::{UnicodeSetBuilder, UnicodeSet};
let mut builder = UnicodeSetBuilder::new();
let set = UnicodeSet::from_inversion_list(vec![0, 65, 70, (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'));

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

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

Examples

use icu::uniset::UnicodeSetBuilder;
let mut builder = UnicodeSetBuilder::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'));

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

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

Examples

use icu::uniset::UnicodeSetBuilder;
let mut builder = UnicodeSetBuilder::new();
builder.add_range(&('A'..='D'));
builder.complement_range(&('C'..='F'));
let check = builder.build();
assert!(check.contains('F'));
assert!(!check.contains('C'));

pub fn complement_set(&mut self, set: &UnicodeSet)[src]

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

Examples

use icu::uniset::{UnicodeSetBuilder, UnicodeSet};
let mut builder = UnicodeSetBuilder::new();
let set = UnicodeSet::from_inversion_list(vec![65, 70, 75, 90]).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

pub fn is_empty(&mut self) -> bool[src]

Returns whether the build is empty.

Examples

use icu::uniset::{UnicodeSetBuilder, UnicodeSet};
let mut builder = UnicodeSetBuilder::new();
let check = builder.build();
assert!(check.is_empty());

Trait Implementations

impl Default for UnicodeSetBuilder[src]

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.