Remove unsafe from import funcs (#75)

This commit is contained in:
vms
2021-04-19 13:34:05 +03:00
committed by GitHub
parent 820e292f15
commit c702311595
29 changed files with 88 additions and 89 deletions

View File

@ -11,32 +11,32 @@ jobs:
- checkout - checkout
- restore_cache: - restore_cache:
keys: keys:
- fce05-{{ checksum "Cargo.lock" }} - fce04-{{ checksum "Cargo.lock" }}
- run: | - run: |
rustup toolchain install nightly-2021-02-27 rustup toolchain install nightly-2021-03-24
rustup default nightly-2021-02-27 rustup default nightly-2021-03-24
rustup override set nightly-2021-02-27 rustup override set nightly-2021-03-24
rustup component add rustfmt --toolchain nightly-2021-02-27 rustup component add rustfmt --toolchain nightly-2021-03-24
rustup component add clippy --toolchain nightly-2021-02-27 rustup component add clippy --toolchain nightly-2021-03-24
rustup target add wasm32-wasi rustup target add wasm32-wasi
cargo install --path tools/cli cargo install --path tools/cli
cargo fmt --all -- --check --color always cargo fmt --all -- --check --color always
cargo check -v --all-features cargo check -v --all-features -p fce -p fluence-faas -p fluence-app-service -p aquamarine-vm -p fcli -p frepl
(cd ./examples; ./build.sh) (cd ./examples; ./build.sh)
(cd ./fluence-faas/tests/wasm_tests; ./build.sh) (cd ./fluence-faas/tests/wasm_tests; ./build.sh)
cargo test --release -v --all-features cargo test --release -v --all-features -p fce -p fluence-faas -p fluence-app-service -p aquamarine-vm -p fcli -p frepl
cargo clippy -v cargo clippy -v -p fce -p fluence-faas -p fluence-app-service -p aquamarine-vm -p fcli -p frepl
- save_cache: - save_cache:
paths: paths:
- ~/.cargo - ~/.cargo
- ~/.rustup - ~/.rustup
key: fce05-{{ checksum "Cargo.lock" }} key: fce04-{{ checksum "Cargo.lock" }}
workflows: workflows:
version: 2.1 version: 2.1

28
Cargo.lock generated
View File

@ -730,7 +730,7 @@ dependencies = [
[[package]] [[package]]
name = "fce-timestamp-macro" name = "fce-timestamp-macro"
version = "0.6.0" version = "0.6.0"
source = "git+https://github.com/fluencelabs/rust-sdk#339dd4d58a9e7481ad4cc9e73e19a8ebe96b46fe" source = "git+https://github.com/fluencelabs/rust-sdk#1755202195c1e2a86c962219ac1420664afe3d49"
dependencies = [ dependencies = [
"chrono", "chrono",
"quote", "quote",
@ -807,7 +807,7 @@ dependencies = [
[[package]] [[package]]
name = "fluence" name = "fluence"
version = "0.6.0" version = "0.6.0"
source = "git+https://github.com/fluencelabs/rust-sdk#339dd4d58a9e7481ad4cc9e73e19a8ebe96b46fe" source = "git+https://github.com/fluencelabs/rust-sdk#1755202195c1e2a86c962219ac1420664afe3d49"
dependencies = [ dependencies = [
"fce-timestamp-macro", "fce-timestamp-macro",
"fluence-sdk-macro 0.6.0", "fluence-sdk-macro 0.6.0",
@ -879,7 +879,7 @@ dependencies = [
[[package]] [[package]]
name = "fluence-sdk-macro" name = "fluence-sdk-macro"
version = "0.6.0" version = "0.6.0"
source = "git+https://github.com/fluencelabs/rust-sdk#339dd4d58a9e7481ad4cc9e73e19a8ebe96b46fe" source = "git+https://github.com/fluencelabs/rust-sdk#1755202195c1e2a86c962219ac1420664afe3d49"
dependencies = [ dependencies = [
"fluence-sdk-wit 0.6.0", "fluence-sdk-wit 0.6.0",
] ]
@ -898,7 +898,7 @@ dependencies = [
[[package]] [[package]]
name = "fluence-sdk-main" name = "fluence-sdk-main"
version = "0.6.0" version = "0.6.0"
source = "git+https://github.com/fluencelabs/rust-sdk#339dd4d58a9e7481ad4cc9e73e19a8ebe96b46fe" source = "git+https://github.com/fluencelabs/rust-sdk#1755202195c1e2a86c962219ac1420664afe3d49"
dependencies = [ dependencies = [
"fluence-sdk-macro 0.6.0", "fluence-sdk-macro 0.6.0",
"log", "log",
@ -922,7 +922,7 @@ dependencies = [
[[package]] [[package]]
name = "fluence-sdk-wit" name = "fluence-sdk-wit"
version = "0.6.0" version = "0.6.0"
source = "git+https://github.com/fluencelabs/rust-sdk#339dd4d58a9e7481ad4cc9e73e19a8ebe96b46fe" source = "git+https://github.com/fluencelabs/rust-sdk#1755202195c1e2a86c962219ac1420664afe3d49"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
@ -1351,9 +1351,9 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
[[package]] [[package]]
name = "idna" name = "idna"
version = "0.2.2" version = "0.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "89829a5d69c23d348314a7ac337fe39173b61149a9864deabd260983aed48c21" checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8"
dependencies = [ dependencies = [
"matches", "matches",
"unicode-bidi", "unicode-bidi",
@ -1900,7 +1900,7 @@ dependencies = [
"cfg-if 1.0.0", "cfg-if 1.0.0",
"instant", "instant",
"libc", "libc",
"redox_syscall 0.2.5", "redox_syscall 0.2.6",
"smallvec", "smallvec",
"winapi 0.3.9", "winapi 0.3.9",
] ]
@ -2125,9 +2125,9 @@ checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce"
[[package]] [[package]]
name = "redox_syscall" name = "redox_syscall"
version = "0.2.5" version = "0.2.6"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "94341e4e44e24f6b591b59e47a8a027df12e008d73fd5672dbea9cc22f4507d9" checksum = "8270314b5ccceb518e7e578952f0b72b88222d02e8f77f5ecf7abbb673539041"
dependencies = [ dependencies = [
"bitflags", "bitflags",
] ]
@ -2138,7 +2138,7 @@ version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8440d8acb4fd3d277125b4bd01a6f38aee8d814b3b5fc09b3f2b825d37d3fe8f" checksum = "8440d8acb4fd3d277125b4bd01a6f38aee8d814b3b5fc09b3f2b825d37d3fe8f"
dependencies = [ dependencies = [
"redox_syscall 0.2.5", "redox_syscall 0.2.6",
] ]
[[package]] [[package]]
@ -2159,7 +2159,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "528532f3d801c87aec9def2add9ca802fe569e44a544afe633765267840abe64" checksum = "528532f3d801c87aec9def2add9ca802fe569e44a544afe633765267840abe64"
dependencies = [ dependencies = [
"getrandom 0.2.2", "getrandom 0.2.2",
"redox_syscall 0.2.5", "redox_syscall 0.2.6",
] ]
[[package]] [[package]]
@ -2594,7 +2594,7 @@ dependencies = [
"cfg-if 1.0.0", "cfg-if 1.0.0",
"libc", "libc",
"rand", "rand",
"redox_syscall 0.2.5", "redox_syscall 0.2.6",
"remove_dir_all", "remove_dir_all",
"winapi 0.3.9", "winapi 0.3.9",
] ]
@ -2627,7 +2627,7 @@ checksum = "077185e2eac69c3f8379a4298e1e07cd36beb962290d4a51199acf0fdc10607e"
dependencies = [ dependencies = [
"libc", "libc",
"numtoa", "numtoa",
"redox_syscall 0.2.5", "redox_syscall 0.2.6",
"redox_termios", "redox_termios",
] ]

View File

@ -11,4 +11,3 @@ for dir in ./*; do
(cd "$dir"; ./build.sh) (cd "$dir"; ./build.sh)
done done

View File

@ -16,6 +16,11 @@
#[cfg(target_arch = "wasm32")] #[cfg(target_arch = "wasm32")]
use fluence::fce; use fluence::fce;
#[cfg(target_arch = "wasm32")]
use fluence::module_manifest;
#[cfg(target_arch = "wasm32")]
module_manifest!();
pub fn main() {} pub fn main() {}

View File

@ -54,7 +54,7 @@ pub fn put(file_path: String) -> String {
file_path, file_path,
]; ];
let ipfs_result = unsafe { ipfs(cmd) }; let ipfs_result = ipfs(cmd);
ipfs_result ipfs_result
.into_std() .into_std()
.unwrap() .unwrap()
@ -78,7 +78,7 @@ pub fn get(hash: String) -> String {
hash, hash,
]; ];
unsafe { ipfs(cmd) }; ipfs(cmd);
RESULT_FILE_PATH.to_string() RESULT_FILE_PATH.to_string()
} }

View File

@ -50,14 +50,14 @@ pub fn put(file_content: Vec<u8>) -> String {
return format!("file can't be written: {}", e); return format!("file can't be written: {}", e);
} }
unsafe { ipfs_put(rpc_tmp_filepath) } ipfs_put(rpc_tmp_filepath)
} }
#[fce] #[fce]
pub fn get(hash: String) -> Vec<u8> { pub fn get(hash: String) -> Vec<u8> {
log::info!("get called with hash: {}", hash); log::info!("get called with hash: {}", hash);
let file_path = unsafe { ipfs_get(hash) }; let file_path = ipfs_get(hash);
fs::read(file_path).unwrap_or_else(|_| b"error while reading file".to_vec()) fs::read(file_path).unwrap_or_else(|_| b"error while reading file".to_vec())
} }

View File

@ -43,7 +43,7 @@ pub fn invoke() -> TestRecord {
field_12: Vec::new(), field_12: Vec::new(),
}; };
unsafe { mutate_struct(test_record) } mutate_struct(test_record)
} }
#[fce] #[fce]

View File

@ -33,7 +33,7 @@ pub fn main() {
pub fn download(url: String) -> String { pub fn download(url: String) -> String {
log::info!("get called with url {}", url); log::info!("get called with url {}", url);
let result = unsafe { curl(vec![url]) }; let result = curl(vec![url]);
String::from_utf8(result.stdout).unwrap() String::from_utf8(result.stdout).unwrap()
} }

View File

@ -29,8 +29,8 @@ pub fn main() {
/// Calls `curl` and stores returned result into a file. /// Calls `curl` and stores returned result into a file.
#[fce] #[fce]
pub fn get_n_save(url: String, file_name: String) -> String { pub fn get_n_save(url: String, file_name: String) -> String {
let result = unsafe { download(url) }; let result = download(url);
unsafe { file_put(file_name, result.into_bytes()) }; file_put(file_name, result.into_bytes());
String::from("Ok") String::from("Ok")
} }

View File

@ -35,22 +35,20 @@ pub fn all_types(
arg_10: String, arg_10: String,
arg_11: Vec<u8>, arg_11: Vec<u8>,
) -> Vec<u8> { ) -> Vec<u8> {
let mut result = unsafe { let mut result = effector::all_types(
effector::all_types( arg_0,
arg_0, arg_1,
arg_1, arg_2,
arg_2, arg_3,
arg_3, arg_4,
arg_4, arg_5,
arg_5, arg_6,
arg_6, arg_7,
arg_7, arg_8,
arg_8, arg_9,
arg_9, arg_10.clone(),
arg_10.clone(), arg_11.clone(),
arg_11.clone(), );
)
};
result.push(arg_0 as u8); result.push(arg_0 as u8);
result.extend(safe_transmute::transmute_one_to_bytes(&arg_1)); result.extend(safe_transmute::transmute_one_to_bytes(&arg_1));
@ -83,11 +81,9 @@ pub fn all_ref_types(
arg_10: &String, arg_10: &String,
arg_11: &Vec<u8>, arg_11: &Vec<u8>,
) -> Vec<u8> { ) -> Vec<u8> {
let mut result = unsafe { let mut result = effector::all_ref_types(
effector::all_ref_types( arg_0, arg_1, arg_2, arg_3, arg_4, arg_5, arg_6, arg_7, arg_8, arg_9, arg_10, arg_11,
arg_0, arg_1, arg_2, arg_3, arg_4, arg_5, arg_6, arg_7, arg_8, arg_9, arg_10, arg_11, );
)
};
result.push(*arg_0 as u8); result.push(*arg_0 as u8);
result.extend(safe_transmute::transmute_one_to_bytes(arg_1)); result.extend(safe_transmute::transmute_one_to_bytes(arg_1));
@ -107,28 +103,28 @@ pub fn all_ref_types(
#[fce] #[fce]
pub fn string_type(arg: String) -> String { pub fn string_type(arg: String) -> String {
let arg = unsafe { effector::string_type(arg) }; let arg = effector::string_type(arg);
format!("{}_{}", arg, arg) format!("{}_{}", arg, arg)
} }
#[fce] #[fce]
pub fn string_ref_type(arg: &String) -> String { pub fn string_ref_type(arg: &String) -> String {
let arg = unsafe { effector::string_ref_type(arg) }; let arg = effector::string_ref_type(arg);
format!("{}_{}", arg, arg) format!("{}_{}", arg, arg)
} }
#[fce] #[fce]
pub fn str_type(arg: &str) -> String { pub fn str_type(arg: &str) -> String {
let arg = unsafe { effector::str_type(arg) }; let arg = effector::str_type(arg);
format!("{}_{}", arg, arg) format!("{}_{}", arg, arg)
} }
#[fce] #[fce]
pub fn bytearray_type(arg: Vec<u8>) -> Vec<u8> { pub fn bytearray_type(arg: Vec<u8>) -> Vec<u8> {
let mut arg = unsafe { effector::bytearray_type(arg) }; let mut arg = effector::bytearray_type(arg);
arg.push(1); arg.push(1);
arg arg
@ -136,7 +132,7 @@ pub fn bytearray_type(arg: Vec<u8>) -> Vec<u8> {
#[fce] #[fce]
pub fn bytearray_ref_type(arg: &Vec<u8>) -> Vec<u8> { pub fn bytearray_ref_type(arg: &Vec<u8>) -> Vec<u8> {
let mut arg = unsafe { effector::bytearray_ref_type(arg) }; let mut arg = effector::bytearray_ref_type(arg);
arg.push(1); arg.push(1);
arg arg
@ -144,89 +140,89 @@ pub fn bytearray_ref_type(arg: &Vec<u8>) -> Vec<u8> {
#[fce] #[fce]
pub fn bool_type(arg: bool) -> bool { pub fn bool_type(arg: bool) -> bool {
unsafe { effector::bool_type(arg) } effector::bool_type(arg)
} }
#[fce] #[fce]
pub fn bool_ref_type(arg: &bool) -> bool { pub fn bool_ref_type(arg: &bool) -> bool {
unsafe { effector::bool_ref_type(arg) } effector::bool_ref_type(arg)
} }
#[fce] #[fce]
pub fn f32_type(arg: f32) -> f32 { pub fn f32_type(arg: f32) -> f32 {
let arg = unsafe { effector::f32_type(arg) }; let arg = effector::f32_type(arg);
arg + 1.0 arg + 1.0
} }
#[fce] #[fce]
pub fn f32_ref_type(arg: &f32) -> f32 { pub fn f32_ref_type(arg: &f32) -> f32 {
let arg = unsafe { effector::f32_ref_type(arg) }; let arg = effector::f32_ref_type(arg);
arg + 1.0 arg + 1.0
} }
#[fce] #[fce]
pub fn f64_type(arg: f64) -> f64 { pub fn f64_type(arg: f64) -> f64 {
let arg = unsafe { effector::f64_type(arg) }; let arg = effector::f64_type(arg);
arg + 1.0 arg + 1.0
} }
#[fce] #[fce]
pub fn f64_ref_type(arg: &f64) -> f64 { pub fn f64_ref_type(arg: &f64) -> f64 {
let arg = unsafe { effector::f64_ref_type(arg) }; let arg = effector::f64_ref_type(arg);
arg + 1.0 arg + 1.0
} }
#[fce] #[fce]
pub fn u32_type(arg: u32) -> u32 { pub fn u32_type(arg: u32) -> u32 {
let arg = unsafe { effector::u32_type(arg) }; let arg = effector::u32_type(arg);
arg + 1 arg + 1
} }
#[fce] #[fce]
pub fn u32_ref_type(arg: &u32) -> u32 { pub fn u32_ref_type(arg: &u32) -> u32 {
let arg = unsafe { effector::u32_ref_type(arg) }; let arg = effector::u32_ref_type(arg);
arg + 1 arg + 1
} }
#[fce] #[fce]
pub fn u64_type(arg: u64) -> u64 { pub fn u64_type(arg: u64) -> u64 {
let arg = unsafe { effector::u64_type(arg) }; let arg = effector::u64_type(arg);
arg + 1 arg + 1
} }
#[fce] #[fce]
pub fn u64_ref_type(arg: &u64) -> u64 { pub fn u64_ref_type(arg: &u64) -> u64 {
let arg = unsafe { effector::u64_ref_type(arg) }; let arg = effector::u64_ref_type(arg);
arg + 1 arg + 1
} }
#[fce] #[fce]
pub fn i32_type(arg: i32) -> i32 { pub fn i32_type(arg: i32) -> i32 {
let arg = unsafe { effector::i32_type(arg) }; let arg = effector::i32_type(arg);
arg + 1 arg + 1
} }
#[fce] #[fce]
pub fn i32_ref_type(arg: &i32) -> i32 { pub fn i32_ref_type(arg: &i32) -> i32 {
let arg = unsafe { effector::i32_ref_type(arg) }; let arg = effector::i32_ref_type(arg);
arg + 1 arg + 1
} }
#[fce] #[fce]
pub fn i64_type(arg: i64) -> i64 { pub fn i64_type(arg: i64) -> i64 {
let arg = unsafe { effector::i64_type(arg) }; let arg = effector::i64_type(arg);
arg + 1 arg + 1
} }
#[fce] #[fce]
pub fn i64_ref_type(arg: &i64) -> i64 { pub fn i64_ref_type(arg: &i64) -> i64 {
let arg = unsafe { effector::i64_ref_type(arg) }; let arg = effector::i64_ref_type(arg);
arg + 1 arg + 1
} }
#[fce] #[fce]
pub fn empty_type() -> String { pub fn empty_type() -> String {
unsafe { effector::empty_type() } effector::empty_type()
} }
mod effector { mod effector {

View File

@ -14,6 +14,5 @@ name = "arrays_passing_effector"
path = "src/effector.rs" path = "src/effector.rs"
[dependencies] [dependencies]
# fluence = { git = "https://github.com/fluencelabs/rust-sdk" }
fluence = { git = "https://github.com/fluencelabs/rust-sdk" } fluence = { git = "https://github.com/fluencelabs/rust-sdk" }
safe-transmute = "0.11.0" safe-transmute = "0.11.0"

View File

@ -24,7 +24,7 @@ pub fn main() {}
pub fn byte_type(mut arg: Vec<u8>) -> Vec<u8> { pub fn byte_type(mut arg: Vec<u8>) -> Vec<u8> {
arg.push(0); arg.push(0);
let mut arg = unsafe { effector::byte_type(arg) }; let mut arg = effector::byte_type(arg);
arg.push(2); arg.push(2);
arg arg
@ -34,7 +34,7 @@ pub fn byte_type(mut arg: Vec<u8>) -> Vec<u8> {
pub fn inner_arrays_1(mut arg: Vec<Vec<Vec<Vec<u8>>>>) -> Vec<Vec<Vec<Vec<u8>>>> { pub fn inner_arrays_1(mut arg: Vec<Vec<Vec<Vec<u8>>>>) -> Vec<Vec<Vec<Vec<u8>>>> {
arg.push(vec![vec![vec![0]]]); arg.push(vec![vec![vec![0]]]);
let mut arg = unsafe { effector::inner_arrays_1(arg) }; let mut arg = effector::inner_arrays_1(arg);
arg.push(vec![vec![vec![2]]]); arg.push(vec![vec![vec![2]]]);
arg arg
@ -57,7 +57,7 @@ pub fn inner_arrays_2(mut arg: Vec<Vec<Vec<Vec<TestRecord>>>>) -> Vec<Vec<Vec<Ve
TestRecord::default(), TestRecord::default(),
]]]); ]]]);
let mut arg = unsafe { effector::inner_arrays_2(arg) }; let mut arg = effector::inner_arrays_2(arg);
arg.push(vec![vec![vec![ arg.push(vec![vec![vec![
TestRecord { TestRecord {
@ -74,7 +74,7 @@ pub fn inner_arrays_2(mut arg: Vec<Vec<Vec<Vec<TestRecord>>>>) -> Vec<Vec<Vec<Ve
pub fn string_type(mut arg: Vec<String>) -> Vec<String> { pub fn string_type(mut arg: Vec<String>) -> Vec<String> {
arg.push(String::from("fce")); arg.push(String::from("fce"));
let mut arg = unsafe { effector::string_type(arg) }; let mut arg = effector::string_type(arg);
arg.push(String::from("test")); arg.push(String::from("test"));
arg arg
@ -83,7 +83,7 @@ pub fn string_type(mut arg: Vec<String>) -> Vec<String> {
/* /*
#[fce] #[fce]
pub fn bool_type(arg: Vec<bool>) -> Vec<bool> { pub fn bool_type(arg: Vec<bool>) -> Vec<bool> {
let mut arg = unsafe { effector::bool_type(arg) }; let mut arg = effector::bool_type(arg);
arg.push(false); arg.push(false);
arg arg
@ -94,7 +94,7 @@ pub fn bool_type(arg: Vec<bool>) -> Vec<bool> {
pub fn f32_type(mut arg: Vec<f32>) -> Vec<f32> { pub fn f32_type(mut arg: Vec<f32>) -> Vec<f32> {
arg.push(0.0); arg.push(0.0);
let mut arg = unsafe { effector::f32_type(arg) }; let mut arg = effector::f32_type(arg);
arg.push(1.0); arg.push(1.0);
arg arg
@ -104,7 +104,7 @@ pub fn f32_type(mut arg: Vec<f32>) -> Vec<f32> {
pub fn f64_type(mut arg: Vec<f64>) -> Vec<f64> { pub fn f64_type(mut arg: Vec<f64>) -> Vec<f64> {
arg.push(0.0); arg.push(0.0);
let mut arg = unsafe { effector::f64_type(arg) }; let mut arg = effector::f64_type(arg);
arg.push(1.0); arg.push(1.0);
arg arg
@ -114,7 +114,7 @@ pub fn f64_type(mut arg: Vec<f64>) -> Vec<f64> {
pub fn u32_type(mut arg: Vec<u32>) -> Vec<u32> { pub fn u32_type(mut arg: Vec<u32>) -> Vec<u32> {
arg.push(0); arg.push(0);
let mut arg = unsafe { effector::u32_type(arg) }; let mut arg = effector::u32_type(arg);
arg.push(2); arg.push(2);
arg arg
@ -124,7 +124,7 @@ pub fn u32_type(mut arg: Vec<u32>) -> Vec<u32> {
pub fn u64_type(mut arg: Vec<u64>) -> Vec<u64> { pub fn u64_type(mut arg: Vec<u64>) -> Vec<u64> {
arg.push(0); arg.push(0);
let mut arg = unsafe { effector::u64_type(arg) }; let mut arg = effector::u64_type(arg);
arg.push(2); arg.push(2);
arg arg
@ -134,7 +134,7 @@ pub fn u64_type(mut arg: Vec<u64>) -> Vec<u64> {
pub fn i32_type(mut arg: Vec<i32>) -> Vec<i32> { pub fn i32_type(mut arg: Vec<i32>) -> Vec<i32> {
arg.push(0); arg.push(0);
let mut arg = unsafe { effector::i32_type(arg) }; let mut arg = effector::i32_type(arg);
arg.push(2); arg.push(2);
arg arg
@ -144,7 +144,7 @@ pub fn i32_type(mut arg: Vec<i32>) -> Vec<i32> {
pub fn i64_type(mut arg: Vec<i64>) -> Vec<i64> { pub fn i64_type(mut arg: Vec<i64>) -> Vec<i64> {
arg.push(0); arg.push(0);
let mut arg = unsafe { effector::i64_type(arg) }; let mut arg = effector::i64_type(arg);
arg.push(1); arg.push(1);
arg arg
@ -152,7 +152,7 @@ pub fn i64_type(mut arg: Vec<i64>) -> Vec<i64> {
#[fce] #[fce]
pub fn empty_type() -> Vec<String> { pub fn empty_type() -> Vec<String> {
unsafe { effector::empty_type() } effector::empty_type()
} }
mod effector { mod effector {

View File

@ -44,7 +44,7 @@ fn main() {}
#[fce] #[fce]
pub fn test_record(test_record: TestRecord2) -> TestRecord2 { pub fn test_record(test_record: TestRecord2) -> TestRecord2 {
let mut test_record = unsafe { effector::test_record(test_record) }; let mut test_record = effector::test_record(test_record);
test_record.test_record_1 = TestRecord1 { test_record.test_record_1 = TestRecord1 {
field_0: 1, field_0: 1,
@ -58,7 +58,7 @@ pub fn test_record(test_record: TestRecord2) -> TestRecord2 {
#[fce] #[fce]
fn test_record_ref(test_record: &TestRecord2) -> TestRecord2 { fn test_record_ref(test_record: &TestRecord2) -> TestRecord2 {
let mut test_record = unsafe { effector::test_record_ref(test_record) }; let mut test_record = effector::test_record_ref(test_record);
test_record.test_record_1 = TestRecord1 { test_record.test_record_1 = TestRecord1 {
field_0: 1, field_0: 1,