Assuming this is Craft 4, it's actually possible to programmatically save a user without an email address (they will automatically be an inactive user).
But to your question, no - you can't get the ID before the user is saved (because it doesn't exist yet in the database).
An alternative approach could be to use user UIDs instead of IDs – because unlike IDs, you can safely create a UID yourself, set it to the user model being saved, and Craft will respect that UID and use it for the new user's uid database table column when it's saved.
Additionally, by using UIDs instead of IDs, you avoid a potential security issue in exposing the sequential primary key (i.e. the ID), in the event that these emails are ever displayed publicly.
use Craft;
use craft\helpers\StringHelper;
use craft\elements\User;
...
$user = new User();
$user->uid = StringHelper::UUID();
$user->email = $user->uid . '@mysite.com';
$success = Craft::$app->getElements()->saveElement($user);