mirror of
https://github.com/astral-sh/ruff.git
synced 2025-11-22 21:25:27 +00:00
Some checks are pending
CI / Fuzz the parser (push) Blocked by required conditions
CI / test scripts (push) Blocked by required conditions
CI / ecosystem (push) Blocked by required conditions
CI / cargo shear (push) Blocked by required conditions
CI / Determine changes (push) Waiting to run
CI / cargo fmt (push) Waiting to run
CI / cargo clippy (push) Blocked by required conditions
CI / python package (push) Waiting to run
CI / cargo test (linux) (push) Blocked by required conditions
CI / cargo test (windows) (push) Blocked by required conditions
CI / cargo test (wasm) (push) Blocked by required conditions
CI / cargo build (release) (push) Blocked by required conditions
CI / cargo build (msrv) (push) Blocked by required conditions
CI / cargo fuzz (push) Blocked by required conditions
CI / pre-commit (push) Waiting to run
CI / mkdocs (push) Waiting to run
CI / formatter instabilities and black similarity (push) Blocked by required conditions
CI / test ruff-lsp (push) Blocked by required conditions
CI / benchmarks (push) Blocked by required conditions
36 lines
1.3 KiB
Rust
36 lines
1.3 KiB
Rust
//! Newtypes for working with text sizes/ranges in a more type-safe manner.
|
|
//!
|
|
//! This library can help with two things:
|
|
//! * Reducing storage requirements for offsets and ranges, under the
|
|
//! assumption that 32 bits is enough.
|
|
//! * Providing standard vocabulary types for applications where text ranges
|
|
//! are pervasive.
|
|
//!
|
|
//! However, you should not use this library simply because you work with
|
|
//! strings. In the overwhelming majority of cases, using `usize` and
|
|
//! `std::ops::Range<usize>` is better. In particular, if you are publishing a
|
|
//! library, using only std types in the interface would make it more
|
|
//! interoperable. Similarly, if you are writing something like a lexer, which
|
|
//! produces, but does not *store* text ranges, then sticking to `usize` would
|
|
//! be better.
|
|
//!
|
|
//! Minimal Supported Rust Version: latest stable.
|
|
|
|
#![forbid(unsafe_code)]
|
|
#![warn(missing_debug_implementations, missing_docs)]
|
|
|
|
mod range;
|
|
mod size;
|
|
mod traits;
|
|
|
|
#[cfg(feature = "schemars")]
|
|
mod schemars_impls;
|
|
#[cfg(feature = "serde")]
|
|
mod serde_impls;
|
|
|
|
pub use crate::{
|
|
range::TextRange, size::TextSize, traits::Ranged, traits::TextLen, traits::TextSlice,
|
|
};
|
|
|
|
#[cfg(target_pointer_width = "16")]
|
|
compile_error!("text-size assumes usize >= u32 and does not work on 16-bit targets");
|