无法从Winapi板条箱中调用CryptDecrypt,因为它找不到模块
在 它说该功能在winapi::um::wincrypt::CryptDecrypt中,但是当我安装板条箱并将其带入项目中时,所有功能都可以正常工作,直到我尝试调用以下错误消息的功能: error[E0433]: failed to resolve. Could not find `wincrypt` in `um` --> src\main.rs:68:39 | 68 | let decrypted_password = winapi::um::wincrypt::CryptDecrypt(password); | ^^^^^^^^ Could not find `wincrypt` in `um` 我的目标是从我的计算机上的"本地数据"文件中解密密码存储密码.我正在使用Rust中的Windows win32crypt API绑定称为winapi.我正在尝试完成类似于 chromep
0 2024-03-01
编程技术问答社区
我怎样才能用Rocket响应包含JSON数据的POST请求?
我正在尝试使用fn main() { rocket::ignite().mount("/", routes![helloPost]).launch(); } #[derive(Debug, PartialEq, Eq, RustcEncodable, FromForm)] struct User { id: i64, USR_Email: String, USR_Password: String, USR_Enabled: i32, USR_MAC_Address: String } #[post("/", data = "")] fn helloPost(user_input: Form) -> String { println!("print test {}", user_input); } 当我运行cargo run一切都起作用时,但是,当我向Postman发送邮政请求进行测试时,我会收到此错误: POST /: => Mat
0 2024-03-01
编程技术问答社区
如何在Rust中传递匿名函数作为参数?
过去一周我一直在玩Rust.我似乎无法弄清楚如何通过调用该方法定义为参数的函数,也没有遇到任何以这种方式使用的文档. 在调用Rust>? 中调用函数时,是否可以在参数列表中定义函数. 这是我到目前为止尝试的... fn main() { // This works thing_to_do(able_to_pass); // Does not work thing_to_do(fn() { println!("found fn in indent position"); }); // Not the same type thing_to_do(|| { println!("mismatched types: expected `fn()` but found `||`") }); } fn thing_to_do(execute: fn()) { execut
0 2024-02-26
编程技术问答社区
从Windows到Android交叉编译库失败
我正在尝试从Windows的4个Android目标(i386,X86_64,ARMV7和AARCH64)交叉编译. 我已经为这些目标设置了Android NDK工具链,并试图在此教程. 我认为我已经正确设置了工具链,并且可以在终端中成功执行aarch64-linux-android-clang. 构建日志: cargo build --target aarch64-linux-android --release --verbose Fresh cc v1.0.28 Fresh autocfg v0.1.1 Fresh version_check v0.1.5 Fresh void v1.0.2 Fresh cfg-if v0.1.6 Fresh rustc-demangle v0.1.13 Fresh byteorder v1.2.7 Fresh eit
2 2024-02-17
编程技术问答社区
如何将Rust代码编译并链接到Android apk包装的应用程序中
我正在尝试将Rust Code添加到Android NDK样本(本机活动)中; 每当我将Rust Code(以A.A的编译为.A)链接到.So时,它将无法运行. 我从这里获取信息,以获取一个Android Aware Rust Compiler和"独立工具链" https://github.com/mozilla/mozilla/rust/rust/wiki/wiki/doc-building - for android 有人在Rust IRC频道上建议我在某个地方提及"拇指". 是否可以选择将其传递给Rustc,或者我必须首先以不同的方式构建它? 我当然能够在桌面构建上互相调用Rust&c. 是否有一个样本,其中有人在.apk中使用锈蚀代码;这必须很简单..很难为复杂的项目解密手工艺品. (我认为从阅读伺服源很难弄清楚这一点) 我已经验证了此过程,生成了一个可用的软件包而无需添加生锈;它只有在i 链接未插入的锈色代码时才无法运行 - 即使未达到(即使链接都
0 2024-02-17
编程技术问答社区
在Android请求权限上,READ_EXTERNE_STORAGE等Rust应用程序如何
我有一个针对Android的Rust应用程序,它需要能够读取外部存储上的文件. 如果我只是天真地运行 let f = File::open("/sdcard/tmp/demo.ts"); error!("FILE CHECK {:?}", f); 我得到 2023-07-12 10:46:24.150 1905-12170/? E/MediaProvider: Permission to access file: /storage/emulated/0/tmp/demo.ts is denied 2023-07-12 10:46:24.151 10285-10308/rust.openxr_gst E/openxr_gst: FILE CHECK Err(Os { code: 13, kind: PermissionDenied, message: "Permission denied" }) 在日志中. 我们应用程序的Java版本 if (Cont
8 2024-02-09
编程技术问答社区
Android NDK(libgcc_real.a)上有多个'__aeabi_ul2f'的定义。
使用CMAKE在Android上编译大型项目时,我会遇到此错误.显然,找到定义的地方之一 libsmoltcp_cpp_interface_rust.a(compiler_builtins-5ae026d08032e786.compiler_builtins.2kv22hwk-cgu.127.rcgu.o): previous definition here 这是一些与C ++混合的Rust Code在CMAKE中的编译: add_custom_target( lib_smol_tcp_rust COMMAND echo "-------------COMPILING LIBSMOLTCP_CPP_INTERFACE RELEASE x86_64" && cargo build --release && echo "-------------COMPILING LIBSMOLTCP_CPP_INTERFACE RELEASE aa
6 2024-02-07
编程技术问答社区
在为安卓交叉编译时出现链接器错误
我想将我的项目编译为Android.我创建了〜/.cargo/config如下: - [target.armv7-linux-androideabi] ar = "/optHDD/AndroidNDK/toolchains/llvm/prebuilt/linux-x86_64/bin/arm-linux-androideabi-ar" linker = "/optHDD/AndroidNDK/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi26-clang" 这是我项目的cargo.toml文件: - [package] name = "examer" version = "0.1.0" authors = ["none"] edition = "2018" [dependencies] tokio = { version = "0.2", features = ["full"] } l
4 2024-02-07
编程技术问答社区
交易模拟失败:错误处理指令0:未经授权签名或可写帐户的交叉程序调用
我在添加一个新博客时会遇到此错误:错误:未能发送交易:交易模拟失败:错误处理指令0:带有未经授权的签名者或可写入帐户的交叉编程调用 客户端代码 import { TOKEN_PROGRAM_ID } from "@solana/spl-token"; import { getProgramInstance } from "../../utils"; import { SOLANA_HOST } from "../../utils/const"; import * as anchor from "@project-serum/anchor"; const utf8 = anchor.utils.bytes.utf8; const { BN, web3 } = anchor; const { SystemProgram } = web3; const defaultAccounts = { tokenProgram: TOKEN_PROGRAM_ID, clock:
6 2024-01-27
编程技术问答社区
如何使货物得到保存分析?
如何将货物货运到save-analysis?我知道rustc -Zsave-snalysis ,但是,我无法为cargo找到.而且我想知道如何将它们读回rls_analysis数据结构. 我尝试了I also tried export RUSTC_SAVE_ANALYSIS=api,也没有工作. 我想做的是将完全合格的路径(例如::foo1::foo2::Foo3)获取到源代码中注明的类型.如果还有其他解决方案,请告诉我. 解决方案 export RUSTFLAGS="-Z save-analysis" 更新 保存的分析数据不会加载AnalysisHost的默认配置.这是因为要解决方法,只需移动save-analysis目录到适当的位置. target/debug/deps/save-analysis target/rls/debug/deps/save-analysis 根据您的构建模式替换为release rele
2 2024-01-26
编程技术问答社区
如何为作为容器部署的AWS Lambda函数编写Dockerfile?
我一直在编写一个由AWS上的应用程序,该应用程序由几个Rust Lambdas组成.这些Lambdas之一必须可以访问一堆外部依赖项,因此需要对其进行扩展.据我了解,Rust官方的AWS Lambda运行时间在Lambda的二进制中运行,不需要任何特殊的设置或港口的曝光. 我的Dockerfile如下: # building omitted FROM alpine:latest AS runner WORKDIR /root/ COPY target/x86_64-unknown-linux-musl/release/my-lambda ./my-lambda CMD [ "/root/my-lambda" ] 然后,该图像被构建并推到Amazon ECR注册表中,我的lambda配置为从中获取代码. 我在AWS控制台中使用任何测试数据调用功能时获得的日志是: IMAGE Launch error: fork/exec /root/my-lambda: permiss
2 2024-01-26
编程技术问答社区
如何将用Rusoto从S3下载的文件保存到我的硬盘上?
我试图从rusoto的存储桶中下载文件,我正在获取文件内容: fn get_object(client: &TestClient, bucket: &str, filename: &str) { let get_req = GetObjectRequest { bucket: bucket.to_owned(), key: filename.to_owned(), ..Default::default() }; let result = client.get_object(&get_req).sync().expect("Couldn't GET object"); let stream = result.body.unwrap(); let body = stream.concat2().wait().unwrap(); assert!(body.len() > 0); }
2 2024-01-25
编程技术问答社区
从未使用过的空VEC是否仍会被分配?
我有一个程序,其中我有很多具有Vec作为字段的结构类型,但是在大多数情况下,Vec从未使用过(这些类型都在单独的库中提前哪种类型的库用户将要添加Vec s).下面的示例说明了情况.我想知道b中的空VEC是否会被分配,或者编译器是否足够聪明,可以知道它不使用,因此不需要分配.我怀疑它仍然会被分配,在这种情况下,我将在Option中包装Vec,以便可以创建B而无需分配A Vec,从而避免许多不必要的分配. #[derive(Debug)] struct Foo { message: String, vec: Vec, } fn main() { let a = Foo { message: "Hello".to_string(), vec: Vec::new(), }; dbg!(a.message); } 解决方案 编译器可能不够聪明,无法消除Vec,但仍不会分配为 Vec::new()不
6 2024-01-24
编程技术问答社区
为什么后续的Rust变量会递增堆栈指针而不是递减它?
我觉得奇怪的是,当您在Rust中创建静态分配的变量时,似乎随着堆栈指针的增加而形成.我知道情况并非如此,因为堆栈指针随着内存的分配而减小. 如果我在C中做同样的事情,我会看到堆栈指针在创建更多变量时会减小. 为什么这样?生锈的编译器是否从底部到顶部分配给这些编译器? fn main() { let i1 = 1; let i2 = 1; let i3 = 1; println!("i1 : {:?}", &i1 as *const i32); println!("i2 : {:?}", &i2 as *const i32); println!("i3 : {:?}", &i3 as *const i32); } 当我运行此程序时,我会收到此信息: i1 : 0x9f4f99fb24 i2 : 0x9f4f99fb28 i3 : 0x9f4f99fb2c 如果我使用了C,我会得到: i1 : 0x9f4f
2 2024-01-24
编程技术问答社区
如何在Rust中在运行时分配一个数组?
一旦分配了数组,我该如何手动释放它?指针算术是否可以在不安全的模式下进行? 喜欢C ++: double *A=new double[1000]; double *p=A; int i; for(i=0; i.除非您做不寻常的事情,否则应该避免在Rust中的指针算术.您可以以: 的形式编写上述代码 // Pre-allocate space, then fill it. let mut a = Vec::with_capacity(1000); for i in 0..1000 { a.push(i as f64); } // Allocate and initialise, then overwrite let mu
0 2024-01-24
编程技术问答社区
返回依赖于函数中分配的数据的懒惰迭代器。
我是Rust和Reading Rust编程语言的新手,并且在错误处理中 e节org/stable/book/错误处理.使用csv和rustc-serialize库中CSV文件的数据(使用getopts进行参数解析). 作者写了一个函数search,该函数search使用csv::Reader对象逐步跨越了CSV文件的行,并收集那些"城市"字段的条目将指定值匹配到向量并将其返回.我采取的方法与作者略有不同,但这不应该影响我的问题.我的(工作)功能看起来像这样: extern crate csv; extern crate rustc_serialize; use std::path::Path; use std::fs::File; fn search (data_path: P, city: &str) -> Vec where P: AsRef { let file = File::open(data_path).exp
2 2024-01-24
编程技术问答社区
如何对一个可以提供分配器的C库使用Rust内存分配器?
我将Rust Bindings写入C库,该库可以选择使用第三方内存分配器.它的界面看起来像这样: struct allocator { void*(*alloc)(void *old, uint); void(*free)(void*); }; 我想相应的锈结构是以下内容: #[repr(C)] #[derive(Copy, Clone, Debug, PartialEq)] pub struct Allocator { alloc: Option *mut c_void>, free: Option, } 如何实现应该模仿分配器的这两个外部功能?我没有发现任何看起来像Rust中的分配器API(我知道为什么),所以我很好奇是否可能. 解决方案 它并不像您想要的那么容易. 分配方法在 alloc
4 2024-01-24
编程技术问答社区
我怎样才能以一种方便的方式将堆上的内存(在一个盒子里)对齐?
我想将我的堆内存与特定的对齐边界对齐.该边界在编译时已知.无论如何,Box抽象不允许我指定一定的对齐方式.编写我自己的Box -abstraction也不感觉正确,因为所有的Rust生态系统都使用Box.实现堆库的一致性的方便方法是什么? ps:在我的具体情况下,我需要页面对齐. 解决方案 如果每晚都可以接受,则Allocator API提供了一种相当方便的方法: #![feature(allocator_api)] use std::alloc::*; use std::ptr::NonNull; struct AlignedAlloc; unsafe impl Allocator for AlignedAlloc { fn allocate(&self, layout: Layout) -> Result, AllocError> { G
2 2024-01-24
编程技术问答社区
为什么我的并行合并算法在输出的所有位置都产生了正确的值,除了第一个位置?
我正在使用scoped-threadpool编写Rust中的并行合并算法,但是它似乎在输出的所有位置都产生正确的值. . 我试图从合并算法fn parallel_merge(first: &[i32], second: &[i32], output: &mut [i32]) { let mut n = first.len(); let mut m = second.len(); let a; let b; // Make sure that 'first' is the largest of the two to be merged if m
2 2024-01-23
编程技术问答社区
一维 "方形 "阵列中的旋转对称性索引
i具有长度为size * size的一维数组,代表一个值的平方场. 我的目标是将数组旋转到位(上一个问题).我目前有问题在内环中获得正确的索引.我的算法有什么错误? 这是我的代码,在下面跳过以获取解释和示例. 代码(Rust 1.41.0) fn rotate_square_slice(slice: &mut [T], size: usize) { for r in 0..(size + 1) / 2 { // current ring side length let l = size - 1 - r; for i in r..l { let a = size * r + r+i ; let b = size * (r+i) + l-r ; let c = size * (l-r) + l
6 2024-01-23
编程技术问答社区