Вы действительно можете использовать Option::as_ref
, вам просто нужно использовать его раньше:
impl Bar {
fn borrow(&self) -> Result<&Box, BarErr> {
self.data.as_ref().ok_or(BarErr::Nope)
}
}
Существует метод сопутствующих для изменяемых ссылок: Option::as_mut
:
impl Bar {
fn borrow(&mut self) -> Result<&mut Box, BarErr> {
self.data.as_mut().ok_or(BarErr::Nope)
}
}
Вы можете сделать так, чтобы Activity
зарегистрировал анонимного BroadcastReceiver
, который прослушивает определенную трансляцию Intent
. Когда ваш Service
хочет закончить Activity
, он может просто отправить трансляцию Intent
, которую ожидает Activity
.
В onReceive()
из BroadcastReceiver
просто позвоните finish()
. Это не выведет Activity
на передний план.