当前位置: 首页 > 知识库问答 >
问题:

从数组中取消大小调整时,Rust如何确定切片的长度?

牛昱
2023-03-14

我知道切片就像fatptr:(data\ptr,len)。将数组切片为切片时:

let arr = [0; 10];
let slice_arr = &arr[..];

数组没有像Vec这样的长度字段

我知道slice\u arr.len()可以获取slice的长度,因为slice\u arr有一个长度字段。当数组转换为切片时,Rust如何知道长度字段?

共有2个答案

松灿
2023-03-14

使用. len方法。

use std::io::stdin;

fn main() {
    let arr = [0; 10];
    let slice_arr = &arr[..];
    println!("first element of the slice: {}", slice_arr[0]);
    println!("the slice has {} elements", slice_arr.len());
}

https://doc.rust-lang.org/stable/rust-by-example/primitives/array.html

宰父正真
2023-03-14

数组确实有一个排序的长度“参数”。这不是一个领域,它是类型的一部分:

let x: [u8; 2] = [1, 2];
let y: [u8; 3] = x; // Error here

x的类型为[u8;2]。元素数量始终为2,元素类型始终为u8

因为[u8;2][u8;3]是不同的类型,一个总是正好2u8s长,另一个总是正好3u8s长,所以从xy的赋值失败。

当对数组执行某些操作时,编译器对数组具有特殊的内置语义。这些内置语义可以利用长度“参数”([T;N]中的N)。您可以使用const泛型在类型级别操纵和访问此值,但这是目前每晚唯一的功能

 类似资料:
  • 我在Rust中有一个,我需要在接受切片的函数中使用它。如何从一个中获取一个切片,其中的切片有一个元素,而的切片有零个元素?

  • 本文向大家介绍如何在Java中调整数组大小?,包括了如何在Java中调整数组大小?的使用技巧和注意事项,需要的朋友参考一下 数组无法在Java中动态调整大小。  一种方法是使用java.util.ArrayList(或java.util.Vector)代替本机数组。 另一种方法是重新分配大小不同的数组,然后将旧数组的内容复制到新数组。 例: 输出:

  • 我有一个结构与一些固定大小的数组: 我从一个文件中读取字节到一个固定大小的数组中,并将这些字节逐位复制到结构中。 最后一行()不起作用,因为在结构中它是一个,而是一个切片。我是否可以返回将一个片转换为一个固定大小的数组,就像在一个范围内那样,而不是像我所做的那样说?

  • 问题内容: 您好,我有一个QR码图像,我想调整它的大小,当我尝试使用此代码将其调整为小图像时,我总是得到模糊的图像,并且扫描时QR码不再有效,但是当我使用相同的代码将大小调整为大尺寸图像时,它可以正常工作: 有什么问题,我不清楚,请至少给我一个提示,谢谢。 问题答案: 我使用仿射变换来完成此任务,这是我的代码,希望对您有所帮助

  • 本文向大家介绍如何在PHP中调整图片大小?,包括了如何在PHP中调整图片大小?的使用技巧和注意事项,需要的朋友参考一下 可以使用ImageMagick或GD功能调整图像大小。如果使用了GD的功能,则在对原始数码相机的图像进行采样时,图像文件的大小也会减小。我们将在下面的代码中看到如何使用GD调整图像大小。

  • 问题内容: 我正在使用 Swift 和Parse.com开发适用于iOS的应用程序 我试图让用户从图像选择器中选择一张图片,然后将所选图像的大小调整为200x200像素,然后再上传到我的后端。 Parse.com有一个用于Instagram复制应用程序的教程,名为“ AnyPic”,其中提供了用于调整图像大小的代码,但这是在Objective- C中。 如何在Swift中为所选图片创建200x20