<div align="center">
# litext
[](https://doc.rust-lang.org/edition-guide/rust-2024/)
[](https://crates.io/crates/litext)
[](https://docs.rs/litext)
[](https://codeberg.org/razkar/litext/src/branch/main/LICENSE-MIT)
[](https://codeberg.org/razkar/litext/src/branch/main/LICENSE-APACHE)
[](https://crates.io/crates/litext)
[](https://deps.rs/repo/codeberg/razkar/litext)
[](https://codeberg.org/razkar/litext)
A lightweight procedural macro library for extracting string literal contents from tokens, because doing that shouldn't bloat compilation time.
```rust
let value: String = litext!(input);
```
</div>
## What is this?
Litext provides a macro to extract the inner text from a string literal token. You pass raw tokens to `litext!` and it gives you back the unwrapped string content without the quotes, optionally with the source span attached for precise diagnostics.
This is a proc-macro helper library. It is designed for proc-macro authors who need to extract string content from TokenStream input during macro expansion without the bloat.
Zero dependencies, tiny, built for proc-macro authors.
## Installation
Add `litext` to your project:
```sh
cargo add litext
```
## Quick Start
Extract the string content as a `String`:
```rust
use litext::{litext, TokenStream};
pub fn my_macro(input: TokenStream) -> TokenStream {
let content: String = litext!(input);
// or, to be explicit:
let content: String = litext!(input as String);
// ... use content
}
```
Extract with span information for precise diagnostics:
```rust
use litext::{litext, LitStr, TokenStream};
pub fn my_macro(input: TokenStream) -> TokenStream {
let lit: LitStr = litext!(input as LitStr);
let value = lit.value(); // the string content
let span = lit.span(); // where it appeared in source
// ... use value and span
}
```
## Features
- Extract string content from `TokenStream` tokens
- Support for regular strings: `"hello world"`
- Support for raw strings: `r#"hello world"#`
- Support for raw strings with multiple hashes: `r##"hello #" world"##`
- Capture source spans via `litext!(input as LitStr)` for precise diagnostics
- Clear error messages for invalid inputs
- Absolutely zero dependencies
## Requirements
- Rust 2024 edition
- A proc-macro crate (this library is for macro authors, not end users)
## License
Licensed under either of:
- Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or <http://www.apache.org/licenses/LICENSE-2.0>)
- MIT license ([LICENSE-MIT](LICENSE-MIT) or <http://opensource.org/licenses/MIT>)
at your option.
Cheers, RazkarStudio
© 2026 RazkarStudio. All rights reserved.