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 Oxide PreProcessors 3 imports 7 functions

Entity Profile

Dependency Diagram

graph LR
  b8828b41_ff6f_bd1d_8645_341d50421c63["lib.rs"]
  28a57345_8f20_6d86_434d_490b7be65d8a["proc_macro::TokenStream"]
  b8828b41_ff6f_bd1d_8645_341d50421c63 --> 28a57345_8f20_6d86_434d_490b7be65d8a
  e588ffde_0fb1_33cd_4226_5da13c5a7262["quote::quote"]
  b8828b41_ff6f_bd1d_8645_341d50421c63 --> e588ffde_0fb1_33cd_4226_5da13c5a7262
  6d5bdd81_8d57_987c_2bfc_46bb3e8f7970["syn::"]
  b8828b41_ff6f_bd1d_8645_341d50421c63 --> 6d5bdd81_8d57_987c_2bfc_46bb3e8f7970
  style b8828b41_ff6f_bd1d_8645_341d50421c63 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 Oxide 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: Oxide, 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