Implementing an engine to play music was a good exercise to learn about threading. However, for a real program, you could simply use gstreamer for the music playback. So, let's see how to use this library in our music player.
Remove the following dependencies in your Cargo.toml:
crossbeam = "^0.3.0" pulse-simple = "^1.0.0" simplemad = "^0.8.1"
And remove their corresponding extern crate statements. We can also remove the mp3 and player modules as we'll use gstreamer instead. Now, we can add our dependencies for gstreamer:
gstreamer = "^0.9.1" gstreamer-player = "^0.9.0"
And add their corresponding extern crate statements:
extern crate gstreamer as gst; extern crate gstreamer_player as gst_player;
At the beginning ...