Functions
All top-level functions get exposed through the UDL's namespace
block.
For example, if the crate's lib.rs
file contains:
#![allow(unused)] fn main() { fn hello_world() -> String { "Hello World!".to_owned() } }
The UDL file will look like:
namespace Example {
string hello_world();
}
Optional arguments & default values
Function arguments can be marked optional
with a default value specified.
In the UDL file:
namespace Example {
string hello_name(optional string name = "world");
}
The Rust code will take a required argument:
#![allow(unused)] fn main() { fn hello_name(name: String) -> String { format!("Hello {}", name) } }
The generated foreign-language bindings will use function parameters with default values. This works for the Kotlin, Swift and Python targets.
For example the generated Kotlin code will be equivalent to:
fun helloName(name: String = "world" ): String {
// ...
}