reference: Value,
}
+#[derive(Debug, Deserialize, Serialize)]
+#[serde(rename_all = "kebab-case")]
+enum AnEnum {
+ Something,
+ Another,
+ ResultA,
+ ResultB,
+}
+
#[perlmod::package(name = "RSPM::Foo142", lib = "perlmod_test")]
mod export {
use anyhow::{bail, Error};
use perlmod::Value;
+ use super::AnEnum;
+
#[export]
fn foo142(a: u32, b: u32) -> Result<u32, Error> {
if a == 42 {
println!("test_refs: copied text: {:?}", data.copied);
Ok(data.reference)
}
+
+ #[export]
+ fn test_enums(data: AnEnum) -> Result<AnEnum, Error> {
+ Ok(match data {
+ AnEnum::Something => AnEnum::ResultA,
+ AnEnum::Another => AnEnum::ResultB,
+ _ => bail!("invalid"),
+ })
+ }
+
+ #[export]
+ fn test_trailing_optional(first: u32, second: Option<u32>) {
+ println!("{:?}, {:?}", first, second);
+ }
+
+ #[export(xs_name = "testit_xsub")]
+ fn testit(#[cv] cv: Value, arg: &str) {
+ let _ = (cv, arg);
+ }
+
+ #[export(raw_return)]
+ fn test_substr_return(#[raw] value: Value) -> Result<Value, Error> {
+ Ok(value.substr(3..6)?)
+ }
}
#[perlmod::package(name = "RSPM::EnvVarLibrary", lib = "x-${CARGO_PKG_NAME}-y")]