というか私がライブラリ作るときはアプリケーションの性質を想定せず「ライブラリ自体がどうあるべきか」を考えて作るので、その場合はプレイヤーはライブラリが単独で使い物になるレベルに到達するまでは手をつけない
や、音楽プレイヤーの文脈で言うならさらに Sound は再生しながらストリーミング読み込みという感じになりそうなので、波形データの部分的読み出しやデコードを担当する SoundStream みたいな型を用意することになるだろうけど。
内部的にファイルハンドルとかファイルパスのみを持つようなやつを MusicHandle とか MusicFile と命名しといて、
MusicFile::meta(&mut self) -> Music
MusicFile::sound(&mut self) -> Sound
みたいな感じの API にするかなぁ。
&mut なのは std::fs::File は読み込みでも変更されるから