Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (base) bordeaux80 :: Persos/Rust/skycrapers ‹master*› » cargo run
- warning: skycrapers v0.1.0 (/home/laurent/Documents/Programmation/Projets/Persos/Rust/skycrapers) ignoring invalid dependency `rfs` which is missing a lib target
- Compiling skycrapers v0.1.0 (/home/laurent/Documents/Programmation/Projets/Persos/Rust/skycrapers)
- error[E0277]: the trait bound `Element<'_, _, _, _>: From<String>` is not satisfied
- --> src/main.rs:145:20
- |
- 145 | button(t!("ui.toolbar.new_game").to_string()).on_press(Mess...
- | ------ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unsatisfied trait bound
- | |
- | required by a bound introduced by this call
- |
- = help: the trait `From<String>` is not implemented for `iced_core::element::Element<'_, _, _, _>`
- = help: the following other types implement trait `From<T>`:
- `iced_core::element::Element<'_, Link, Theme, Renderer>` implements `From<Rich<'_, Link, Theme, Renderer>>`
- `iced_core::element::Element<'_, Message, Theme, Renderer>` implements `From<&str>`
- `iced_core::element::Element<'_, Message, Theme, Renderer>` implements `From<Checkbox<'_, Message, Theme, Renderer>>`
- `iced_core::element::Element<'_, Message, Theme, Renderer>` implements `From<ComboBox<'_, T, Message, Theme, Renderer>>`
- `iced_core::element::Element<'_, Message, Theme, Renderer>` implements `From<Container<'_, Message, Theme, Renderer>>`
- `iced_core::element::Element<'_, Message, Theme, Renderer>` implements `From<MouseArea<'_, Message, Theme, Renderer>>`
- `iced_core::element::Element<'_, Message, Theme, Renderer>` implements `From<PaneGrid<'_, Message, Theme, Renderer>>`
- `iced_core::element::Element<'_, Message, Theme, Renderer>` implements `From<PickList<'_, T, L, V, Message, Theme, Renderer>>`
- and 21 others
- = note: required for `String` to implement `Into<iced_core::element::Element<'_, _, _, _>>`
- note: required by a bound in `button`
- --> /home/laurent/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/iced_widget-0.13.4/src/helpers.rs:835:19
- |
- 834 | pub fn button<'a, Message, Theme, Renderer>(
- | ------ required by a bound in this function
- 835 | content: impl Into<Element<'a, Message, Theme, Renderer>>,
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `button`
- = note: the full name for the type has been written to '/home/laurent/Documents/Programmation/Projets/Persos/Rust/skycrapers/target/debug/deps/skycrapers-1975347835c32067.long-type-12169297398742323190.txt'
- = note: consider using `--verbose` to print the full type name to the console
- help: consider removing this method call, as the receiver has type `Cow<'_, str>` and `Cow<'_, str>: From<String>` trivially holds
- |
- 14 - i18n!("locales", fallback = "en");
- 15 - use rust_i18n::t;
- 16 -
- 17 - const CELLS_SIZE: f32 = 40.0;
- 18 -
- 19 - fn main() -> iced::Result {
- 20 - iced::run("Skycrapers", MyApp::update, MyApp::view)
- 21 - }
- 22 -
- 23 - #[derive(Debug, Clone)]
- 24 - enum Message {
- 25 - Update(u8, u8, String),
- 26 - NewGame,
- 27 - Check,
- 28 - }
- 29 -
- 30 - struct MyApp {
- 31 - size: u8,
- 32 - values: Vec<Vec<String>>,
- 33 - answer: Vec<Vec<u8>>,
- 34 - /*
- 35 - index 0 is the top line
- 36 - index 1 is the bottom line
- 37 - index 2 is the left line
- 38 - index 3 is the right line
- 39 - */
- 40 - clues: Vec<Vec<u8>>,
- 41 - errors: Vec<(u8, u8)>,
- 42 - }
- 43 -
- 44 - impl MyApp {
- 45 - fn build_clue_component(&'_ self, clue: u8) -> Text<'_> {
- 46 - text(format!(
- 47 - "{}",
- 48 - if clue != 0 {
- 49 - clue.to_string()
- 50 - } else {
- 51 - String::new()
- 52 - }
- 53 - ))
- 54 - .width(CELLS_SIZE)
- 55 - .size(CELLS_SIZE)
- 56 - .align_x(Horizontal::Center)
- 57 - }
- 58 -
- 59 - fn build_empty_clue_component(&'_ self) -> Text<'_> {
- 60 - text("")
- 61 - .width(CELLS_SIZE)
- 62 - .size(CELLS_SIZE)
- 63 - .align_x(Horizontal::Center)
- 64 - }
- 65 -
- 66 - fn clear_cells(&'_ mut self) {
- 67 - let mut dyn_array = Vec::new();
- 68 - for _row in 0..self.size {
- 69 - let mut col_array = Vec::new();
- 70 - for _col in 0..self.size {
- 71 - col_array.push("".to_string());
- 72 - }
- 73 - dyn_array.push(col_array);
- 74 - }
- 75 - self.values = dyn_array;
- 76 - }
- 77 -
- 78 - fn build_grid_comp(&'_ self) -> Column<'_, Message> {
- 79 - let mut col_comp = Column::new();
- 80 -
- 81 - let mut top_clues = Row::new();
- 82 - top_clues = top_clues.push(self.build_empty_clue_component());
- 83 - for col_index in 0..self.size {
- 84 - let clue_comp = self.build_clue_component(self.clues[0][col_index as usize]);
- 85 - top_clues = top_clues.push(clue_comp);
- 86 - }
- 87 - col_comp = col_comp.push(top_clues);
- 88 -
- 89 - for row_index in 0..self.size {
- 90 - let mut row_comp = Row::new();
- 91 -
- 92 - let left_clue_comp = self.build_clue_component(self.clues[2][row_index as usize]);
- 93 - let right_clue_comp = self.build_clue_component(self.clues[3][row_index as usize]);
- 94 -
- 95 - row_comp = row_comp.push(left_clue_comp);
- 96 -
- 97 - for col_index in 0..self.size {
- 98 - let is_error = self.errors.contains(&(row_index, col_index));
- 99 - let cell = text_input(
- 100 - "",
- 101 - self.values[row_index as usize][col_index as usize].as_str(),
- 102 - )
- 103 - .width(CELLS_SIZE)
- 104 - .size(CELLS_SIZE * 0.8)
- 105 - .align_x(Horizontal::Center)
- 106 - .style(move |_, _| text_input::Style {
- 107 - background: iced::Background::Color(Color::TRANSPARENT),
- 108 -
- 109 - border: Border {
- 110 - color: Color::BLACK,
- 111 - width: 1.0,
- 112 - radius: Radius::new(0),
- 113 - },
- 114 - icon: Color::TRANSPARENT,
- 115 - placeholder: Color::TRANSPARENT,
- 116 - selection: Color::TRANSPARENT,
- 117 - value: if is_error {
- 118 - Color::from_rgb(1.0, 0.0, 0.0)
- 119 - } else {
- 120 - Color::BLACK
- 121 - },
- 122 - })
- 123 - .on_input(move |value| Message::Update(row_index, col_index, value));
- 124 - row_comp = row_comp.push(cell);
- 125 - }
- 126 -
- 127 - row_comp = row_comp.push(right_clue_comp);
- 128 -
- 129 - col_comp = col_comp.push(row_comp);
- 130 - }
- 131 -
- 132 - let mut bottom_clues = Row::new();
- 133 - bottom_clues = bottom_clues.push(self.build_empty_clue_component());
- 134 - for col_index in 0..self.size {
- 135 - let clue_comp = self.build_clue_component(self.clues[1][col_index as usize]);
- 136 - bottom_clues = bottom_clues.push(clue_comp);
- 137 - }
- 138 - col_comp = col_comp.push(bottom_clues);
- 139 -
- 140 - col_comp
- 141 - }
- 142 -
- 143 - fn build_toolbar_comp(&self) -> Row<'_, Message> {
- 144 - let new_game_button =
- 145 - button(t!("ui.toolbar.new_game").to_string()).on_press(Message::NewGame);
- 14 + i18n!("locales", fallback = "en")).on_press(Message::NewGame);
- |
- error[E0277]: the trait bound `Element<'_, _, _, _>: From<String>` is not satisfied
- --> src/main.rs:146:35
- |
- 146 | ...k_button = button(t!("ui.toolbar.check").to_string()).on_press(Messa...
- | ------ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unsatisfied trait bound
- | |
- | required by a bound introduced by this call
- |
- = help: the trait `From<String>` is not implemented for `iced_core::element::Element<'_, _, _, _>`
- = help: the following other types implement trait `From<T>`:
- `iced_core::element::Element<'_, Link, Theme, Renderer>` implements `From<Rich<'_, Link, Theme, Renderer>>`
- `iced_core::element::Element<'_, Message, Theme, Renderer>` implements `From<&str>`
- `iced_core::element::Element<'_, Message, Theme, Renderer>` implements `From<Checkbox<'_, Message, Theme, Renderer>>`
- `iced_core::element::Element<'_, Message, Theme, Renderer>` implements `From<ComboBox<'_, T, Message, Theme, Renderer>>`
- `iced_core::element::Element<'_, Message, Theme, Renderer>` implements `From<Container<'_, Message, Theme, Renderer>>`
- `iced_core::element::Element<'_, Message, Theme, Renderer>` implements `From<MouseArea<'_, Message, Theme, Renderer>>`
- `iced_core::element::Element<'_, Message, Theme, Renderer>` implements `From<PaneGrid<'_, Message, Theme, Renderer>>`
- `iced_core::element::Element<'_, Message, Theme, Renderer>` implements `From<PickList<'_, T, L, V, Message, Theme, Renderer>>`
- and 21 others
- = note: required for `String` to implement `Into<iced_core::element::Element<'_, _, _, _>>`
- note: required by a bound in `button`
- --> /home/laurent/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/iced_widget-0.13.4/src/helpers.rs:835:19
- |
- 834 | pub fn button<'a, Message, Theme, Renderer>(
- | ------ required by a bound in this function
- 835 | content: impl Into<Element<'a, Message, Theme, Renderer>>,
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `button`
- = note: the full name for the type has been written to '/home/laurent/Documents/Programmation/Projets/Persos/Rust/skycrapers/target/debug/deps/skycrapers-1975347835c32067.long-type-9008159889769157918.txt'
- = note: consider using `--verbose` to print the full type name to the console
- help: consider removing this method call, as the receiver has type `Cow<'_, str>` and `Cow<'_, str>: From<String>` trivially holds
- |
- 14 - i18n!("locales", fallback = "en");
- 15 - use rust_i18n::t;
- 16 -
- 17 - const CELLS_SIZE: f32 = 40.0;
- 18 -
- 19 - fn main() -> iced::Result {
- 20 - iced::run("Skycrapers", MyApp::update, MyApp::view)
- 21 - }
- 22 -
- 23 - #[derive(Debug, Clone)]
- 24 - enum Message {
- 25 - Update(u8, u8, String),
- 26 - NewGame,
- 27 - Check,
- 28 - }
- 29 -
- 30 - struct MyApp {
- 31 - size: u8,
- 32 - values: Vec<Vec<String>>,
- 33 - answer: Vec<Vec<u8>>,
- 34 - /*
- 35 - index 0 is the top line
- 36 - index 1 is the bottom line
- 37 - index 2 is the left line
- 38 - index 3 is the right line
- 39 - */
- 40 - clues: Vec<Vec<u8>>,
- 41 - errors: Vec<(u8, u8)>,
- 42 - }
- 43 -
- 44 - impl MyApp {
- 45 - fn build_clue_component(&'_ self, clue: u8) -> Text<'_> {
- 46 - text(format!(
- 47 - "{}",
- 48 - if clue != 0 {
- 49 - clue.to_string()
- 50 - } else {
- 51 - String::new()
- 52 - }
- 53 - ))
- 54 - .width(CELLS_SIZE)
- 55 - .size(CELLS_SIZE)
- 56 - .align_x(Horizontal::Center)
- 57 - }
- 58 -
- 59 - fn build_empty_clue_component(&'_ self) -> Text<'_> {
- 60 - text("")
- 61 - .width(CELLS_SIZE)
- 62 - .size(CELLS_SIZE)
- 63 - .align_x(Horizontal::Center)
- 64 - }
- 65 -
- 66 - fn clear_cells(&'_ mut self) {
- 67 - let mut dyn_array = Vec::new();
- 68 - for _row in 0..self.size {
- 69 - let mut col_array = Vec::new();
- 70 - for _col in 0..self.size {
- 71 - col_array.push("".to_string());
- 72 - }
- 73 - dyn_array.push(col_array);
- 74 - }
- 75 - self.values = dyn_array;
- 76 - }
- 77 -
- 78 - fn build_grid_comp(&'_ self) -> Column<'_, Message> {
- 79 - let mut col_comp = Column::new();
- 80 -
- 81 - let mut top_clues = Row::new();
- 82 - top_clues = top_clues.push(self.build_empty_clue_component());
- 83 - for col_index in 0..self.size {
- 84 - let clue_comp = self.build_clue_component(self.clues[0][col_index as usize]);
- 85 - top_clues = top_clues.push(clue_comp);
- 86 - }
- 87 - col_comp = col_comp.push(top_clues);
- 88 -
- 89 - for row_index in 0..self.size {
- 90 - let mut row_comp = Row::new();
- 91 -
- 92 - let left_clue_comp = self.build_clue_component(self.clues[2][row_index as usize]);
- 93 - let right_clue_comp = self.build_clue_component(self.clues[3][row_index as usize]);
- 94 -
- 95 - row_comp = row_comp.push(left_clue_comp);
- 96 -
- 97 - for col_index in 0..self.size {
- 98 - let is_error = self.errors.contains(&(row_index, col_index));
- 99 - let cell = text_input(
- 100 - "",
- 101 - self.values[row_index as usize][col_index as usize].as_str(),
- 102 - )
- 103 - .width(CELLS_SIZE)
- 104 - .size(CELLS_SIZE * 0.8)
- 105 - .align_x(Horizontal::Center)
- 106 - .style(move |_, _| text_input::Style {
- 107 - background: iced::Background::Color(Color::TRANSPARENT),
- 108 -
- 109 - border: Border {
- 110 - color: Color::BLACK,
- 111 - width: 1.0,
- 112 - radius: Radius::new(0),
- 113 - },
- 114 - icon: Color::TRANSPARENT,
- 115 - placeholder: Color::TRANSPARENT,
- 116 - selection: Color::TRANSPARENT,
- 117 - value: if is_error {
- 118 - Color::from_rgb(1.0, 0.0, 0.0)
- 119 - } else {
- 120 - Color::BLACK
- 121 - },
- 122 - })
- 123 - .on_input(move |value| Message::Update(row_index, col_index, value));
- 124 - row_comp = row_comp.push(cell);
- 125 - }
- 126 -
- 127 - row_comp = row_comp.push(right_clue_comp);
- 128 -
- 129 - col_comp = col_comp.push(row_comp);
- 130 - }
- 131 -
- 132 - let mut bottom_clues = Row::new();
- 133 - bottom_clues = bottom_clues.push(self.build_empty_clue_component());
- 134 - for col_index in 0..self.size {
- 135 - let clue_comp = self.build_clue_component(self.clues[1][col_index as usize]);
- 136 - bottom_clues = bottom_clues.push(clue_comp);
- 137 - }
- 138 - col_comp = col_comp.push(bottom_clues);
- 139 -
- 140 - col_comp
- 141 - }
- 142 -
- 143 - fn build_toolbar_comp(&self) -> Row<'_, Message> {
- 144 - let new_game_button =
- 145 - button(t!("ui.toolbar.new_game").to_string()).on_press(Message::NewGame);
- 146 - let check_button = button(t!("ui.toolbar.check").to_string()).on_press(Message::Check);
- 14 + i18n!("locales", fallback = "en")).on_press(Message::Check);
- |
Advertisement
Add Comment
Please, Sign In to add comment