04.变量和常量
<h1>01.常量和变量</h1>
<h2>1、变量绑定</h2>
<pre><code>fn main() {
let a:&amp;str = &quot;aaa&quot;;
println!(&quot;Hello, {}!&quot;, a);
let b:i32 = 1;
println!(&quot;Hello, {}!&quot;, b);
// 通过类型后缀方式进行类型标注:22是i32类型
let f = 22i32;
let (c,d):(i32,&amp;str) = (1,&quot;aaa&quot;); // 元组变量解构
println!(&quot;Hello, ({},{})&quot;, c,d);
}</code></pre>
<h2>2、变量重新绑定(遮蔽shadowing)</h2>
<pre><code>fn main() {
let a:&amp;str = &quot;aaa&quot;;
println!(&quot;{}&quot;, a);
let a = &quot;bbb&quot;; // 变量遮蔽 shadowing
println!(&quot;{}&quot;, a);
}</code></pre>
<h2>3、变量可变mut</h2>
<pre><code>fn main() {
let mut a:&amp;str = &quot;aaa&quot;;
println!(&quot;{}&quot;, a);
a = &quot;bbb&quot;; // 变量可变
println!(&quot;{}&quot;, a);
}</code></pre>
<h2>4、变量解构</h2>
<pre><code>fn main() {
let (c,d):(i32,&amp;str) = (1,&quot;aaa&quot;); // 元组变量解构
println!(&quot;Hello, ({},{})&quot;, c,d);
}</code></pre>
<h2>5、常量constant</h2>
<ul>
<li>不可以重新复制</li>
<li>不可以重新绑定
<pre><code>fn main() {
// 1、常量名称大写
// - 不可以重新复制
// - 不可以重新绑定
const APP_ID: i32 = 5;
println!(&quot;APP_ID: {}&quot;, APP_ID);
}</code></pre></li>
</ul>
<h2>6、常量方法const fn</h2>
<p>编译时提前计算</p>
<pre><code>const fn add(a: usize, b: usize) -&gt; usize {
a + b
}
const RESULT: usize = add(5, 10);
fn main() {
println!(&quot;The result is: {}&quot;, RESULT);
}</code></pre>
<h2>6、常量泛型</h2>
<pre><code>1、[i32; 2] 和 [i32; 3] 是不同的数组类型,无法用同一个函数调用。
fn display_array(arr: [i32; 3]) {
println!(&quot;{:?}&quot;, arr);
}
fn main() {
let arr: [i32; 3] = [1, 2, 3];
display_array(arr);
let arr: [i32; 2] = [1, 2];
display_array(arr);
}
2、将 i32 改成所有类型(泛型)的数组
会为每个长度单独创建一个函数,假如第一个数组长度是32,就会创建32个函数
fn display_array&lt;T: std::fmt::Debug&gt;(arr: &amp;[T]) {
println!(&quot;{:?}&quot;, arr);
}
fn main() {
let arr: [i32; 3] = [1, 2, 3];
display_array(&amp;arr);
let arr: [i32; 2] = [1, 2];
display_array(&amp;arr);
}
3、const泛型
const N: usize:代表数组长度定义了就不变,假如第一个数组长度是32,就只会创建一个32参数的函数
fn display_array&lt;T: std::fmt::Debug, const N: usize&gt;(arr: [T; N]) {
println!(&quot;{:?}&quot;, arr);
}
fn main() {
let arr: [i32; 3] = [1, 2, 3];
display_array(arr);
let arr: [i32; 2] = [1, 2];
display_array(arr);
}
</code></pre>