panda/api/
require_plugin.rs1use crate::sys::{panda_add_arg, panda_load_plugin, panda_plugin_path};
2use crate::PandaArgs;
3
4use std::ffi::CString;
5
6pub fn require_plugin<Args: PandaArgs>(plugin: &Args) {
9 let plugin_name = CString::new(Args::PLUGIN_NAME).unwrap();
10
11 let path = unsafe { panda_plugin_path(plugin_name.as_ptr()) };
12
13 for (name, arg) in plugin.to_panda_args() {
14 let arg = CString::new(format!("{}={}", name, arg)).unwrap();
15 unsafe {
16 panda_add_arg(plugin_name.as_ptr(), arg.as_ptr());
17 }
18 }
19
20 unsafe {
21 panda_load_plugin(path, plugin_name.as_ptr());
22 }
23}