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{
// 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);
}