lib.rs — tailwindcss Source File
Architecture documentation for lib.rs, a rust file in the tailwindcss codebase. 3 imports, 0 dependents.
Entity Profile
Dependency Diagram
graph LR 8866d709_3b59_d730_edfc_80aef369b653["lib.rs"] 04d5a743_e5d8_112f_0435_90cdb565fa86["proc_macro::TokenStream"] 8866d709_3b59_d730_edfc_80aef369b653 --> 04d5a743_e5d8_112f_0435_90cdb565fa86 ccfbe412_2616_32f5_02c9_1b359cbd19a0["quote::quote"] 8866d709_3b59_d730_edfc_80aef369b653 --> ccfbe412_2616_32f5_02c9_1b359cbd19a0 a8f0cfa8_5a47_6430_bbd0_71e29a507463["syn::"] 8866d709_3b59_d730_edfc_80aef369b653 --> a8f0cfa8_5a47_6430_bbd0_71e29a507463 style 8866d709_3b59_d730_edfc_80aef369b653 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
use proc_macro::TokenStream;
use quote::quote;
use syn::{
parse_macro_input, punctuated::Punctuated, token::Comma, Attribute, Data, DataEnum,
DeriveInput, Expr, ExprLit, ExprRange, Ident, Lit, RangeLimits, Result, Variant,
};
/// A custom derive that supports:
///
/// - `#[bytes(…)]` for single byte literals
/// - `#[bytes_range(…)]` for inclusive byte ranges (b'a'..=b'z')
/// - `#[fallback]` for a variant that covers everything else
///
/// Example usage:
///
/// ```rust
/// use classification_macros::ClassifyBytes;
///
/// #[derive(Clone, Copy, ClassifyBytes)]
/// enum Class {
/// #[bytes(b'a', b'b', b'c')]
/// Letters,
///
/// #[bytes_range(b'0'..=b'9')]
/// Digits,
///
/// #[fallback]
/// Other,
/// }
/// ```
/// Then call `b'a'.into()` to get `Example::SomeLetters`.
#[proc_macro_derive(ClassifyBytes, attributes(bytes, bytes_range, fallback))]
pub fn classify_bytes_derive(input: TokenStream) -> TokenStream {
let ast = parse_macro_input!(input as DeriveInput);
// This derive only works on an enum
let Data::Enum(DataEnum { variants, .. }) = &ast.data else {
return syn::Error::new_spanned(
&ast.ident,
"ClassifyBytes can only be derived on an enum.",
)
.to_compile_error()
.into();
};
let enum_name = &ast.ident;
let mut byte_map: [Option<Ident>; 256] = [const { None }; 256];
let mut fallback_variant: Option<Ident> = None;
// Start parsing the variants
for variant in variants {
let variant_ident = &variant.ident;
// If this variant has #[fallback], record it
if has_fallback_attr(variant) {
if fallback_variant.is_some() {
let err = syn::Error::new_spanned(
variant_ident,
"Multiple variants have #[fallback]. Only one allowed.",
// ... (194 more lines)
Domain
Subdomains
Functions
Dependencies
- proc_macro::TokenStream
- quote::quote
- syn::
Source
Frequently Asked Questions
What does lib.rs do?
lib.rs is a source file in the tailwindcss codebase, written in rust. It belongs to the OxideEngine domain, PreProcessors subdomain.
What functions are defined in lib.rs?
lib.rs defines 7 function(s): classify_bytes_derive, extract_byte_literal, get_bytes_attrs, get_bytes_range_attrs, has_fallback_attr, parse_bytes_attr, parse_bytes_range_attr.
What does lib.rs depend on?
lib.rs imports 3 module(s): proc_macro::TokenStream, quote::quote, syn::.
Where is lib.rs in the architecture?
lib.rs is located at crates/classification-macros/src/lib.rs (domain: OxideEngine, subdomain: PreProcessors, directory: crates/classification-macros/src).
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free