如何改善此代码?提示用户输入[Rust]

时间:2018-11-30 21:05:20

标签: optimization rust user-input

我正在通过仅在《书》的前4章之后进行编码来学习Rust。入门我仍然习惯于如何借用和共享工作以及如何在代码中利用它们。

该代码段应该提示用户输入IP地址,如果按Enter键,则返回环回地址。它工作正常,但是我很好奇如何以任何方式改进它,因为我绝对知道可以做到。谢谢!

fn prompt_host() -> String {
   let mut input_text = String::new();
   println!(" input host IP, press enter for loopback:");
   io::stdin()
     .read_line(&mut input_text)
     .expect(" ERROR: failed to read from stdin");
   let len = input_text.len();
   input_text.truncate(len - 1);
   if input_text == "" {
      return String::from("127.0.0.1");
   }
   return input_text as String;
}

1 个答案:

答案 0 :(得分:0)

一些提示:

  • 我想我会返回与std::net::IpAddr相关的内容,而不是String(如果有您需要的类型,我会使用它)。

  • std::net::IpAddr实现FromStr,因此您可以使用input_text.parse()并获得Result<IpAddr, Err>(因为从字符串转换可能会失败)。

    < / li>
  • 我会使用trim来消除空格。

  • 我将使用is_empty测试字符串是否为空。 -甚至只需使用parse即可解决这种情况。

  • (至少)两个地方可能会失败:read_lineparse,所以我考虑考虑将Option<IpAddr>甚至Result<IpAddr, ErrorType>返回适当的ErrorType