pub struct GitHubSearcher { /* private fields */ }
Expand description
GitHubSearcher handles all aspects of searching for code on GitHub, including authentication, API rate limiting, concurrent processing, and results management.
This struct encapsulates the search process flow with a focus on concurrent execution and user feedback through progress indicators.
Implementations§
Source§impl GitHubSearcher
impl GitHubSearcher
Sourcepub async fn new(args: &Args) -> Result<Self, Box<dyn Error + Send + Sync>>
pub async fn new(args: &Args) -> Result<Self, Box<dyn Error + Send + Sync>>
Creates a new GitHubSearcher instance configured with the provided arguments.
§Arguments
args
- Command line arguments containing search configuration
§Returns
A Result containing either the configured GitHubSearcher or an error
§Errors
Will return an error if:
- GitHub token is not provided and not found in environment
- HTTP client creation fails
§Example
use github_code_searching::{Args, GitHubSearcher};
use clap::Parser;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
let args = Args::parse();
let searcher = GitHubSearcher::new(&args).await?;
Ok(())
}
Sourcepub async fn run(
&self,
words: Vec<String>,
) -> Result<(), Box<dyn Error + Send + Sync>>
pub async fn run( &self, words: Vec<String>, ) -> Result<(), Box<dyn Error + Send + Sync>>
Executes searches for all provided words with concurrency control and displays progress in real-time.
This method orchestrates the entire search process:
- Sets up progress bars for visualization
- Spawns a concurrent task for each search term
- Manages concurrency with a semaphore
- Handles result output and error reporting
§Arguments
words
- Vector of search terms to process
§Returns
A Result indicating success or an error encountered during search
§Errors
Will return an error if any search task fails, including:
- API request errors
- Authentication failures
- File I/O errors when saving results
§Example
use github_code_searching::{Args, GitHubSearcher};
use clap::Parser;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
let args = Args::parse();
let searcher = GitHubSearcher::new(&args).await?;
searcher.run(vec!["rust concurrency".to_string(), "tokio async".to_string()]).await?;
Ok(())
}
Auto Trait Implementations§
impl Freeze for GitHubSearcher
impl !RefUnwindSafe for GitHubSearcher
impl Send for GitHubSearcher
impl Sync for GitHubSearcher
impl Unpin for GitHubSearcher
impl !UnwindSafe for GitHubSearcher
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more