度の度数がf64
で、String
に変換する必要があります。最初に私はこのように、Display
の実装について考えた:その後値を複数の種類の文字列にフォーマットする慣用的な方法は何ですか?
struct Latitude(f64);
impl fmt::Display for Latitude {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "{} {}", if self.0 > 0. { "N" } else { "S" }, self.0)
}
}
fn main() {
let lat: f64 = 45.;
println!("{}", Latitude(lat));
}
、私は追加の要件があります。私は2つの表現のいずれかに変換する必要があります。
N 70.152351
N 70° 09' 08"
追加のフラグもあります。これを実装するための最も簡単な方法はなり
- --.------
- --° -' -"
:それはfalse
あるとき、私のようなものが必要
fn format_lat(degree: f64, use_min_sec_variant: bool, is_valid: bool) -> String;
しかし、私はしないでくださいRust標準ライブラリの任意のフリー関数を参照してください。
多分struct Latitude(f64)
を使用し、to_string
メソッドを実装する必要がありますか?あるいは、私は他の特性を実装すべきでしょうか?
[標準ライブラリには無料の機能があります](https://doc.rust-lang.org/std/cmp/#functions)があります。あなたは非常に遠く見たことがあってはいけません。 – Shepmaster
@Shepmaster多分彼は 'libc :: free()'を望んでいたでしょう:P –