Compare commits

..

2 Commits

Author SHA1 Message Date
Dawid Pietrykowski
4f793a3569 Added comments 2023-06-20 18:47:27 +02:00
Dawid Pietrykowski
c76559dda2 Added description 2023-06-20 18:44:05 +02:00
2 changed files with 24 additions and 0 deletions

13
opis.txt Normal file
View 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

View File

@ -11,12 +11,14 @@ struct Playlist{
} }
impl Playlist{ impl Playlist{
// Empty constructor
fn new() -> Playlist { fn new() -> Playlist {
Playlist{ Playlist{
songs: Vec::new(), songs: Vec::new(),
} }
} }
// Generates iterator from playlist
fn iter(&self) -> PlaylistIterator{ fn iter(&self) -> PlaylistIterator{
PlaylistIterator{ PlaylistIterator{
playlist: self, playlist: self,
@ -24,6 +26,7 @@ impl Playlist{
} }
} }
// Adds a song to playlist
fn add_song(&mut self, song: Song){ fn add_song(&mut self, song: Song){
self.songs.push(song); self.songs.push(song);
} }
@ -38,15 +41,22 @@ impl<'a> Iterator for PlaylistIterator<'a>{
type Item = &'a Song; type Item = &'a Song;
fn next(&mut self) -> Option<Self::Item> { fn next(&mut self) -> Option<Self::Item> {
// Attempts to get current song
let song = self.playlist.songs.get(self.current_index as usize); let song = self.playlist.songs.get(self.current_index as usize);
// Moves id to next song
self.current_index += 1; self.current_index += 1;
// Returns song or nothing
song song
} }
} }
fn main() { fn main() {
// Creating a playlist
let mut playlist = Playlist::new(); let mut playlist = Playlist::new();
// Adding songs to a playlist
playlist.add_song( playlist.add_song(
Song{ Song{
name: String::from("s1"), name: String::from("s1"),
@ -69,6 +79,7 @@ fn main() {
} }
); );
// Iterating over playlist and printing song information
for song in playlist.iter(){ for song in playlist.iter(){
println!("{:?}", song); println!("{:?}", song);
} }