can you write this more elegantly?
this repeats push too much, but is readable
fn push_checked(&mut self, v: V) -> Result<(), TryReserveError> {
let len = self.len();
if len < self.capacity() {
self.push(v);
} else if let Ok(_) = self.try_reserve(len + 1) {
self.push(v);
} else {
self.try_reserve_exact(len + 1)?;
self.push(v);
}
Ok(())
}
this is unreadable imo but doesn't repeat code
fn push_checked(&mut self, v: V) -> Result<(), TryReserveError> {
let len = self.len();
if len >= self.capacity() && self.try_reserve(len + 1).is_err() {
self.try_reserve_exact(len + 1)?;
}
self.push(v);
Ok(())
}

oh no