小编rdx*_*dkr的帖子

如何在 Rust 中使用 clap 测试 CLI 参数?

使用 为 CLI 程序编写测试的最惯用的方法是什么clap?我目前正在这样做:

#[derive(Debug, Parser)]
#[clap(author, version, about)]
pub struct StructArgs {
    #[clap(subcommand)]
    pub command_type: CommandType,
}

#[derive(Debug, Subcommand)]
pub enum CommandType {
    Command1(Command1Args),
    ...
}

#[derive(Debug, Args)]
pub struct Command1Args {
    pub field: String,
    ...
}

impl Command1Args {
    ...
}

#[test]
fn test_do_stuff() {
    let args = StructArgs::try_parse_from(
        std::iter::once("<PROGRAM NAME>")
        .chain(
            ["<ARG 1>", ..., "<ARG n>"]
            .iter()
            .cloned()
        )
    );

    if let CommandType::Command1(command1_args) = args.command_type {
        // do stuff with command1_args
    } else {
        panic!(); …
Run Code Online (Sandbox Code Playgroud)

testing command-line-interface rust clap

8
推荐指数
1
解决办法
2320
查看次数

如何传递 &amp;mut str 并更改原始 mut str 而不返回?

我正在从书中学习 Rust,并且正在处理第 8 章末尾的练习,但是在将单词转换为 Pig Latin 的问题上我遇到了困难。我想具体看看我是否可以将 a 传递&mut String给一个接受 a (也接受切片)的函数&mut str并修改其中引用的字符串,以便将更改反射回外部而不需要 a return,就像在 C 中使用 a 一样char **

我不太确定我只是搞乱了语法,还是由于 Rust 的严格规则而导致它比听起来更复杂,而我还没有完全掌握这些规则。对于里面的终身错误,to_pig_latin()我记得读过一些解释如何正确处理这种情况的东西,但现在我找不到它,所以如果你也能为我指出它,我将非常感激。

另外,您对我处理字符串内的字符和索引的方式有何看法?

use std::io::{self, Write};

fn main() {
    let v = vec![
        String::from("kaka"),
        String::from("Apple"),
        String::from("everett"),
        String::from("Robin"),
    ];

    for s in &v {
        // cannot borrow `s` as mutable, as it is not declared as mutable
        // cannot borrow data in a `&` reference as mutable
        to_pig_latin(&mut s);
    }

    for …
Run Code Online (Sandbox Code Playgroud)

string reference mutable lifetime rust

7
推荐指数
1
解决办法
1万
查看次数

如何在 Android Studio 中导入 OpenCV 4.5

这个问题仍然偶尔会得到新的赞成票这一事实让我觉得我不是这种情况下唯一的人,所以我决定写一个对我有用的逐步解释,希望其他人可能会发现它在未来很有用。一切都基于此视频,但我认为最好在此处编写适当的指南,以防它被删除。

如果您正在寻求 OpenCV 3.4 的帮助,就是我在尝试 4.5 版之前所关注的。

android opencv android-studio opencv4

6
推荐指数
1
解决办法
1344
查看次数

如何在CameraX中镜像PreviewView?

免责声明:我知道这个问题的存在,但它目前尚未解决,我试图提供额外的信息,而不用无用的答案污染该问题,无论如何都无法解决问题。

我有一个带有默认镜像的前置摄像头的自定义设备,因此我想正常显示预览,并且需要水平翻转PreviewView的内容,但我被卡住了。过去其他人建议使用,PreviewView#setScaleX(-1)但它要么根本不起作用,要么需要在代码中的一个非常特定的点调用它,而我还没有找到。

下面的代码是CameraFragment.kt官方CameraXBasic示例中的简化版本;我已经添加了评论,我已经厌倦了打电话viewFinder.scaleX = -1f但没有成功。老实说,我真的不认为这个地方有什么区别,因为如果我用 1 以外的任何值调用它,它与 和 都可以正常工作scaleXscaleY它总是忽略负号,所以它永远不会翻转。

private lateinit var viewFinder: PreviewView

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    ...
    viewFinder = view.findViewById(R.id.view_finder)
    // HERE
    viewFinder.post {
        // HERE
        setupCamera()
    }
}

private fun setupCamera() {
    val cameraProviderFuture = ProcessCameraProvider.getInstance(requireContext())
    cameraProviderFuture.addListener(Runnable {
        val cameraProvider = cameraProviderFuture.get()

        val cameraSelector = CameraSelector.Builder()
            .requireLensFacing(CameraSelector.LENS_FACING_FRONT)
            .build()

       val preview = Preview.Builder()
            .build()
            .also {
                // HERE
                it.setSurfaceProvider(viewFinder.surfaceProvider)
            } …
Run Code Online (Sandbox Code Playgroud)

android android-view android-camerax

5
推荐指数
1
解决办法
3041
查看次数

如何在没有javaClass的情况下从资源中读取文本文件

我需要读取一个文本文件,并且readLines()我已经找到了这个问题,但是答案中的代码总是使用javaClass;的一些变体。它似乎只能在类中工作,而我只使用一个简单的 Kotlin 文件,没有声明类。这样写在语法上是正确的,但它看起来真的很难看,而且它总是返回null,所以它一定是错误的:

val lines = object {}.javaClass.getResource("file.txt")?.toURI()?.toPath()?.readLines()
Run Code Online (Sandbox Code Playgroud)

当然我可以像这样指定原始路径,但我想知道是否有更好的方法:

val lines = File("src/main/resources/file.txt").readLines()
Run Code Online (Sandbox Code Playgroud)

text file kotlin

1
推荐指数
1
解决办法
7261
查看次数