Home / Function/ visit() — tailwindcss Function Reference

visit() — tailwindcss Function Reference

Architecture documentation for the visit() function in walk.rs from the tailwindcss codebase.

Entity Profile

Dependency Diagram

graph TD
  d73ec138_1801_f65e_9f01_1730eee813b7["visit()"]
  bd2e8909_e461_841f_0d61_4a0d1fd86cf5["visit()"]
  bd2e8909_e461_841f_0d61_4a0d1fd86cf5 -->|calls| d73ec138_1801_f65e_9f01_1730eee813b7
  3c9ff46d_5dc3_e0e4_1102_fa9394d62b1e["run()"]
  3c9ff46d_5dc3_e0e4_1102_fa9394d62b1e -->|calls| d73ec138_1801_f65e_9f01_1730eee813b7
  2aa52a47_974a_150a_b496_0005da3d3ee4["threads()"]
  d73ec138_1801_f65e_9f01_1730eee813b7 -->|calls| 2aa52a47_974a_150a_b496_0005da3d3ee4
  bd2e8909_e461_841f_0d61_4a0d1fd86cf5["visit()"]
  d73ec138_1801_f65e_9f01_1730eee813b7 -->|calls| bd2e8909_e461_841f_0d61_4a0d1fd86cf5
  bc0b1e15_e21e_382e_7f60_1f7c3822f040["new_stdin()"]
  d73ec138_1801_f65e_9f01_1730eee813b7 -->|calls| bc0b1e15_e21e_382e_7f60_1f7c3822f040
  ea878296_643d_a792_237f_e683d50eeb36["device_num()"]
  d73ec138_1801_f65e_9f01_1730eee813b7 -->|calls| ea878296_643d_a792_237f_e683d50eeb36
  ad2e15fc_c5af_84a3_2d6a_26dcd054ddb3["is_quit()"]
  d73ec138_1801_f65e_9f01_1730eee813b7 -->|calls| ad2e15fc_c5af_84a3_2d6a_26dcd054ddb3
  9cddcb8d_8667_c506_99c7_f194e438a77a["from_path()"]
  d73ec138_1801_f65e_9f01_1730eee813b7 -->|calls| 9cddcb8d_8667_c506_99c7_f194e438a77a
  257c924a_e97b_8a42_d7b6_020af6d65de0["new_raw()"]
  d73ec138_1801_f65e_9f01_1730eee813b7 -->|calls| 257c924a_e97b_8a42_d7b6_020af6d65de0
  e16c7a27_1865_9055_554b_f50df737dd8e["push()"]
  d73ec138_1801_f65e_9f01_1730eee813b7 -->|calls| e16c7a27_1865_9055_554b_f50df737dd8e
  654d5ef1_1b1b_7e5c_528a_7066dc9d25ad["new_for_each_thread()"]
  d73ec138_1801_f65e_9f01_1730eee813b7 -->|calls| 654d5ef1_1b1b_7e5c_528a_7066dc9d25ad
  daea13be_da9d_f3dd_7f4f_74a78b7b3852["run()"]
  d73ec138_1801_f65e_9f01_1730eee813b7 -->|calls| daea13be_da9d_f3dd_7f4f_74a78b7b3852
  9d894c7c_30e0_c74a_cfb3_a68f088d0048["build()"]
  d73ec138_1801_f65e_9f01_1730eee813b7 -->|calls| 9d894c7c_30e0_c74a_cfb3_a68f088d0048
  style d73ec138_1801_f65e_9f01_1730eee813b7 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

crates/ignore/src/walk.rs lines 1344–1418

    pub fn visit(mut self, builder: &mut dyn ParallelVisitorBuilder<'_>) {
        let threads = self.threads();
        let mut stack = vec![];
        {
            let mut visitor = builder.build();
            let mut paths = Vec::new().into_iter();
            std::mem::swap(&mut paths, &mut self.paths);
            // Send the initial set of root paths to the pool of workers. Note
            // that we only send directories. For files, we send to them the
            // callback directly.
            for path in paths {
                let (dent, root_device) = if path == Path::new("-") {
                    (DirEntry::new_stdin(), None)
                } else {
                    let root_device = if !self.same_file_system {
                        None
                    } else {
                        match device_num(&path) {
                            Ok(root_device) => Some(root_device),
                            Err(err) => {
                                let err = Error::Io(err).with_path(path);
                                if visitor.visit(Err(err)).is_quit() {
                                    return;
                                }
                                continue;
                            }
                        }
                    };
                    match DirEntryRaw::from_path(0, path, false) {
                        Ok(dent) => (DirEntry::new_raw(dent, None), root_device),
                        Err(err) => {
                            if visitor.visit(Err(err)).is_quit() {
                                return;
                            }
                            continue;
                        }
                    }
                };
                stack.push(Message::Work(Work {
                    dent,
                    ignore: self.ig_root.clone(),
                    root_device,
                }));
            }
            // ... but there's no need to start workers if we don't need them.
            if stack.is_empty() {
                return;
            }
        }
        // Create the workers and then wait for them to finish.
        let quit_now = Arc::new(AtomicBool::new(false));
        let active_workers = Arc::new(AtomicUsize::new(threads));
        let stacks = Stack::new_for_each_thread(threads, stack);
        std::thread::scope(|s| {
            let handles: Vec<_> = stacks
                .into_iter()
                .map(|stack| Worker {
                    visitor: builder.build(),
                    stack,
                    quit_now: quit_now.clone(),
                    active_workers: active_workers.clone(),
                    max_depth: self.max_depth,
                    min_depth: self.min_depth,
                    max_filesize: self.max_filesize,
                    follow_links: self.follow_links,
                    skip: self.skip.clone(),
                    filter: self.filter.clone(),
                })
                .map(|worker| s.spawn(|| worker.run()))
                .collect();
            for handle in handles {
                handle.join().unwrap();
            }
        });
    }

Subdomains

Called By

Frequently Asked Questions

What does visit() do?
visit() is a function in the tailwindcss codebase.
What does visit() call?
visit() calls 11 function(s): build, device_num, from_path, is_quit, new_for_each_thread, new_raw, new_stdin, push, and 3 more.
What calls visit()?
visit() is called by 2 function(s): run, visit.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free