Struct ArtistsIterator

Source
pub struct ArtistsIterator<C: LastFmEditClient> { /* private fields */ }
Expand description

Iterator for browsing all artists in the user’s library.

This iterator provides access to all artists in the authenticated user’s Last.fm library, sorted by play count (highest first). The iterator loads artists as needed and handles rate limiting automatically to be respectful to Last.fm’s servers.

§Examples

let mut client = LastFmEditClientImpl::from_session(Box::new(http_client::native::NativeClient::new()), test_session);

let mut artists = client.artists();

// Get the top 10 artists
let top_artists = artists.take(10).await?;
for artist in top_artists {
    println!("{} ({} plays)", artist.name, artist.playcount);
}

Implementations§

Source§

impl<C: LastFmEditClient> ArtistsIterator<C>

Source

pub fn new(client: C) -> Self

Create a new artists iterator.

This iterator will start from page 1 and load all artists in the user’s library.

Source

pub fn with_starting_page(client: C, starting_page: u32) -> Self

Create a new artists iterator starting from a specific page.

This is useful for implementing offset functionality efficiently by starting at the appropriate page rather than iterating through all previous pages.

Source

pub async fn next_page(&mut self) -> Result<Option<ArtistPage>>

Fetch the next page of artists.

This method handles pagination automatically and includes rate limiting to be respectful to Last.fm’s servers.

Source

pub fn total_pages(&self) -> Option<u32>

Get the total number of pages, if known.

Returns None until at least one page has been fetched.

Trait Implementations§

Source§

impl<C: LastFmEditClient> AsyncPaginatedIterator<Artist> for ArtistsIterator<C>

Source§

fn next<'life0, 'async_trait>( &'life0 mut self, ) -> Pin<Box<dyn Future<Output = Result<Option<Artist>>> + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Fetch the next item from the iterator. Read more
Source§

fn current_page(&self) -> u32

Get the current page number (0-indexed). Read more
Source§

fn total_pages(&self) -> Option<u32>

Get the total number of pages, if known. Read more
Source§

fn collect_all<'life0, 'async_trait>( &'life0 mut self, ) -> Pin<Box<dyn Future<Output = Result<Vec<T>>> + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Collect all remaining items into a Vec. Read more
Source§

fn take<'life0, 'async_trait>( &'life0 mut self, n: usize, ) -> Pin<Box<dyn Future<Output = Result<Vec<T>>> + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Take up to n items from the iterator. Read more

Auto Trait Implementations§

§

impl<C> Freeze for ArtistsIterator<C>
where C: Freeze,

§

impl<C> RefUnwindSafe for ArtistsIterator<C>
where C: RefUnwindSafe,

§

impl<C> Send for ArtistsIterator<C>
where C: Send,

§

impl<C> Sync for ArtistsIterator<C>
where C: Sync,

§

impl<C> Unpin for ArtistsIterator<C>
where C: Unpin,

§

impl<C> UnwindSafe for ArtistsIterator<C>
where C: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> ErasedDestructor for T
where T: 'static,