main.rs — tailwindcss Source File
Architecture documentation for main.rs, a rust file in the tailwindcss codebase. 5 imports, 0 dependents.
Entity Profile
Dependency Diagram
graph LR f9a9d94e_5f8e_aac1_b39a_ed8d889e76a5["main.rs"] a89aa61c_e4aa_9168_687e_995e52c4d4ba["std::hint::black_box"] f9a9d94e_5f8e_aac1_b39a_ed8d889e76a5 --> a89aa61c_e4aa_9168_687e_995e52c4d4ba de450ddc_31c2_d09a_eabb_f918eef3186a["tailwindcss_oxide::cursor::Cursor"] f9a9d94e_5f8e_aac1_b39a_ed8d889e76a5 --> de450ddc_31c2_d09a_eabb_f918eef3186a 5276a6bc_e4c6_884c_25c4_a2e00cab5bee["tailwindcss_oxide::extractor::machine::"] f9a9d94e_5f8e_aac1_b39a_ed8d889e76a5 --> 5276a6bc_e4c6_884c_25c4_a2e00cab5bee 283444cc_2370_fa13_ddfa_c69b860b2856["tailwindcss_oxide::extractor::"] f9a9d94e_5f8e_aac1_b39a_ed8d889e76a5 --> 283444cc_2370_fa13_ddfa_c69b860b2856 68a5b347_e0d9_0720_c23f_ca2c5f6efd99["tailwindcss_oxide::throughput::Throughput"] f9a9d94e_5f8e_aac1_b39a_ed8d889e76a5 --> 68a5b347_e0d9_0720_c23f_ca2c5f6efd99 style f9a9d94e_5f8e_aac1_b39a_ed8d889e76a5 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
use std::hint::black_box;
use tailwindcss_oxide::cursor::Cursor;
use tailwindcss_oxide::extractor::machine::{Machine, MachineState};
use tailwindcss_oxide::extractor::{Extracted, Extractor};
use tailwindcss_oxide::throughput::Throughput;
fn run_full_extractor(input: &[u8]) -> Vec<&[u8]> {
Extractor::new(input)
.extract()
.into_iter()
.map(|x| match x {
Extracted::Candidate(bytes) => bytes,
Extracted::CssVariable(bytes) => bytes,
})
.collect::<Vec<_>>()
}
fn _run_machine<T: Machine>(input: &[u8]) -> Vec<&[u8]> {
let len = input.len();
let mut machine = T::default();
let mut cursor = Cursor::new(input);
let mut result = Vec::with_capacity(25);
while cursor.pos < len {
if let MachineState::Done(span) = machine.next(&mut cursor) {
result.push(span.slice(input));
}
cursor.advance();
}
result
}
fn run(input: &[u8]) -> Vec<&[u8]> {
// _run_machine::<tailwindcss_oxide::extractor::arbitrary_property_machine::ArbitraryPropertyMachine>(input)
// _run_machine::<tailwindcss_oxide::extractor::arbitrary_value_machine::ArbitraryValueMachine>(input)
// _run_machine::<tailwindcss_oxide::extractor::arbitrary_variable_machine::ArbitraryVariableMachine>(input)
// _run_machine::<tailwindcss_oxide::extractor::candidate_machine::CandidateMachine>(input)
// _run_machine::<tailwindcss_oxide::extractor::css_variable_machine::CssVariableMachine>(input)
// _run_machine::<tailwindcss_oxide::extractor::modifier_machine::ModifierMachine>(input)
// _run_machine::<tailwindcss_oxide::extractor::named_utility_machine::NamedUtilityMachine>(input)
// _run_machine::<tailwindcss_oxide::extractor::named_variant_machine::NamedVariantMachine>(input)
// _run_machine::<tailwindcss_oxide::extractor::string_machine::StringMachine>(input)
// _run_machine::<tailwindcss_oxide::extractor::utility_machine::UtilityMachine>(input)
// _run_machine::<tailwindcss_oxide::extractor::variant_machine::VariantMachine>(input)
run_full_extractor(input)
}
fn main() {
let iterations = 10_000;
let input = include_bytes!("./fixtures/example.html");
let throughput = Throughput::compute(iterations, input.len(), || {
_ = black_box(
input
.split(|x| *x == b'\n')
.flat_map(run)
.collect::<Vec<_>>(),
);
});
eprintln!("Extractor: {:}", throughput);
}
Domain
Subdomains
Dependencies
- std::hint::black_box
- tailwindcss_oxide::cursor::Cursor
- tailwindcss_oxide::extractor::
- tailwindcss_oxide::extractor::machine::
- tailwindcss_oxide::throughput::Throughput
Source
Frequently Asked Questions
What does main.rs do?
main.rs is a source file in the tailwindcss codebase, written in rust. It belongs to the Oxide domain, Extractor subdomain.
What functions are defined in main.rs?
main.rs defines 4 function(s): _run_machine, main, run, run_full_extractor.
What does main.rs depend on?
main.rs imports 5 module(s): std::hint::black_box, tailwindcss_oxide::cursor::Cursor, tailwindcss_oxide::extractor::, tailwindcss_oxide::extractor::machine::, tailwindcss_oxide::throughput::Throughput.
Where is main.rs in the architecture?
main.rs is located at crates/oxide/src/main.rs (domain: Oxide, subdomain: Extractor, directory: crates/oxide/src).
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free