Struct syntect::parsing::Scope [] [src]

pub struct Scope { /* fields omitted */ }

A hierarchy of atoms with semi-standardized names used to accord semantic information to a specific piece of text. Generally written with the atoms separated by dots. By convention atoms are all lowercase alphanumeric.

Example scopes: text.plain, punctuation.definition.string.begin.ruby, meta.function.parameters.rust

syntect uses an optimized format for storing these that allows super fast comparison and determining if one scope is a prefix of another. It also always takes 16 bytes of space. It accomplishes this by using a global repository to store string values and using bit-packed 16 bit numbers to represent and compare atoms. Like "atoms" or "symbols" in other languages. This means that while comparing and prefix are fast, extracting a string is relatively slower but ideally should be very rare.

Methods

impl Scope
[src]

Parses a Scope from a series of atoms separated by . characters. Example: Scope::new("meta.rails.controller")

Gets the atom number at a given index. I can't think of any reason you'd find this useful. It is used internally for turning a scope back into a string.

return the number of atoms in the scope

returns a string representation of this scope, this requires locking a global repo and shouldn't be done frequently.

Tests if this scope is a prefix of another scope. Note that the empty scope is always a prefix.

This operation uses bitwise operations and is very fast

Examples

use syntect::parsing::Scope;
assert!( Scope::new("string").unwrap()
        .is_prefix_of(Scope::new("string.quoted").unwrap()));
assert!( Scope::new("string.quoted").unwrap()
        .is_prefix_of(Scope::new("string.quoted").unwrap()));
assert!( Scope::new("").unwrap()
        .is_prefix_of(Scope::new("meta.rails.controller").unwrap()));
assert!(!Scope::new("source.php").unwrap()
        .is_prefix_of(Scope::new("source").unwrap()));
assert!(!Scope::new("source.php").unwrap()
        .is_prefix_of(Scope::new("source.ruby").unwrap()));
assert!(!Scope::new("meta.php").unwrap()
        .is_prefix_of(Scope::new("source.php").unwrap()));
assert!(!Scope::new("meta.php").unwrap()
        .is_prefix_of(Scope::new("source.php.wow").unwrap()));

Trait Implementations

impl Clone for Scope
[src]

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

impl PartialEq for Scope
[src]

This method tests for self and other values to be equal, and is used by ==. Read more

This method tests for !=.

impl Eq for Scope
[src]

impl PartialOrd for Scope
[src]

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

This method tests less than (for self and other) and is used by the < operator. Read more

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more

This method tests greater than (for self and other) and is used by the > operator. Read more

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more

impl Ord for Scope
[src]

This method returns an Ordering between self and other. Read more

🔬 This is a nightly-only experimental API. (ord_max_min)

Compares and returns the maximum of two values. Read more

🔬 This is a nightly-only experimental API. (ord_max_min)

Compares and returns the minimum of two values. Read more

impl Copy for Scope
[src]

impl Default for Scope
[src]

Returns the "default value" for a type. Read more

impl Hash for Scope
[src]

Feeds this value into the given [Hasher]. Read more

Feeds a slice of this type into the given [Hasher]. Read more

impl FromStr for Scope
[src]

The associated error which can be returned from parsing.

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

impl Display for Scope
[src]

Formats the value using the given formatter. Read more

impl Debug for Scope
[src]

Formats the value using the given formatter.

impl Serialize for Scope
[src]

Serialize this value into the given Serde serializer. Read more

impl<'de> Deserialize<'de> for Scope
[src]

Deserialize this value from the given Serde deserializer. Read more