Home / File/ lib.rs — tailwindcss Source File

lib.rs — tailwindcss Source File

Architecture documentation for lib.rs, a rust file in the tailwindcss codebase. 3 imports, 0 dependents.

File rust OxideEngine PreProcessors 3 imports 7 functions

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

Dependencies

  • proc_macro::TokenStream
  • quote::quote
  • syn::

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