Vector rust中'Vec::new()`的默认类型是什么?

Vector rust中'Vec::new()`的默认类型是什么?,vector,rust,Vector,Rust,我是新手。我知道Rust在编译时预测绑定的类型。下面的代码编译并运行 fn main() { let mut numbers = Vec::new(); numbers.push(1); } 数字向量的默认类型是什么?Vec::new()依赖其上下文获取信息。当你把一些东西推到向量上时,编译器知道“哦,这是我应该期望的对象类型”。但是,由于您的示例推动整数文本1,这似乎与 在Rust中,未类型化的整数文本将在编译时根据上下文分配一个值。例如: let a = 1u8; let

我是新手。我知道Rust在编译时预测绑定的类型。下面的代码编译并运行

fn main() {
    let mut numbers = Vec::new();
    numbers.push(1);
}
数字
向量的默认类型是什么?

Vec::new()
依赖其上下文获取信息。当你把一些东西推到向量上时,编译器知道“哦,这是我应该期望的对象类型”。但是,由于您的示例推动整数文本
1
,这似乎与

在Rust中,未类型化的整数文本将在编译时根据上下文分配一个值。例如:

let a = 1u8;
let b = 2;
let c = a + b;
b
c
将是
u8
s
a+b
b
指定为与
a
相同的类型,因此操作的输出为a
u8


如果未指定类型,编译器将选择
i32
(per)。因此,在您的具体示例中,正如在游乐场中看到的,
数字
将是一个
向量

Rust中的向量是泛型的,这意味着它们没有默认类型-除非默认情况下您指(
t
是泛型参数)或(
是泛型参数)

如果编译器找不到任何相关的类型注释,或者无法使用类型推断推断元素类型,它将拒绝生成代码:

let mut numbers = Vec::new();

error[E0282]: type annotations needed
 --> src/main.rs:2:23
  |
2 |     let mut numbers = Vec::new();
  |         -----------   ^^^^^^^^ cannot infer type for `T`
  |         |
  |         consider giving `numbers` a type
您可以尝试使用以下方法进一步验证:

让mut number=Vec::new();
设()=个数;
错误[E0308]:类型不匹配
-->src/main.rs:4:9
|
3 | let()=数字;
|^^应为结构'std::vec::vec',找到()
|
=注意:应为'std::vec::vec`//vec类型
找到类型“%1”()`

。我很想知道您使用的是什么编译器和/或您定义的“编译和运行”是什么。我的意思是
rustc
,我使用的是cargo。在编辑的帖子中没有默认的键入。这是
Vec
,你可以知道,因为你调用的是
u64::from_string
,这是
结果
,而
expect
打开了该值。@E_net4最初的问题与整数无关(并且没有明显的重复项),但我认为提问者被这些评论打消了信心;不过,我现在不知道如何处理这个问题。这一行让上下文非常清楚,“当你把某个东西推到向量上时,编译器知道”哦,这是我应该期望的对象类型“。非常精确的答案。
let mut numbers = Vec::new();
let () = numbers;

error[E0308]: mismatched types
 --> src/main.rs:4:9
  |
3 |     let () = numbers;
  |         ^^ expected struct `std::vec::Vec`, found ()
  |
  = note: expected type `std::vec::Vec<_>` // Vec<_>
             found type `()`