Answers:
如果您需要许多可变变量,则声明和初始化它们会浪费大量空间,因为每个变量都需要mut关键字,并且您无法执行a = b = c = 0之类的操作。一种解决方案是声明一个可变数组
let mut a=[0;5];
每次使用它们时,您都要多花3个字节,而不是普通变量:
a[0]+=1;
但它通常仍然值得。
对相同的技巧使用元组通常是更好的选择:
let mut t=(1,4,"this", 0.5, 'c');
这样做的好处是与数组相比,每次使用都节省了一个字节:
t.0=2
它还使它们具有不同的类型。不利的一面是,它需要更多字符来初始化。
例如,当使用字符串格式化时print!()
,可以同时使用带数字和不带数字的格式化程序,以节省每个字节要格式化的一个字节:
最佳显示示例:
fn main(){
print!("{}{}{}. Yes, {0}{}{2}. All you other{1}{2}s are just imitating.",
"I'm",
" Slim",
" Shady",
" the real");
}
哪个输出:
I'm Slim Shady. Yes, I'm the real Shady. All you other Slim Shadys are just imitating.
因此,未编号的格式化程序将按顺序分配给项目,这使您可以跳过它们的索引。请注意,每个项目只能使用一个未编号的格式化程序进行格式化,此后它将用完。
考虑各种因素后,我认为这通常是检索线的最短方法。该行有一个换行符,可以通过修剪(.trim()
)删除它,或者如果不能通过切片来删除它。
let y=&mut"".into();std::io::stdin().read_line(y);
对于多行,lines
可以使用迭代器,然后迭代的行不会以换行符结尾。需要通行导入import BufRead
,lines
对于StdinLock<'_>
类型可用。
use std::io::*;let y=stdin();y.lock().lines()