你可以透明地将 Rust 的std::vec::Vec
传递到你的合约方法中。以下代码调用了一个接受Vec<SomeStruct<u32>>
的 Sway 合约方法。
let arg = vec![SomeStruct { a: 0 }, SomeStruct { a: 1 }];
methods.struct_in_vec(arg.clone()).call().await?;
你可以像使用任何其他类型一样使用向量--例如[Vec<u32>; 2]
或SomeStruct<Vec<Bits256>>
等。
从合约方法返回向量是支持的,但有一个限制,就是你不能将它们嵌套在另一个类型内部。这个限制是暂时的。
let response = contract_methods.u8_in_vec(10).call().await?;
assert_eq!(response.value, (0..10).collect::<Vec<_>>());
注意:你仍然可以与包含返回向量嵌套在另一个类型内部的方法的合约进行交互,只是不能与方法本身进行交互