wit-bindgen-rust
Advanced tools
| { | ||
| "git": { | ||
| "sha1": "0c39eee9f23d0530ed81bdf68bdd91fcc09ae08f" | ||
| "sha1": "3dfc82a753ac7e514802a618ddedb24dd51048fe" | ||
| }, | ||
| "path_in_vcs": "crates/rust" | ||
| } |
+3
-3
@@ -476,5 +476,5 @@ # This file is automatically @generated by Cargo. | ||
| name = "wit-bindgen-core" | ||
| version = "0.51.0" | ||
| version = "0.52.0" | ||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" | ||
| checksum = "c15e7a56641cc9040480a26526a3229cbc4e8065adf98c9755d21c4c9b446c4c" | ||
| dependencies = [ | ||
@@ -490,3 +490,3 @@ "anyhow", | ||
| name = "wit-bindgen-rust" | ||
| version = "0.51.0" | ||
| version = "0.52.0" | ||
| dependencies = [ | ||
@@ -493,0 +493,0 @@ "anyhow", |
+2
-2
@@ -16,3 +16,3 @@ # THIS FILE IS AUTOMATICALLY GENERATED BY CARGO | ||
| name = "wit-bindgen-rust" | ||
| version = "0.51.0" | ||
| version = "0.52.0" | ||
| authors = ["Alex Crichton <alex@alexcrichton.com>"] | ||
@@ -86,3 +86,3 @@ build = "build.rs" | ||
| [dependencies.wit-bindgen-core] | ||
| version = "0.51.0" | ||
| version = "0.52.0" | ||
@@ -89,0 +89,0 @@ [dependencies.wit-component] |
+65
-0
@@ -786,2 +786,20 @@ use crate::{ | ||
| Instruction::FixedLengthListLowerToMemory { | ||
| element, | ||
| size: _, | ||
| id: _, | ||
| } => { | ||
| let body = self.blocks.pop().unwrap(); | ||
| let vec = operands[0].clone(); | ||
| let target = operands[1].clone(); | ||
| let size = self.r#gen.sizes.size(element); | ||
| self.push_str(&format!("for (i, e) in {vec}.into_iter().enumerate() {{\n",)); | ||
| self.push_str(&format!( | ||
| "let base = {target}.add(i * {});\n", | ||
| size.format(POINTER_SIZE_EXPRESSION) | ||
| )); | ||
| self.push_str(&body); | ||
| self.push_str("\n}\n"); | ||
| } | ||
| Instruction::ListLift { element, .. } => { | ||
@@ -1214,4 +1232,51 @@ let body = self.blocks.pop().unwrap(); | ||
| } | ||
| Instruction::FixedLengthListLift { | ||
| element: _, | ||
| size, | ||
| id: _, | ||
| } => { | ||
| let tmp = self.tmp(); | ||
| let result = format!("result{tmp}"); | ||
| self.push_str(&format!("let {result} = [",)); | ||
| for a in operands.drain(0..(*size as usize)) { | ||
| self.push_str(&a); | ||
| self.push_str(", "); | ||
| } | ||
| self.push_str("];\n"); | ||
| results.push(result); | ||
| } | ||
| Instruction::FixedLengthListLower { | ||
| element: _, | ||
| size, | ||
| id: _, | ||
| } => { | ||
| for i in 0..(*size as usize) { | ||
| results.push(format!("{}[{i}]", operands[0])); | ||
| } | ||
| } | ||
| Instruction::FixedLengthListLiftFromMemory { | ||
| element, | ||
| size, | ||
| id: _, | ||
| } => { | ||
| let body = self.blocks.pop().unwrap(); | ||
| let elemsize = self | ||
| .r#gen | ||
| .sizes | ||
| .size(element) | ||
| .format(POINTER_SIZE_EXPRESSION); | ||
| let base = operands[0].clone(); | ||
| let tmp = self.tmp(); | ||
| let index_var = format!("idx{tmp}"); | ||
| self.push_str(&format!( | ||
| " let array{tmp}: [_; {size}] = core::array::from_fn(|{index_var}| {{ | ||
| let base = {base}.add({index_var} * {elemsize}); | ||
| {body} | ||
| }});" | ||
| )); | ||
| let result = format!("array{tmp}"); | ||
| results.push(result); | ||
| } | ||
| } | ||
| } | ||
| } |
Sorry, the diff of this file is too big to display