The match statement is cleaner.
With the sequential if statements, it might seem on a casual read that both if statements could pass - you’d catch both warnings and errors. Only by looking at the conditions do you realize that only up-to-1 of them will run.
With the match statement, it’s very immediately obvious that only one of the commands will run.








It’s funny how every poster who criticizes Signal inevitably makes a technical error. In your case, the claim that “Basically if you are an organizer, criminal, government, part of a hunted opposition, you will leak the whole core group structure of your org with attached phone numbers” entirely lacks basis. The Signal client - the OSS part we can and do control - does not divulge phone numbers.
You have this theory that Signal’s servers are storing communication records. (While there is no evidence to support this, it’s valuable to consider what they could do.) So the data that would be captured here is a network of hashed phone numbers and literally undecryptable messages. It’s impossible for the adversary to determine any phone numbers they don’t already know this way.
And since you can make a Signal account with a burner phone and create a “username”, even a known phone number becomes useless against targets who don’t want to be identified.