In this example rust doesn't just make me aware of the tradeoffs. It almost feels like the language is actively standing in the way of making the trade offs I want to make. At least as the language is today. I think a bunch of upcoming features like unsized rvalues and async fns in traits will help.
Meaningless? I value private communication with my friends and family. I don't exactly need anonymity there. In fact I want the opposite. In the absence of phone numbers I would be adding very explicit metadata on my device to distinguish between my friends.
Signal has taken measures to limit its ability to know who I'm sending and receiving messages from. Though it's still possible by mapping my IP address to me. So yes there is still a centralized metadata problem, but I'm not letting perfect stand in the way of better.