rapport: Cargo clippy 77 warnings
cargo clippy
aide a coder bien et il a des trucs a dire:
Checking meteo v0.1.0 (/home/darnuria/coursRustP8/2021_l2_rust/projets/CésarPICHON_meteotui)
warning: using `print!()` with a format string that ends in a single newline
--> src/main.rs:32:25
|
32 | print!("Code postal incorrect.\n");
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: `#[warn(clippy::print_with_newline)]` on by default
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_with_newline
help: use `println!` instead
|
32 - print!("Code postal incorrect.\n");
32 + println!("Code postal incorrect.");
|
warning: this is a decimal constant
--> src/ui.rs:104:23
|
104 | code: 06000,
| ^^^^^
|
= note: `#[warn(clippy::zero_prefixed_literal)]` on by default
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal
help: if you mean to use a decimal constant, remove the `0` to avoid confusion
|
104 | code: 6000,
| ~~~~
help: if you mean to use an octal constant, use `0o`
|
104 | code: 0o6000,
| ~~~~~~
warning: redundant field names in struct initialization
--> src/ui.rs:278:25
|
278 | previsions_france: previsions_france,
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `previsions_france`
|
= note: `#[warn(clippy::redundant_field_names)]` on by default
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names
warning: redundant field names in struct initialization
--> src/ui.rs:280:25
|
280 | prevision: prevision,
| ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `prevision`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names
warning: this `else { if .. }` block can be collapsed
--> src/main.rs:25:16
|
25 | } else {
| ________________^
26 | | if command.len() == 5 {
27 | | match command.parse::<i32>() {
28 | | Ok(code) => {
... |
38 | | }
39 | | }
| |_________^
|
= note: `#[warn(clippy::collapsible_else_if)]` on by default
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_else_if
help: collapse nested if block
|
25 ~ } else if command.len() == 5 {
26 + match command.parse::<i32>() {
27 + Ok(code) => {
28 + ui::init(ui::MeteoTabs::TabPrevision, Some(code), &METEO_CLIENT);
29 + }
30 + Err(_) => {
...
warning: value assigned to `temp` is never read
--> src/ui.rs:1230:25
|
1230 | let mut temp = 0.0;
| ^^^^
|
= note: `#[warn(unused_assignments)]` on by default
= help: maybe it is overwritten before being read?
warning: unneeded `return` statement
--> src/client/http.rs:39:13
|
39 | return content;
| ^^^^^^^^^^^^^^^ help: remove `return`: `content`
|
= note: `#[warn(clippy::needless_return)]` on by default
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
warning: unneeded `return` statement
--> src/client/http.rs:42:13
|
42 | return String::from("");
| ^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return`: `String::from("")`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
warning: length comparison to zero
--> src/client/http.rs:16:8
|
16 | if arguments.len() > 0 {
| ^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!arguments.is_empty()`
|
= note: `#[warn(clippy::len_zero)]` on by default
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero
warning: the variable `c` is used as a loop counter
--> src/client/http.rs:19:9
|
19 | for i in arguments {
| ^^^^^^^^^^^^^^^^^^ help: consider using: `for (c, i) in arguments.into_iter().enumerate()`
|
= note: `#[warn(clippy::explicit_counter_loop)]` on by default
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop
warning: unneeded `return` statement
--> src/client.rs:31:9
|
31 | / return http::request(
32 | | String::from(self.base_url.clone()),
33 | | String::from("places"),
34 | | arguments);
| |_______________________^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
help: remove `return`
|
31 ~ http::request(
32 + String::from(self.base_url.clone()),
33 + String::from("places"),
34 + arguments)
|
warning: useless conversion to the same type: `std::string::String`
--> src/client.rs:26:32
|
26 | String::from("q"), String::from(code_postal.to_string())
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `code_postal.to_string()`
|
= note: `#[warn(clippy::useless_conversion)]` on by default
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion
error: using `clone` on a double-reference; this will copy the reference of type `&str` instead of cloning the inner type
--> src/client.rs:29:49
|
29 | String::from("token"), String::from(self.token.clone())
| ^^^^^^^^^^^^^^^^^^
|
= note: `#[deny(clippy::clone_double_ref)]` on by default
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref
help: try dereferencing it
|
29 | String::from("token"), String::from(&(*self.token).clone())
| ~~~~~~~~~~~~~~~~~~~~~~
help: or try being explicit if you are sure, that you want to clone a reference
|
29 | String::from("token"), String::from(<&str>::clone(self.token))
| ~~~~~~~~~~~~~~~~~~~~~~~~~
error: using `clone` on a double-reference; this will copy the reference of type `&str` instead of cloning the inner type
--> src/client.rs:32:26
|
32 | String::from(self.base_url.clone()),
| ^^^^^^^^^^^^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref
help: try dereferencing it
|
32 | String::from(&(*self.base_url).clone()),
| ~~~~~~~~~~~~~~~~~~~~~~~~~
help: or try being explicit if you are sure, that you want to clone a reference
|
32 | String::from(<&str>::clone(self.base_url)),
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
warning: unneeded `return` statement
--> src/client.rs:60:25
|
60 | / return Ok(http::request(
61 | | String::from(self.base_url.clone()),
62 | | String::from("forecast"),
63 | | arguments));
| |________________________________________^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
help: remove `return`
|
60 ~ Ok(http::request(
61 + String::from(self.base_url.clone()),
62 + String::from("forecast"),
63 + arguments))
|
warning: unneeded `return` statement
--> src/client.rs:66:25
|
66 | return Err(MeteoFranceAPIErreurs::BadForecastLocation)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return`: `Err(MeteoFranceAPIErreurs::BadForecastLocation)`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
warning: unneeded `return` statement
--> src/client.rs:71:17
|
71 | return Err(MeteoFranceAPIErreurs::BadForecastLocation)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return`: `Err(MeteoFranceAPIErreurs::BadForecastLocation)`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
error: using `clone` on a double-reference; this will copy the reference of type `&str` instead of cloning the inner type
--> src/client.rs:58:65
|
58 | ... String::from("token"), String::from(self.token.clone())
| ^^^^^^^^^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref
help: try dereferencing it
|
58 | String::from("token"), String::from(&(*self.token).clone())
| ~~~~~~~~~~~~~~~~~~~~~~
help: or try being explicit if you are sure, that you want to clone a reference
|
58 | String::from("token"), String::from(<&str>::clone(self.token))
| ~~~~~~~~~~~~~~~~~~~~~~~~~
error: using `clone` on a double-reference; this will copy the reference of type `&str` instead of cloning the inner type
--> src/client.rs:61:42
|
61 | ... String::from(self.base_url.clone()),
| ^^^^^^^^^^^^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref
help: try dereferencing it
|
61 | String::from(&(*self.base_url).clone()),
| ~~~~~~~~~~~~~~~~~~~~~~~~~
help: or try being explicit if you are sure, that you want to clone a reference
|
61 | String::from(<&str>::clone(self.base_url)),
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
warning: unneeded `return` statement
--> src/client.rs:84:17
|
84 | return Err(MeteoFranceAPIErreurs::BadPlaceRequest)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return`: `Err(MeteoFranceAPIErreurs::BadPlaceRequest)`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
warning: unneeded `return` statement
--> src/storage.rs:11:13
|
11 | return Ok(c);
| ^^^^^^^^^^^^^ help: remove `return`: `Ok(c)`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
warning: unneeded `return` statement
--> src/storage.rs:22:18
|
22 | Ok(e) => return Ok(e),
| ^^^^^^^^^^^^ help: remove `return`: `Ok(e)`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
warning: unneeded `return` statement
--> src/storage.rs:23:19
|
23 | Err(_) => return Err(MeteoFranceAPIErreurs::BadPlaceRequest)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return`: `Err(MeteoFranceAPIErreurs::BadPlaceRequest)`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
warning: unneeded `return` statement
--> src/data.rs:19:9
|
19 | / return Place {
20 | | insee: Some(String::from("75001")),
21 | | name: Some(String::from("Paris 01")),
22 | | lat: Some(48.8592),
... |
27 | | postCode: Some(String::from("75001"))
28 | | }
| |_________^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
help: remove `return`
|
19 ~ Place {
20 + insee: Some(String::from("75001")),
21 + name: Some(String::from("Paris 01")),
22 + lat: Some(48.8592),
23 + lon: Some(2.3417),
24 + country: Some(String::from("FR")),
...
warning: unneeded `return` statement
--> src/data.rs:35:9
|
35 | / return Place {
36 | | insee: None,
37 | | name: None,
38 | | lat: None,
... |
43 | | postCode: None
44 | | }
| |_________^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
help: remove `return`
|
35 ~ Place {
36 + insee: None,
37 + name: None,
38 + lat: None,
39 + lon: None,
40 + country: None,
...
warning: unneeded `return` statement
--> src/data.rs:59:9
|
59 | / return Prevision {
60 | | update_time: None,
61 | | typee: None,
62 | | geometry: None,
63 | | properties: None,
64 | | };
| |__________^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
help: remove `return`
|
59 ~ Prevision {
60 + update_time: None,
61 + typee: None,
62 + geometry: None,
63 + properties: None,
64 + }
|
warning: unneeded `return` statement
--> src/data.rs:76:9
|
76 | / return Geometry {
77 | | typee: None,
78 | | coordinates: None
79 | | };
| |__________^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
help: remove `return`
|
76 ~ Geometry {
77 + typee: None,
78 + coordinates: None
79 + }
|
warning: unneeded `return` statement
--> src/data.rs:100:9
|
100 | / return Properties {
101 | | altitude: None,
102 | | name: None,
103 | | country: None,
... |
111 | | probability_forecast: None
112 | | };
| |__________^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
help: remove `return`
|
100 ~ Properties {
101 + altitude: None,
102 + name: None,
103 + country: None,
104 + french_department: None,
105 + rain_product_available: None,
...
warning: unneeded `return` statement
--> src/data.rs:134:9
|
134 | / return DailyForecast {
135 | | time: None,
136 | | t_min: None,
137 | | t_max: None,
... |
146 | | sunset_time: None
147 | | };
| |__________^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
help: remove `return`
|
134 ~ DailyForecast {
135 + time: None,
136 + t_min: None,
137 + t_max: None,
138 + t_sea: None,
139 + relative_humidity_min: None,
...
warning: unneeded `return` statement
--> src/data.rs:181:9
|
181 | / return Forecast {
182 | | time: None,
183 | | t: None,
184 | | t_windchill: None,
... |
205 | | weather_description: None,
206 | | };
| |__________^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
help: remove `return`
|
181 ~ Forecast {
182 + time: None,
183 + t: None,
184 + t_windchill: None,
185 + relative_humidity: None,
186 + p_sea: None,
...
warning: unneeded `return` statement
--> src/data.rs:223:9
|
223 | / return ProbabilityForecast {
224 | | time: None,
225 | | rain_hazard_3h: None,
226 | | rain_hazard_6h: None,
... |
230 | | storm_hazard: None
231 | | };
| |__________^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
help: remove `return`
|
223 ~ ProbabilityForecast {
224 + time: None,
225 + rain_hazard_3h: None,
226 + rain_hazard_6h: None,
227 + snow_hazard_3h: None,
228 + snow_hazard_6h: None,
...
warning: unneeded `return` statement
--> src/parser.rs:38:29
|
38 | ... return Ok(p);
| ^^^^^^^^^^^^^ help: remove `return`: `Ok(p)`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
warning: unneeded `return` statement
--> src/parser.rs:40:29
|
40 | ... return Err(ParserErreurs::StringParseErreur)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return`: `Err(ParserErreurs::StringParseErreur)`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
warning: unneeded `return` statement
--> src/parser.rs:44:25
|
44 | return Err(ParserErreurs::StringParseErreur)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return`: `Err(ParserErreurs::StringParseErreur)`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
warning: unneeded `return` statement
--> src/parser.rs:48:17
|
48 | return Err(ParserErreurs::StringParseErreur)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return`: `Err(ParserErreurs::StringParseErreur)`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
warning: unneeded `return` statement
--> src/parser.rs:51:19
|
51 | Err(_) => return Err(ParserErreurs::StringParseErreur)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return`: `Err(ParserErreurs::StringParseErreur)`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
warning: length comparison to zero
--> src/parser.rs:27:28
|
27 | if p.len() > 0 {
| ^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!p.is_empty()`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero
warning: unneeded `return` statement
--> src/parser.rs:244:13
|
244 | return Ok(prevision);
| ^^^^^^^^^^^^^^^^^^^^^ help: remove `return`: `Ok(prevision)`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
warning: unneeded `return` statement
--> src/parser.rs:247:13
|
247 | return Err(ParserErreurs::StringParseErreur)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return`: `Err(ParserErreurs::StringParseErreur)`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let`
--> src/parser.rs:71:21
|
71 | / match json_previsions["geometry"]["coordinates"].as_array() {
72 | | Some(v) => {
73 | | for c in v {
74 | | let coord = value_to_f64(c.to_owned());
... |
81 | | None => {},
82 | | }
| |_____________________^
|
= note: `#[warn(clippy::single_match)]` on by default
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match
help: try this
|
71 ~ if let Some(v) = json_previsions["geometry"]["coordinates"].as_array() {
72 + for c in v {
73 + let coord = value_to_f64(c.to_owned());
74 + match coord {
75 + Some(f) => coordinates.push(f),
76 + None => {},
...
warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let`
--> src/parser.rs:75:33
|
75 | / ... match coord {
76 | | ... Some(f) => coordinates.push(f),
77 | | ... None => {},
78 | | ... }
| |_______________________^ help: try this: `if let Some(f) = coord { coordinates.push(f) }`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match
warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let`
--> src/parser.rs:114:21
|
114 | / match json_previsions["properties"]["daily_forecast"].as_array() {
115 | | Some(daily) => {
116 | | for d in daily {
117 | | let item = d.to_owned();
... |
136 | | None => {}
137 | | }
| |_____________________^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match
help: try this
|
114 ~ if let Some(daily) = json_previsions["properties"]["daily_forecast"].as_array() {
115 + for d in daily {
116 + let item = d.to_owned();
117 + if item.is_object() {
118 + let mut s = DailyForecast::new();
119 + s.time = value_to_string(item["time"].to_owned());
...
warning: length comparison to zero
--> src/parser.rs:139:24
|
139 | if daily_forecast.len() > 0 {
| ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!daily_forecast.is_empty()`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero
warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let`
--> src/parser.rs:154:21
|
154 | / match json_previsions["properties"]["forecast"].as_array() {
155 | | Some(fc) => {
156 | | for d in fc {
157 | | let item = d.to_owned();
... |
190 | | None => {}
191 | | }
| |_____________________^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match
help: try this
|
154 ~ if let Some(fc) = json_previsions["properties"]["forecast"].as_array() {
155 + for d in fc {
156 + let item = d.to_owned();
157 + if item.is_object() {
158 + let mut s = Forecast::new();
159 + s.time = value_to_string(item["time"].to_owned());
...
warning: length comparison to zero
--> src/parser.rs:193:24
|
193 | if forecast.len() > 0 {
| ^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!forecast.is_empty()`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero
warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let`
--> src/parser.rs:206:21
|
206 | / match json_previsions["properties"]["probability_forecast"].as_array() {
207 | | Some(fc) => {
208 | | for d in fc {
209 | | let item = d.to_owned();
... |
223 | | None => {}
224 | | }
| |_____________________^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match
help: try this
|
206 ~ if let Some(fc) = json_previsions["properties"]["probability_forecast"].as_array() {
207 + for d in fc {
208 + let item = d.to_owned();
209 + if item.is_object() {
210 + let mut s = ProbabilityForecast::new();
211 + s.time = value_to_string(item["time"].to_owned());
...
warning: length comparison to zero
--> src/parser.rs:226:24
|
226 | if probability.len() > 0 {
| ^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!probability.is_empty()`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero
warning: unneeded `return` statement
--> src/util.rs:7:13
|
7 | return None
| ^^^^^^^^^^^ help: remove `return`: `None`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
warning: unneeded `return` statement
--> src/util.rs:13:13
|
13 | return Some(val.to_string().parse::<f64>().unwrap_or(0.0));
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return`: `Some(val.to_string().parse::<f64>().unwrap_or(0.0))`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
warning: unneeded `return` statement
--> src/util.rs:15:13
|
15 | return None
| ^^^^^^^^^^^ help: remove `return`: `None`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
warning: unneeded `return` statement
--> src/util.rs:21:13
|
21 | return Some(val.to_string().parse::<i64>().unwrap_or(0));
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return`: `Some(val.to_string().parse::<i64>().unwrap_or(0))`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
warning: unneeded `return` statement
--> src/util.rs:23:13
|
23 | return None
| ^^^^^^^^^^^ help: remove `return`: `None`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
warning: unneeded `return` statement
--> src/util.rs:36:22
|
36 | Ok(d) => return d,
| ^^^^^^^^ help: remove `return`: `d`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
warning: redundant clone
--> src/ui.rs:281:53
|
281 | default_place: default_place.clone(),
| ^^^^^^^^ help: remove this
|
= note: `#[warn(clippy::redundant_clone)]` on by default
note: this value is dropped without further use
--> src/ui.rs:281:40
|
281 | default_place: default_place.clone(),
| ^^^^^^^^^^^^^
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone
warning: unneeded `return` statement
--> src/ui.rs:271:17
|
271 | / return Ok(
272 | | MeteoApp {
273 | | tab: MeteoTabs::TabCarte,
274 | | mode: Mode::ReadMode,
... |
284 | | }
285 | | )
| |_________________^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
help: remove `return`
|
271 ~ Ok(
272 + MeteoApp {
273 + tab: MeteoTabs::TabCarte,
274 + mode: Mode::ReadMode,
275 + search: String::new(),
276 + search_error: false,
...
warning: unneeded `return` statement
--> src/ui.rs:288:17
|
288 | return Err(MeteoAppErreurs::DefaultPlaceErreur)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return`: `Err(MeteoAppErreurs::DefaultPlaceErreur)`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let`
--> src/ui.rs:301:9
|
301 | / match self.mode {
302 | | Mode::ReadMode => {
303 | | self.mode = Mode::InputMode;
304 | | self.search_error = false;
305 | | },
306 | | _ => {}
307 | | }
| |_________^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match
help: try this
|
301 ~ if let Mode::ReadMode = self.mode {
302 + self.mode = Mode::InputMode;
303 + self.search_error = false;
304 + }
|
warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let`
--> src/ui.rs:309:9
|
309 | / match self.tab {
310 | | MeteoTabs::TabCarte => {
311 | | self.tab = MeteoTabs::TabCarte;
312 | | },
313 | | _ => {}
314 | | }
| |_________^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match
help: try this
|
309 ~ if let MeteoTabs::TabCarte = self.tab {
310 + self.tab = MeteoTabs::TabCarte;
311 + }
|
warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let`
--> src/ui.rs:330:9
|
330 | / match code {
331 | | Ok(c) => {
332 | | client.changer_default_ville(c);
333 | | self.default_place = self.actual_place.clone();
334 | | },
335 | | Err(_) => {}
336 | | }
| |_________^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match
help: try this
|
330 ~ if let Ok(c) = code {
331 + client.changer_default_ville(c);
332 + self.default_place = self.actual_place.clone();
333 + }
|
warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let`
--> src/ui.rs:340:9
|
340 | / match self.mode {
341 | | Mode::InputMode => {
342 | | self.mode = Mode::ReadMode;
343 | | let code_postal = self.search.parse::<i32>();
... |
378 | | _ => {}
379 | | }
| |_________^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match
help: try this
|
340 ~ if let Mode::InputMode = self.mode {
341 + self.mode = Mode::ReadMode;
342 + let code_postal = self.search.parse::<i32>();
343 + match code_postal {
344 + Ok(c) => {
345 + let new_prevision = client.get_place(c);
...
warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let`
--> src/ui.rs:413:9
|
413 | / match self.tab {
414 | | MeteoTabs::TabCarte => {
415 | | let i: usize = self.previsions_france_selected.try_into().unwrap();
416 | | let ville = self.previsions_france[i].clone();
... |
420 | | _ => {}
421 | | }
| |_________^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match
help: try this
|
413 ~ if let MeteoTabs::TabCarte = self.tab {
414 + let i: usize = self.previsions_france_selected.try_into().unwrap();
415 + let ville = self.previsions_france[i].clone();
416 +
417 + self.previsions_france_selected = ville.left_to;
418 + }
|
warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let`
--> src/ui.rs:425:9
|
425 | / match self.tab {
426 | | MeteoTabs::TabCarte => {
427 | | let i: usize = self.previsions_france_selected.try_into().unwrap();
428 | | let ville = self.previsions_france[i].clone();
... |
432 | | _ => {}
433 | | }
| |_________^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match
help: try this
|
425 ~ if let MeteoTabs::TabCarte = self.tab {
426 + let i: usize = self.previsions_france_selected.try_into().unwrap();
427 + let ville = self.previsions_france[i].clone();
428 +
429 + self.previsions_france_selected = ville.right_to;
430 + }
|
warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let`
--> src/ui.rs:437:9
|
437 | / match self.tab {
438 | | MeteoTabs::TabCarte => {
439 | | let i: usize = self.previsions_france_selected.try_into().unwrap();
440 | | let ville = self.previsions_france[i].clone();
... |
444 | | _ => {}
445 | | }
| |_________^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match
help: try this
|
437 ~ if let MeteoTabs::TabCarte = self.tab {
438 + let i: usize = self.previsions_france_selected.try_into().unwrap();
439 + let ville = self.previsions_france[i].clone();
440 +
441 + self.previsions_france_selected = ville.up_to;
442 + }
|
warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let`
--> src/ui.rs:449:9
|
449 | / match self.tab {
450 | | MeteoTabs::TabCarte => {
451 | | let i: usize = self.previsions_france_selected.try_into().unwrap();
452 | | let ville = self.previsions_france[i].clone();
... |
456 | | _ => {}
457 | | }
| |_________^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match
help: try this
|
449 ~ if let MeteoTabs::TabCarte = self.tab {
450 + let i: usize = self.previsions_france_selected.try_into().unwrap();
451 + let ville = self.previsions_france[i].clone();
452 +
453 + self.previsions_france_selected = ville.down_to;
454 + }
|
warning: this match could be replaced by its body itself
--> src/ui.rs:632:13
|
632 | / match key.code {
633 | | _ => {
634 | | return;
635 | | }
636 | | }
| |_____________^
|
= note: `#[warn(clippy::match_single_binding)]` on by default
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_single_binding
help: consider using the match body instead
|
632 ~ {
633 + return;
634 + }
|
warning: this call to `as_ref` does nothing
--> src/ui.rs:688:31
|
688 | false => "Recherche (code postal)".as_ref(),
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `"Recherche (code postal)"`
|
= note: `#[warn(clippy::useless_asref)]` on by default
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_asref
warning: redundant clone
--> src/ui.rs:835:53
|
835 | let today_prev = prev.properties.to_owned()
| ^^^^^^^^^^^ help: remove this
|
note: this value is dropped without further use
--> src/ui.rs:835:38
|
835 | let today_prev = prev.properties.to_owned()
| ^^^^^^^^^^^^^^^
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone
warning: redundant clone
--> src/ui.rs:838:25
|
838 | .to_owned()
| ^^^^^^^^^^^ help: remove this
|
note: this value is dropped without further use
--> src/ui.rs:835:38
|
835 | let today_prev = prev.properties.to_owned()
| ______________________________________^
836 | | .unwrap()
837 | | .daily_forecast
838 | | .to_owned()
| |________________________^
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone
warning: the variable `i` is used as a loop counter
--> src/ui.rs:798:17
|
798 | for p in previsions {
| ^^^^^^^^^^^^^^^^^^^ help: consider using: `for (i, p) in previsions.into_iter().enumerate()`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop
warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let`
--> src/ui.rs:833:13
|
833 | / match prev {
834 | | Some(prev) => {
835 | | let today_prev = prev.properties.to_owned()
836 | | .unwrap()
... |
928 | | None => {}
929 | | }
| |_____________^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match
help: try this
|
833 ~ if let Some(prev) = prev {
834 + let today_prev = prev.properties.to_owned()
835 + .unwrap()
836 + .daily_forecast
837 + .to_owned()
838 + .unwrap()[0].to_owned();
...
warning: use of `unwrap_or` followed by a call to `new`
--> src/ui.rs:885:42
|
885 | ... Text::styled(today_prev
| ____________________________________^
886 | | ... .daily_weather_description.to_owned()
887 | | ... .unwrap_or(String::new()),
| |___________________________________________________^
|
= note: `#[warn(clippy::or_fun_call)]` on by default
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call
help: try this
|
885 ~ Text::styled(today_prev
886 ~ .daily_weather_description.to_owned().unwrap_or_default(),
|
warning: redundant clone
--> src/ui.rs:1024:17
|
1024 | .to_owned()
| ^^^^^^^^^^^ help: remove this
|
note: this value is dropped without further use
--> src/ui.rs:1021:30
|
1021 | let today_prev = prev.properties.to_owned()
| ______________________________^
1022 | | .unwrap()
1023 | | .daily_forecast
1024 | | .to_owned()
| |________________^
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone
warning: redundant clone
--> src/ui.rs:1225:81
|
1225 | let mut daily_forecast_vec = prev.properties.unwrap().daily_forecast.to_owned().unwrap();
| ^^^^^^^^^^^ help: remove this
|
note: this value is dropped without further use
--> src/ui.rs:1225:42
|
1225 | let mut daily_forecast_vec = prev.properties.unwrap().daily_forecast.to_owned().unwrap();
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone
warning: use of `unwrap_or` followed by a function call
--> src/ui.rs:981:74
|
981 | let mut nom_ville = prev.properties.to_owned().unwrap().name.unwrap_or(String::from("Ville"));
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| String::from("Ville"))`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call
warning: use of `unwrap_or` followed by a call to `new`
--> src/ui.rs:1071:34
|
1071 | Text::styled(today_prev
| __________________________________^
1072 | | .daily_weather_description.to_owned()
1073 | | .unwrap_or(String::new()),
| |_________________________________________________^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call
help: try this
|
1071 ~ Text::styled(today_prev
1072 ~ .daily_weather_description.to_owned().unwrap_or_default(),
|
warning: use of `unwrap_or` followed by a call to `new`
--> src/ui.rs:1156:21
|
1156 | / today_prev
1157 | | .time.to_owned()
1158 | | .unwrap_or(String::new()));
| |_____________________________________________^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call
help: try this
|
1156 ~ today_prev
1157 ~ .time.to_owned().unwrap_or_default());
|
warning: use of `unwrap_or` followed by a call to `new`
--> src/ui.rs:1179:38
|
1179 | Text::styled(today_prev
| ______________________________________^
1180 | | .daily_weather_description.to_owned()
1181 | | .unwrap_or(String::new()),
| |_____________________________________________________^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call
help: try this
|
1179 ~ Text::styled(today_prev
1180 ~ .daily_weather_description.to_owned().unwrap_or_default(),
|
warning: this call to `as_ref` does nothing
--> src/ui.rs:1270:49
|
1270 | let block_no_place = Paragraph::new(message.as_ref())
| ^^^^^^^^^^^^^^^^ help: try this: `message`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_asref
warning: unneeded `return` statement
--> src/ascii_icons.rs:112:5
|
112 | return get_icon_coords(AsciiIconType::Nuageux)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return`: `get_icon_coords(AsciiIconType::Nuageux)`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
warning: calls to `push` immediately after creation
--> src/ascii_icons.rs:15:5
|
15 | / let mut trie = vec![];
16 | | trie.push((String::from("p1j"), AsciiIconType::Ensoleille));
17 | | trie.push((String::from("p1n"), AsciiIconType::Ensoleille));
18 | | trie.push((String::from("p1bisj"), AsciiIconType::Ensoleille));
... |
103 | | trie.push((String::from("p28bisj"), AsciiIconType::Orages));
104 | | trie.push((String::from("p28bisn"), AsciiIconType::Orages));
| |________________________________________________________________^ help: consider using the `vec![]` macro: `let mut trie = vec![..];`
|
= note: `#[warn(clippy::vec_init_then_push)]` on by default
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#vec_init_then_push
warning: unneeded `return` statement
--> src/ascii_icons.rs:120:5
|
120 | / return match which {
121 | | AsciiIconType::Ensoleille => {
122 | | vec![(36.500000953674316,69.00000095367432),(32.967681884765625,69.00000095367432),(29.435362815856934,69.00000095367432),(25...
123 | | },
... |
147 | | }
148 | | }
| |_____^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
help: remove `return`
|
120 ~ match which {
121 + AsciiIconType::Ensoleille => {
122 + vec![(36.500000953674316,69.00000095367432),(32.967681884765625,69.00000095367432),(29.435362815856934,69.00000095367432),(25.903141498565674,69.00790214538574),(22.926864624023438,70.64181327819824),(22.031662464141846,73.94896030426025),(24.095194339752197,76.52324676513672),(27.55488872528076,77.00000286102295),(31.087207794189453,77.00000286102295),(34.61952447891235,77.00000286102295),(38.10265779495239,76.65566921234131),(39.90992546081543,73.76866817474365),(39.337050914764404,70.38419246673584),(37.00000047683716,104.49999809265137),(36.02969408035278,107.92346954345703),(37.68181085586548,111.09079360961914),(41.14724636077881,111.9301700592041),(44.07945156097412,109.87917900085449),(46.5633487701416,107.21785545349121),(49.047250747680664,104.55653190612793),(51.137261390686035,101.6302490234375),(51.234498023986816,98.07191848754883),(48.34999084472656,96.10908508300781),(44.98737812042236,97.05229759216309),(42.32264518737793,99.53219413757324),(39.66132402420044,102.0160961151123),(72.5,108.50000381469727),(70.99999904632568,111.59531593322754),(70.99999904632568,115.13402938842773),(70.99999904632568,118.67274284362793),(71.01335048675537,122.21121788024902),(72.73759841918945,125.14686584472656),(76.05576515197754,125.81422805786133),(78.50669384002686,123.44280242919922),(79.00000095367432,119.98017311096191),(79.00000095367432,116.44145965576172),(79.00000095367432,112.90275573730469),(78.6626386642456,109.41162109375),(75.77791690826416,107.59221076965332),(50.0,48.499999046325684),(50.998759269714355,45.178561210632324),(49.59981441497803,42.099809646606445),(47.115888595581055,39.61588382720947),(44.6319580078125,37.13195562362671),(41.97847843170166,34.86431360244751),(38.57333183288574,34.629433155059814),(36.29270315170288,37.053489685058594),(36.29258632659912,40.491604804992676),(38.66229057312012,43.05147171020508),(41.23034477233887,45.44832229614258),(43.79839897155762,47.84517288208008),(46.86572074890137,49.43767070770264),(100.0,96.49999618530273),(99.00047302246094,99.82771873474121),(100.33218383789062,102.85591125488281),(102.73331642150879,105.42856216430664),(105.13445854187012,108.0012035369873),(107.70468711853027,110.34577369689941),(111.1106014251709,110.94921112060547),(113.58169555664062,108.76715660095215),(113.82588386535645,105.32488822937012),(111.5803050994873,102.67494201660156),(109.00765419006348,100.2738094329834),(106.43501281738281,97.87266731262207),(103.43940734863281,96.1317253112793),(78.00000190734863,37.00000047683716),(79.00000095367432,33.66345405578613),(79.00000095367432,30.13554573059082),(79.00000095367432,26.607637405395508),(78.97115707397461,23.080546855926514),(76.93602561950684,20.49034357070923),(73.49308967590332,20.126755237579346),(71.22852802276611,22.583186626434326),(70.99999904632568,26.088414192199707),(70.99999904632568,29.61632251739502),(70.99999904632568,33.14422845840454),(71.61254405975342,36.547768115997314),(74.74069118499756,37.98910617828369),(128.00000190734863,73.49999904632568),(126.41101837158203,70.4555606842041),(123.04903984069824,69.49999809265137),(119.50617790222168,69.49999809265137),(115.96332550048828,69.49999809265137),(112.4207592010498,69.51818943023682),(109.95757102966309,71.6397476196289),(109.65203285217285,75.10107517242432),(112.22393035888672,77.26705074310303),(115.73999404907227,77.5),(119.28285598754883,77.5),(122.82571792602539,77.5),(126.07914924621582,76.39132976531982),(111.99999809265137,40.999999046325684),(112.9976749420166,37.60364532470703),(111.40718460083008,34.59938049316406),(107.96908378601074,34.00784969329834),(105.0322151184082,35.9677791595459),(102.49530792236328,38.50468873977661),(99.9583911895752,41.041598320007324),(98.16757202148438,44.06559467315674),(98.20051193237305,47.619967460632324),(101.1845588684082,49.39915657043457),(104.6217155456543,48.83255958557129),(107.10404396057129,46.24566078186035),(109.55202102661133,43.62282752990723),(101.00000381469727,73.00000190734863),(100.7830810546875,69.45647239685059),(100.09769439697266,65.97375869750977),(98.90373229980469,62.63175010681152),(97.19531059265137,59.52132225036621),(95.10013580322266,56.654911041259766),(92.67077445983887,54.06625270843506),(89.93390083312988,51.80492401123047),(86.94869995117188,49.88329887390137),(83.71091842651367,48.430771827697754),(80.28702735900879,47.496070861816406),(76.76499843597412,47.05250263214111),(73.21465015411377,47.05370903015137),(69.69296932220459,47.49999523162842),(66.26987934112549,48.4376335144043),(63.03344249725342,49.893126487731934),(60.04961967468262,51.81693077087402),(57.314348220825195,54.08020496368408),(54.88687515258789,56.670637130737305),(52.793588638305664,59.53842639923096),(51.08792781829834,62.65036106109619),(49.896912574768066,65.99343776702881),(49.21438694000244,69.47671413421631),(49.00003910064697,73.02040100097656),(49.219441413879395,76.56378269195557),(49.907684326171875,80.04591941833496),(51.10461235046387,83.38686943054199),(52.815799713134766,86.49578094482422),(54.91286754608154,89.36080932617188),(57.344093322753906,91.94772720336914),(60.082573890686035,94.20710563659668),(63.069210052490234,96.12648963928223),(66.30831241607666,97.57603645324707),(69.73299503326416,98.50786209106445),(73.25537204742432,98.9487075805664),(76.8059253692627,98.95078659057617),(80.32600402832031,98.49721908569336),(83.73415946960449,97.50718116760254),(86.99056625366211,96.09068870544434),(90.07389068603516,94.33172225952148),(92.85275459289551,92.1247673034668),(95.23540496826172,89.49636459350586),(97.16504096984863,86.51671409606934),(98.81440162658691,83.37080001831055),(99.92212295532227,80.00112533569336),(100.69483757019043,76.53544425964355)]
123 + },
124 + AsciiIconType::Nuageux => {
125 + vec![(86.00000381469727,110.50000190734863),(85.0,113.80317687988281),(85.0,117.34555244445801),(85.0,120.88791847229004),(85.01398086547852,124.43007469177246),(87.0637035369873,127.00944900512695),(90.52060127258301,127.36978530883789),(92.73990631103516,124.85544204711914),(93.0000114440918,121.34439468383789),(93.0000114440918,117.8020191192627),(93.0000114440918,114.25965309143066),(92.3213005065918,110.86363792419434),(89.18238639831543,109.50258255004883),(50.999999046325684,106.49999618530273),(50.00092029571533,109.78910446166992),(51.42538070678711,112.80583381652832),(54.81411933898926,113.47997665405273),(57.68392562866211,111.70208930969238),(59.96471881866455,109.04116630554199),(60.94766616821289,105.92104911804199),(59.475440979003906,102.77963638305664),(56.233625411987305,101.92252159118652),(53.47815990447998,104.0218448638916),(113.00000190734863,98.99999618530273),(112.01750755310059,102.33013153076172),(113.51855278015137,105.48398017883301),(116.12837791442871,107.9198169708252),(118.73821258544922,110.35566329956055),(121.54579162597656,112.50164985656738),(125.02838134765625,112.86775588989258),(127.25155830383301,110.32176971435547),(127.1254825592041,106.83756828308105),(124.7177791595459,104.2177677154541),(122.19344139099121,101.69342994689941),(119.66911315917969,99.16910171508789),(116.3605785369873,98.00017356872559),(115.50000190734863,74.49999809265137),(115.34490585327148,71.05096340179443),(114.82095718383789,67.63929843902588),(113.84162902832031,64.3306016921997),(112.34982490539551,61.22012138366699),(110.35284042358398,58.407273292541504),(111.00301742553711,55.26470184326172),(111.74647331237793,51.89537525177002),(111.99706077575684,48.453073501586914),(111.7802619934082,45.0100040435791),(111.02426528930664,41.64311408996582),(109.84465599060059,38.39881420135498),(108.38312149047852,35.27029275894165),(106.51533126831055,32.37150430679321),(104.13743019104004,29.87281560897827),(101.41242980957031,27.754170894622803),(98.49698066711426,25.904479026794434),(95.37266731262207,24.44011926651001),(92.05763816833496,23.484177589416504),(88.6347484588623,23.04612398147583),(85.18181800842285,23.000001907348633),(81.72801971435547,23.000001907348633),(78.27422142028809,23.000001907348633),(74.8204231262207,23.000001907348633),(71.36663436889648,22.999999523162842),(67.9128360748291,22.999999523162842),(64.45903778076172,22.999999523162842),(61.005239486694336,22.999999523162842),(57.55144119262695,22.999999523162842),(54.09764289855957,22.999999523162842),(50.64384460449219,22.999999523162842),(47.190046310424805,22.999999523162842),(43.73624801635742,22.99999713897705),(40.28244972229004,22.99999713897705),(36.828649044036865,22.99999713897705),(33.37485074996948,22.99999713897705),(29.932608604431152,23.231213092803955),(26.568195819854736,23.998281955718994),(23.326716423034668,25.185725688934326),(20.200650691986084,26.65252447128296),(17.279154062271118,28.48712921142578),(14.720969200134277,30.800631046295166),(12.615553140640259,33.53287696838379),(10.892337560653687,36.524555683135986),(9.431374073028564,39.650468826293945),(8.479273319244385,42.96659469604492),(8.044724464416504,46.38994216918945),(8.064445853233337,49.84139919281006),(8.551051616668701,53.25772762298584),(9.531924724578857,56.56602382659912),(10.981851816177368,59.69756603240967),(12.83296823501587,62.61082172393799),(15.027743577957153,65.27400016784668),(17.59825110435486,67.57541179656982),(20.495030879974365,69.45006370544434),(23.627939224243164,70.89813709259033),(26.90805435180664,71.97475910186768),(27.87201166152954,75.24166107177734),(29.136414527893066,78.45348834991455),(30.781495571136475,81.48781776428223),(32.78662443161011,84.29733276367188),(35.10677099227905,86.85331344604492),(37.68455982208252,89.14978981018066),(40.485782623291016,91.16708755493164),(43.50509166717529,92.83950805664062),(46.71271800994873,94.11351203918457),(50.057334899902344,94.96570587158203),(53.480591773986816,95.40961265563965),(56.931986808776855,95.4826545715332),(60.36433219909668,95.1220703125),(63.72321128845215,94.32710647583008),(66.97230815887451,93.16025733947754),(69.97957706451416,92.47065544128418),(72.58376598358154,94.73697662353516),(75.42169094085693,96.70193672180176),(78.4791612625122,98.30320358276367),(81.72120094299316,99.48620796203613),(85.09383201599121,100.21812438964844),(88.53397369384766,100.49599647521973),(91.98366165161133,100.36624908447266),(95.38836479187012,99.80481147766113),(98.64509582519531,98.67175102233887),(101.76718711853027,97.1967887878418),(104.70768928527832,95.39076805114746),(107.33930587768555,93.15916061401367),(109.43532943725586,90.41762351989746),(111.32428169250488,87.52695083618164),(112.99687385559082,84.50621604919434),(114.22335624694824,81.28293037414551),(114.97495651245117,77.91348457336426),(126.49999618530273,43.00000190734863),(127.49881744384766,39.68872547149658),(126.0185718536377,36.74330949783325),(122.66281127929688,36.00794315338135),(119.7559642791748,37.637736797332764),(117.09656715393066,39.9172306060791),(116.0042667388916,43.159847259521484),(117.69608497619629,46.0978889465332),(121.03043556213379,46.99786186218262),(124.02324676513672,45.476746559143066),(141.99999809265137,74.49999809265137),(141.04390144348145,71.52262687683105),(137.93018341064453,70.49999713897705),(134.61960792541504,70.49999713897705),(131.30903244018555,70.49999713897705),(127.99846649169922,70.49999713897705),(124.9691390991211,71.53109073638916),(123.5013198852539,74.41098690032959),(124.84529495239258,77.34099864959717),(127.89737701416016,78.4982442855835),(131.20792388916016,78.49999904632568),(134.51849937438965,78.49999904632568),(137.82907485961914,78.49999904632568),(140.92802047729492,77.56875038146973)]
...
warning: `meteo` (bin "meteo") generated 77 warnings
error: could not compile `meteo` due to 4 previous errors; 77 warnings emitted