Module text_search

Module text_search 

Source
Expand description

§Builder Pattern and Concurrency - Rust Book Chapters 5, 10, 16

This module demonstrates the builder pattern and concurrent programming from The Rust Book.

§Key Concepts Demonstrated

  1. Builder Pattern (Chapters 5.3, 10.2)

    • Method chaining by consuming and returning Self
    • Ergonomic API design with sensible defaults
    • Type-state pattern for compile-time guarantees
  2. Message Passing with Channels (Chapter 16.2)

    • Using mpsc::channel() for thread communication
    • The critical drop(tx) pattern for channel termination
    • Collecting results from parallel workers
  3. Closures Capturing Environment (Chapter 13.1)

    • move closures transferring ownership to threads
    • Cloning for shared access across threads
    • Nested closures with different capture modes

§Learning Notes

Why the builder pattern?

  • Provides a fluent, readable API: TextSearcher::new(dir).case_sensitive(true).search("text")
  • Allows optional configuration without many constructors
  • Makes defaults explicit and overridable

Why channels for concurrency?

  • Safe message passing between threads (no shared mutable state)
  • Natural fit for parallel file searching (many producers, one consumer)
  • Rust’s ownership prevents data races at compile time

Structs§

Match
Represents a single match from a text search.
TextSearcher
Text searcher that uses ripgrep as a library for fast text searching.