首页 > 编程语言 >rust与python/c++语法区别

rust与python/c++语法区别

时间:2024-02-28 17:48:47浏览次数:30  
标签:slice .. python c++ let animal println array rust

if / match

pub fn animal_habitat(animal: &str) -> &'static str {
    let id = if animal == "crab" {  //id等于(或拥有)了一个匿名函数的返回值
        1
    } else if animal == "gopher" {
        2
    } else if animal == "snake" {
        3
    } else {
        -1
    };
}

match number {
    // 匹配单个值
    1 => println!("One!"),
    // 匹配多个值
    2 | 3 | 5 | 7 | 11 => println!("This is a prime"),
    // 匹配一个闭区间范围
    13..=19 => println!("A teen"),
    // else
    _ => println!("Ain't special"),
    }

for while loop

    for n in 1..101 {}
    for n in 1..=100 {}
    for number in (1..101).rev() {}
    for name in names.iter() {}
    for name in names.into_iter() {}
    for name in names.iter_mut() {}

    'counting_up: loop {
	loop {
            if id == 1 {
                break;
            }
            if id == 2 {
                break 'counting_up;
            }
        }

slice array tuple

fn slice_out_of_array() {
    let mut a :[i32] = [0; 100];  //100个0,[i32]表i32的数组

    let a = [1, 2, 3, 4, 5];  //遮蔽shadow,变量另用
    let nice_slice = &a[1..4];
    //slice前面要加&
}

fn indexing_tuple() {
    let numbers = (1, 2, 3);

    let second = numbers.1;  //成员
    let (a,b,c)=numbers;  //拆解tuple
}

vector

数组array的空间已知,分配到内存的栈Stack部分;
向量vector空间未知,可以随意拓展/收缩空间,分配到堆Heap

fn array_and_vec() -> ([i32; 4], Vec<i32>) {
    let a = [10, 20, 30, 40]; // a plain array
    let v = vec![10, 20, 30, 40];  //macro for vectors

    (a, v)
}

标签:slice,..,python,c++,let,animal,println,array,rust
From: https://www.cnblogs.com/nolca/p/18040998

相关文章

  • 【rust】《 Rust安装并配置cargo国内源(提供rust编译器) 》
    下载Rust安装程序官网地址:https://www.rust-lang.org/tools/installWindow直接点击DownloadRustup-init.exe就可以下载运行程序。运行安装程序双击下载的rustup-init.exe程序,此时会弹出命令窗口命令窗口内输入1  ;1表示默认形式安装,Rust的环境变量会自动添加到系统......
  • C++的异常处理究竟有多慢?
    我们能在各处看到“C++的异常很慢,不要用”这样的言论,不过很少有人告诉你,C++的异常到底有多慢,以及它为什么这么慢。本文会详细介绍C++在抛出以及捕获异常时,代码到底做了什么,以及我们使用C++异常到底付出了多少代价。抛出异常要了解异常处理到底做了什么,我们需要深入到汇编语言来......
  • Rust的Cow类型有什么用?详解Cow及其用途
    Rust的智能指针有哪些?大多数人都能马上答出Box<T>、Rc<T>和Arc<T>、Ref<T>和在异步编程中很常见的Pin<P>等等。不过,有一个可能经常被大多数人遗忘的类型,它功能强大,利用好了可以节省很多复制开销;它就是这篇文章的主角:Cow<B>。什么是COW(Copy-On-Write)?在开始之前,有必要先介绍一下CO......
  • 通过前向声明解决C++中两个头文件互相引用的问题
    在C++中,当两个头文件互相引用时,可以通过前向声明来避免直接的#include依赖,从而解决循环依赖的问题。前向声明是在一个头文件中声明另一个头文件中的类或类型的名称,而不包括其具体的实现细节。这样,每个头文件只依赖对方的声明,而不需要依赖对方的定义,从而打破了循环依赖。以下是如......
  • python移除/删除非空文件夹/目录的最有效方法是什么?
    1.标准库参考:shutil.rmtree。根据设计,rmtree在包含只读文件的文件夹树上失败。如果要删除文件夹,不管它是否包含只读文件,请使用importshutilshutil.rmtree('/folder_name',ignore_errors=True)2.从os.walk()上的python文档中:#Deleteeverythingreachablefromthedirec......
  • Python如何递归删除空文件夹
    1.Python如何递归删除空文件夹,这个问题很常见。但大多数人的解决办法都是自己实现递归函数解决这个问题,其实根本不用那么麻烦。Python中的os.walk提供了一种从内到外的遍历目录树的方法(设置topdown=False),这样由内到外判断当前目录树下是否有文件和文件夹,如果都没有则意味着当前目......
  • python中5种线程锁
    线程安全线程安全是多线程或多进程编程中的一个概念,在拥有共享数据的多条线程并行执行的程序中,线程安全的代码会通过同步机制保证各个线程都可以正常且正确的执行,不会出现数据污染等意外情况。线程安全的问题最主要还是由线程切换导致的,比如一个房间(进程)中有10颗糖(资源),除此之外......
  • OpenCV计数应用 c++(QT)
    一、前言为了挑战一下OpenCV的学习成果,最经一直在找各类项目进行实践。机缘巧合之下,得到了以下的需求:要求从以下图片中找出所有的近似矩形的点并计数,重叠点需要拆分单独计数。二、解题思路1.图片作二值化处理autoimage=cv::imread("points.jpg");cv::Matborder;//为......
  • C++临时对象
    C++临时对象临时对象的构造与析构在C++中,临时对象(TemporaryObject)是在表达式求值过程中创建的、无名字的对象。它们通常用于存储中间结果或作为函数调用的参数或返回值,其生命周期通常仅限于表达式的求值过程中。临时对象的构建和析构与普通对象类似,只是它们的生命周期通常比......
  • python部署项目为什么要用Nginx和uWSGI
    一、测试运行python项目1.1Flask项目说明1:当我们直接用编译器运行Flask项目的时候,会有一个提示:意思就是:这是开发环境的服务器,不能用于生产环境的部署,请使用WSGI的服务器替换1.2Django项目说明2:当我们直接用编译器运行Django项目......