we_cdk/macros/lease.rs
1/// Leasing of funds
2///
3/// # Result
4/// The result of execution is `&[u8]` lease_id
5///
6/// # Usage
7/// ```
8/// use we_cdk::*;
9///
10/// #[action]
11/// fn _constructor() {
12/// let recipient: Binary = base58!("3NzkzibVRkKUzaRzjUxndpTPvoBzQ3iLng3");
13/// let amount: Integer = 100;
14/// let lease_id_first: Binary = lease!(address => recipient, amount);
15/// let lease_id_second: Binary = lease!(alias => "miner", amount);
16/// }
17/// ```
18#[macro_export]
19macro_rules! lease {
20 (address => $recipient:expr, $amount:expr) => {{
21 let (error, ptr, len) =
22 wevm::v0::bindings::lease_address($recipient.as_ptr(), $recipient.len(), $amount);
23 error!(error);
24 core::slice::from_raw_parts(ptr, len)
25 }};
26 (alias => $recipient:expr, $amount:expr) => {{
27 let (error, ptr, len) =
28 wevm::v0::bindings::lease_alias($recipient.as_ptr(), $recipient.len(), $amount);
29 error!(error);
30 core::slice::from_raw_parts(ptr, len)
31 }};
32}
33
34/// Cancel the lease
35///
36/// # Usage
37/// ```
38/// use we_cdk::*;
39///
40/// #[action]
41/// fn _constructor() {
42/// let lease_id: Binary = base58!("6Tn7ir9MycHW6Gq2F2dGok2stokSwXJadPh4hW8eZ8Sp");
43/// cancel_lease!(lease_id);
44/// }
45/// ```
46#[macro_export]
47macro_rules! cancel_lease {
48 ($lease_id:expr) => {
49 let error = wevm::v0::bindings::cancel_lease($lease_id.as_ptr(), $lease_id.len());
50 error!(error);
51 };
52}