Struct bevy_panic_handler::PanicHandlerBuilder
source · pub struct PanicHandlerBuilder { /* private fields */ }Implementations§
source§impl PanicHandlerBuilder
impl PanicHandlerBuilder
sourcepub fn build(self) -> PanicHandler
pub fn build(self) -> PanicHandler
Builds the PanicHandler
Examples found in repository?
More examples
examples/custom_title.rs (line 15)
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
fn main() {
App::new()
.add_plugins(DefaultPlugins)
.add_plugins(
bevy_panic_handler::PanicHandler::new()
.set_title_func(|info| {
format!(
"Panic at L{}:C{}",
info.location().unwrap().line(),
info.location().unwrap().column()
)
})
.build(),
)
.add_systems(Startup, || panic!("Example Message"))
.run();
}examples/closure.rs (line 19)
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
fn main() {
// The path we used to run the executable
let running_name = std::env::args().next().unwrap();
App::new()
.add_plugins(DefaultPlugins)
.add_plugins(
bevy_panic_handler::PanicHandler::new()
.set_call_func(move |_| {
println!("Panicked! Arg 1 was: {running_name}");
})
.set_body_func(|_| {
let mut res_str = String::new();
std::io::stdin().read_line(&mut res_str).unwrap();
format!("Panicked, also got me a message: {res_str}")
})
.build(),
)
.add_systems(Startup, || panic!("Example Error. Closures work fine too."))
.run();
}examples/custom_body.rs (line 23)
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
fn main() {
App::new()
.add_plugins(DefaultPlugins)
.add_plugins(
bevy_panic_handler::PanicHandler::new()
.set_body_func(|info| {
format!(
"Panicked at Line {}, Column {}.\nMessage:\n{}",
info.location().unwrap().line(),
info.location().unwrap().column(),
info.payload()
.downcast_ref::<String>()
.cloned()
.unwrap_or_else(|| info
.payload()
.downcast_ref::<&str>()
.unwrap_or(&"")
.to_string())
)
})
.build(),
)
.add_systems(Startup, || panic!("Example Message"))
.run();
}sourcepub fn take_call_from_existing(self) -> Self
pub fn take_call_from_existing(self) -> Self
After the popup is closed, the previously existing panic hook will be called
sourcepub fn set_call_func(self, call_func: impl PanicHandleFn<()>) -> Self
pub fn set_call_func(self, call_func: impl PanicHandleFn<()>) -> Self
After the popup is closed, this function will be called
Examples found in repository?
examples/closure.rs (lines 11-13)
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
fn main() {
// The path we used to run the executable
let running_name = std::env::args().next().unwrap();
App::new()
.add_plugins(DefaultPlugins)
.add_plugins(
bevy_panic_handler::PanicHandler::new()
.set_call_func(move |_| {
println!("Panicked! Arg 1 was: {running_name}");
})
.set_body_func(|_| {
let mut res_str = String::new();
std::io::stdin().read_line(&mut res_str).unwrap();
format!("Panicked, also got me a message: {res_str}")
})
.build(),
)
.add_systems(Startup, || panic!("Example Error. Closures work fine too."))
.run();
}sourcepub fn set_title_func(self, title_func: impl PanicHandleFn<String>) -> Self
pub fn set_title_func(self, title_func: impl PanicHandleFn<String>) -> Self
The popup title will be set to the result of this function
Examples found in repository?
examples/custom_title.rs (lines 8-14)
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
fn main() {
App::new()
.add_plugins(DefaultPlugins)
.add_plugins(
bevy_panic_handler::PanicHandler::new()
.set_title_func(|info| {
format!(
"Panic at L{}:C{}",
info.location().unwrap().line(),
info.location().unwrap().column()
)
})
.build(),
)
.add_systems(Startup, || panic!("Example Message"))
.run();
}sourcepub fn set_body_func(self, body_func: impl PanicHandleFn<String>) -> Self
pub fn set_body_func(self, body_func: impl PanicHandleFn<String>) -> Self
The popup body will be set to the result of this function
Examples found in repository?
examples/closure.rs (lines 14-18)
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
fn main() {
// The path we used to run the executable
let running_name = std::env::args().next().unwrap();
App::new()
.add_plugins(DefaultPlugins)
.add_plugins(
bevy_panic_handler::PanicHandler::new()
.set_call_func(move |_| {
println!("Panicked! Arg 1 was: {running_name}");
})
.set_body_func(|_| {
let mut res_str = String::new();
std::io::stdin().read_line(&mut res_str).unwrap();
format!("Panicked, also got me a message: {res_str}")
})
.build(),
)
.add_systems(Startup, || panic!("Example Error. Closures work fine too."))
.run();
}More examples
examples/custom_body.rs (lines 8-22)
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
fn main() {
App::new()
.add_plugins(DefaultPlugins)
.add_plugins(
bevy_panic_handler::PanicHandler::new()
.set_body_func(|info| {
format!(
"Panicked at Line {}, Column {}.\nMessage:\n{}",
info.location().unwrap().line(),
info.location().unwrap().column(),
info.payload()
.downcast_ref::<String>()
.cloned()
.unwrap_or_else(|| info
.payload()
.downcast_ref::<&str>()
.unwrap_or(&"")
.to_string())
)
})
.build(),
)
.add_systems(Startup, || panic!("Example Message"))
.run();
}Trait Implementations§
source§impl Default for PanicHandlerBuilder
impl Default for PanicHandlerBuilder
source§fn default() -> PanicHandlerBuilder
fn default() -> PanicHandlerBuilder
Returns the “default value” for a type. Read more
Auto Trait Implementations§
impl !RefUnwindSafe for PanicHandlerBuilder
impl Send for PanicHandlerBuilder
impl Sync for PanicHandlerBuilder
impl Unpin for PanicHandlerBuilder
impl !UnwindSafe for PanicHandlerBuilder
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> FromWorld for Twhere
T: Default,
impl<T> FromWorld for Twhere T: Default,
§fn from_world(_world: &mut World) -> T
fn from_world(_world: &mut World) -> T
Creates
Self using data from the given [World]