Compare commits
2 Commits
f8281d894b
...
4f793a3569
Author | SHA1 | Date | |
---|---|---|---|
|
4f793a3569 | ||
|
c76559dda2 |
13
opis.txt
Normal file
13
opis.txt
Normal file
@ -0,0 +1,13 @@
|
||||
Wybrany wzorzec: Iterator
|
||||
|
||||
Kod zawiera klasy:
|
||||
Song - zawiera informacje o nazwie piosenki, nazwie artysty i długości
|
||||
Playlist - zawiera zbiór piosenek oraz funkcje generowania dla niej iteratora
|
||||
PlaylistIter - iterator klasy Playlist pozwalający na pobieranie kolejnych piosenek
|
||||
|
||||
Funkcja main zawiera kod który:
|
||||
- tworzy plaliste
|
||||
- dodaje piosenki do playlisty
|
||||
- wykonuje pętle for na iteratorze stworzonym z Playlist'y i wypisuje informacje o każdej piosence
|
||||
|
||||
Link do repozytorium: https://git.dawidpietrykowski.com/UMK/io_2
|
11
src/main.rs
11
src/main.rs
@ -11,12 +11,14 @@ struct Playlist{
|
||||
}
|
||||
|
||||
impl Playlist{
|
||||
// Empty constructor
|
||||
fn new() -> Playlist {
|
||||
Playlist{
|
||||
songs: Vec::new(),
|
||||
}
|
||||
}
|
||||
|
||||
// Generates iterator from playlist
|
||||
fn iter(&self) -> PlaylistIterator{
|
||||
PlaylistIterator{
|
||||
playlist: self,
|
||||
@ -24,6 +26,7 @@ impl Playlist{
|
||||
}
|
||||
}
|
||||
|
||||
// Adds a song to playlist
|
||||
fn add_song(&mut self, song: Song){
|
||||
self.songs.push(song);
|
||||
}
|
||||
@ -38,15 +41,22 @@ impl<'a> Iterator for PlaylistIterator<'a>{
|
||||
type Item = &'a Song;
|
||||
|
||||
fn next(&mut self) -> Option<Self::Item> {
|
||||
// Attempts to get current song
|
||||
let song = self.playlist.songs.get(self.current_index as usize);
|
||||
|
||||
// Moves id to next song
|
||||
self.current_index += 1;
|
||||
|
||||
// Returns song or nothing
|
||||
song
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
// Creating a playlist
|
||||
let mut playlist = Playlist::new();
|
||||
|
||||
// Adding songs to a playlist
|
||||
playlist.add_song(
|
||||
Song{
|
||||
name: String::from("s1"),
|
||||
@ -69,6 +79,7 @@ fn main() {
|
||||
}
|
||||
);
|
||||
|
||||
// Iterating over playlist and printing song information
|
||||
for song in playlist.iter(){
|
||||
println!("{:?}", song);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user