For a simple web based GUI app you can use the js version of IPFS or interact with a locally running go-IPFS node using a pretty simple REST api.
Once you got your feet wet, or if you have a more demanding use case, you can use libp2p directly, from js, go or rust.
Since you mentioned rust: https://github.com/libp2p/rust-libp2p
libp2p could be described as an attempt to implement a common networking stack for the distributed web. IPFS builds on libp2p, as does filecoin.
I work for a company https://www.actyx.io/en that does industrial applications based on IPFS / libp2p, so I use IPFS every day. Obviously it is bleeding edge technology with a lot of rough edges. But I find the current state and the rate of improvement quite promising.