< 返回版块

jgl666 发表于 2018-04-03 12:49

Tags:这里mut 放在参数stream前面什么意思?是强制把不可变变成可变吗,这和放在:后面有什么区别?

fn handle_connection(mut stream: TcpStream) { let mut buffer = [0; 512]; stream.read(&mut buffer).unwrap(); println!("Request: {}", String::from_utf8_lossy(&buffer[..])); }

评论区

写评论
Polar 2018-04-04 17:13

函数参数的mut,只是代表了在函数体内,这个变量需要可变,是一个声明,表示必须传入一个可变的变量,并不能改变传入变量的可变性。

@jgl666 谢谢 修饰变量可变性是不是传入的参数原来是不可变的 修改后这个变量的属性就是可变的了 像下面一样 不加mut修饰这个变量是不可修改的 fn test(mut x: String) { x.push('o'); println!("{}", x); } fn main() { let m = String::from("hello"); test(m); }

@Polar mut 是用来修饰变量可变性的,所以是放在变量前面 mut 放在冒号后面,也就是用来修饰类型的时候,只是用在可变引用&mut T和裸指针*mut T上,并不能直接放在类型前面

作者 jgl666 2018-04-03 15:39

谢谢 修饰变量可变性是不是传入的参数原来是不可变的 修改后这个变量的属性就是可变的了 像下面一样 不加mut修饰这个变量是不可修改的

fn test(mut x: String) { x.push('o'); println!("{}", x); }

fn main() { let m = String::from("hello"); test(m); }

@Polar mut 是用来修饰变量可变性的,所以是放在变量前面 mut 放在冒号后面,也就是用来修饰类型的时候,只是用在可变引用&mut T和裸指针*mut T上,并不能直接放在类型前面

Polar 2018-04-03 15:15

mut 是用来修饰变量可变性的,所以是放在变量前面
mut 放在冒号后面,也就是用来修饰类型的时候,只是用在可变引用&mut T和裸指针*mut T上,并不能直接放在类型前面

Polar 2018-04-03 15:14

mut 是用来修饰变量可变性的,所以是放在变量前面 mut 放在冒号后面,也就是用来修饰类型的时候,只是用在可变引用&mut T和裸指针*mut T上,并不能直接放在类型前面

1 共 4 条评论, 1 页