Опциональная инициализация экземпляра

Опциональную инициализацию экземпляра (т.е. может вернуть nil), которая бы была ожидаемой я увидел только в Swift через init?(value: Int) и Rust pub fn new(value: i32) -> Option<Self>. В остальных языках это либо неявно (что приводит к ошибкам), либо неразрешено (только через фабрику создавать). Иногда это очень удобно, когда это несложный объект или enum со значениями (в последнем случае это на автомате работает), чтобы не размазывать логику валидации.