//! Extra tests! //! //! ```compile_fail //! use std::mem; //! use hexchat_unsafe_plugin::PluginHandle; //! //! fn prepoop_your_pants_pluginhandle(ph: &mut PluginHandle<'_>) { //! let temporary: String = "Hello, world!".to_string(); //! let hook = ph.hook_timer(0, |_| { //! println!("{}", temporary); //! true //! }); //! } //! ``` //! //! ```compile_fail //! use hexchat_unsafe_plugin::list::Contexts; //! use hexchat_unsafe_plugin::PluginHandle; //! //! fn unsound(ph: &mut PluginHandle<'_>) { //! ph.ensure_valid_context(|mut ph| { //! let mut list = ph.list(&Contexts); //! let context = list.next().unwrap(); //! write!(ph, "{}", context.name().unwrap()); //! std::mem::forget(list); //! write!(ph, "{}", context.name().unwrap()); //! let ctx = context.context(); //! ph.set_context(&ctx); //! write!(ph, "{}", context.name().unwrap()); //! }) //! } //! ``` //! //! ```compile_fail //! use hexchat_unsafe_plugin::list::Contexts; //! use hexchat_unsafe_plugin::PluginHandle; //! //! fn unsound(ph: &mut PluginHandle<'_>) { //! ph.ensure_valid_context(|mut ph| { //! let mut list = ph.list(&Contexts); //! let context = list.next().unwrap(); //! std::mem::forget(list); //! let ctx = context.context(); //! ph.set_context(&ctx); //! }) //! } //! ``` //! //! ```no_run //! use hexchat_unsafe_plugin::list::Contexts; //! use hexchat_unsafe_plugin::PluginHandle; //! //! fn fine(ph: &mut PluginHandle<'_>) { //! ph.ensure_valid_context(|mut ph| { //! let mut list = ph.list(&Contexts); //! let context = list.next().unwrap(); //! write!(ph, "{}", context.name().unwrap()); //! let ctx = context.context(); //! let name = context.name().unwrap(); //! drop(list); //! ph.set_context(&ctx); //! write!(ph, "{}", name); //! }) //! } //! ```