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 !RefUnwindSafe for GitHubSearcher
impl !UnwindSafe for GitHubSearcher
impl Freeze for GitHubSearcher
impl Send for GitHubSearcher
impl Sync for GitHubSearcher
impl Unpin for GitHubSearcher
impl UnsafeUnpin 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