Struct HorizontalLayout

Source
pub struct HorizontalLayout { /* private fields */ }
Expand description

This is the HorizontalLayout storage structure for the HorizontalLayout implementation.

Implementations§

Source§

impl HorizontalLayout

Creates a new HorizontalLayout manager.

Source

pub fn new(x: i32, y: i32, w: u32, h: u32, padding: PaddingConstraint) -> Self

Examples found in repository?
examples/layout.rs (line 43)
33pub fn main() {
34    let sdl_context = sdl2::init().unwrap();
35    let video_subsystem = sdl_context.video().unwrap();
36    let window = video_subsystem
37        .window("pushrod-render horizontal layout demo", 400, 300)
38        .position_centered()
39        .opengl()
40        .build()
41        .unwrap();
42    let mut engine = Engine::new(400, 300, 60);
43    let mut layout = HorizontalLayout::new(20, 20, 360, 80, PaddingConstraint::new(0, 0, 0, 0, 1));
44    let mut layout2 =
45        VerticalLayout::new(250, 120, 130, 160, PaddingConstraint::new(0, 0, 0, 0, 1));
46    let mut widget1 = BaseWidget::new(make_points_origin(), make_size(0, 0));
47
48    widget1
49        .get_config()
50        .set_color(CONFIG_COLOR_BORDER, Color::RGB(0, 0, 0));
51    widget1.get_config().set_numeric(CONFIG_BORDER_WIDTH, 2);
52
53    let mut widget2 = BaseWidget::new(make_points_origin(), make_size(0, 0));
54
55    widget2
56        .get_config()
57        .set_color(CONFIG_COLOR_BORDER, Color::RGB(0, 0, 0));
58    widget2.get_config().set_numeric(CONFIG_BORDER_WIDTH, 2);
59
60    let mut widget3 = BaseWidget::new(make_points_origin(), make_size(0, 0));
61
62    widget3
63        .get_config()
64        .set_color(CONFIG_COLOR_BORDER, Color::RGB(0, 0, 0));
65    widget3.get_config().set_numeric(CONFIG_BORDER_WIDTH, 2);
66
67    let mut widget4 = BaseWidget::new(make_points_origin(), make_size(0, 0));
68
69    widget4
70        .get_config()
71        .set_color(CONFIG_COLOR_BORDER, Color::RGB(0, 0, 0));
72    widget4.get_config().set_numeric(CONFIG_BORDER_WIDTH, 2);
73
74    let widget1_id = engine.add_widget(Box::new(widget1), String::from("widget1"));
75    let widget2_id = engine.add_widget(Box::new(widget2), String::from("widget2"));
76    let widget3_id = engine.add_widget(Box::new(widget3), String::from("widget3"));
77    let widget4_id = engine.add_widget(Box::new(widget4), String::from("widget4"));
78
79    layout.append_widget(widget1_id);
80    layout.append_widget(widget2_id);
81    layout2.append_widget(widget3_id);
82    layout2.append_widget(widget4_id);
83    engine.add_layout(Box::new(layout));
84    engine.add_layout(Box::new(layout2));
85
86    let mut text_widget1 = TextWidget::new(
87        String::from("assets/OpenSans-Regular.ttf"),
88        sdl2::ttf::FontStyle::NORMAL,
89        16,
90        TextJustify::Right,
91        String::from("Spacing:"),
92        make_points(20, 116),
93        make_size(70, 22),
94    );
95
96    text_widget1
97        .get_config()
98        .set_color(CONFIG_COLOR_TEXT, Color::RGB(0, 0, 0));
99
100    let mut text_widget2 = TextWidget::new(
101        String::from("assets/OpenSans-Regular.ttf"),
102        sdl2::ttf::FontStyle::NORMAL,
103        16,
104        TextJustify::Left,
105        String::from("1"),
106        make_points(100, 116),
107        make_size(40, 22),
108    );
109
110    text_widget2
111        .get_config()
112        .set_color(CONFIG_COLOR_TEXT, Color::RGB(0, 0, 255));
113
114    let mut button1 = PushButtonWidget::new(
115        make_points(130, 112),
116        make_size(50, 30),
117        String::from("<"),
118        20,
119    );
120
121    button1.set_color(CONFIG_COLOR_BORDER, Color::RGB(0, 0, 0));
122    button1.set_numeric(CONFIG_BORDER_WIDTH, 2);
123    button1.on_click(|_, _widgets, _layouts| {
124        let mut spacing = _layouts[0].layout.borrow_mut().get_padding().spacing - 1;
125        let top = _layouts[0].layout.borrow_mut().get_padding().top;
126        let bottom = _layouts[0].layout.borrow_mut().get_padding().bottom;
127        let left = _layouts[0].layout.borrow_mut().get_padding().left;
128        let right = _layouts[0].layout.borrow_mut().get_padding().right;
129        let text_widget2_id = widget_id_for_name(_widgets, String::from("text_widget2"));
130
131        if spacing <= 0 {
132            spacing = 0;
133        }
134
135        let spacing_new = PaddingConstraint::new(top, bottom, left, right, spacing);
136
137        _layouts[0]
138            .layout
139            .borrow_mut()
140            .set_padding(spacing_new.clone());
141        _layouts[1]
142            .layout
143            .borrow_mut()
144            .set_padding(spacing_new.clone());
145
146        refresh_widgets(_widgets);
147
148        cast!(_widgets, text_widget2_id, TextWidget).set_text(format!("{}", spacing));
149    });
150
151    let mut button2 = PushButtonWidget::new(
152        make_points(180, 112),
153        make_size(50, 30),
154        String::from(">"),
155        20,
156    );
157
158    button2.set_color(CONFIG_COLOR_BORDER, Color::RGB(0, 0, 0));
159    button2.set_numeric(CONFIG_BORDER_WIDTH, 2);
160    button2.on_click(|_, _widgets, _layouts| {
161        let mut spacing = _layouts[0].layout.borrow_mut().get_padding().spacing + 1;
162        let top = _layouts[0].layout.borrow_mut().get_padding().top;
163        let bottom = _layouts[0].layout.borrow_mut().get_padding().bottom;
164        let left = _layouts[0].layout.borrow_mut().get_padding().left;
165        let right = _layouts[0].layout.borrow_mut().get_padding().right;
166        let text_widget2_id = widget_id_for_name(_widgets, String::from("text_widget2"));
167
168        if spacing >= MAX_SPACING {
169            spacing = MAX_SPACING;
170        }
171
172        let spacing_new = PaddingConstraint::new(top, bottom, left, right, spacing);
173
174        _layouts[0]
175            .layout
176            .borrow_mut()
177            .set_padding(spacing_new.clone());
178        _layouts[1]
179            .layout
180            .borrow_mut()
181            .set_padding(spacing_new.clone());
182
183        refresh_widgets(_widgets);
184
185        cast!(_widgets, text_widget2_id, TextWidget).set_text(format!("{}", spacing));
186    });
187
188    let mut text_widget3 = TextWidget::new(
189        String::from("assets/OpenSans-Regular.ttf"),
190        sdl2::ttf::FontStyle::NORMAL,
191        16,
192        TextJustify::Right,
193        String::from("Top:"),
194        make_points(20, 146),
195        make_size(70, 22),
196    );
197
198    text_widget3
199        .get_config()
200        .set_color(CONFIG_COLOR_TEXT, Color::RGB(0, 0, 0));
201
202    let mut text_widget4 = TextWidget::new(
203        String::from("assets/OpenSans-Regular.ttf"),
204        sdl2::ttf::FontStyle::NORMAL,
205        16,
206        TextJustify::Left,
207        String::from("0"),
208        make_points(100, 146),
209        make_size(40, 22),
210    );
211
212    text_widget4
213        .get_config()
214        .set_color(CONFIG_COLOR_TEXT, Color::RGB(0, 0, 255));
215
216    let mut button3 = PushButtonWidget::new(
217        make_points(130, 142),
218        make_size(50, 30),
219        String::from("<"),
220        20,
221    );
222
223    button3.set_color(CONFIG_COLOR_BORDER, Color::RGB(0, 0, 0));
224    button3.set_numeric(CONFIG_BORDER_WIDTH, 2);
225    button3.on_click(|_, _widgets, _layouts| {
226        let spacing = _layouts[0].layout.borrow_mut().get_padding().spacing;
227        let mut top = _layouts[0].layout.borrow_mut().get_padding().top - 1;
228        let bottom = _layouts[0].layout.borrow_mut().get_padding().bottom;
229        let left = _layouts[0].layout.borrow_mut().get_padding().left;
230        let right = _layouts[0].layout.borrow_mut().get_padding().right;
231        let text_widget4_id = widget_id_for_name(_widgets, String::from("text_widget4"));
232
233        if top <= 0 {
234            top = 0;
235        }
236
237        let spacing_new = PaddingConstraint::new(top, bottom, left, right, spacing);
238
239        _layouts[0]
240            .layout
241            .borrow_mut()
242            .set_padding(spacing_new.clone());
243        _layouts[1]
244            .layout
245            .borrow_mut()
246            .set_padding(spacing_new.clone());
247
248        refresh_widgets(_widgets);
249
250        cast!(_widgets, text_widget4_id, TextWidget).set_text(format!("{}", top));
251    });
252
253    let mut button4 = PushButtonWidget::new(
254        make_points(180, 142),
255        make_size(50, 30),
256        String::from(">"),
257        20,
258    );
259
260    button4.set_color(CONFIG_COLOR_BORDER, Color::RGB(0, 0, 0));
261    button4.set_numeric(CONFIG_BORDER_WIDTH, 2);
262    button4.on_click(|_, _widgets, _layouts| {
263        let spacing = _layouts[0].layout.borrow_mut().get_padding().spacing;
264        let mut top = _layouts[0].layout.borrow_mut().get_padding().top + 1;
265        let bottom = _layouts[0].layout.borrow_mut().get_padding().bottom;
266        let left = _layouts[0].layout.borrow_mut().get_padding().left;
267        let right = _layouts[0].layout.borrow_mut().get_padding().right;
268        let text_widget4_id = widget_id_for_name(_widgets, String::from("text_widget4"));
269
270        if top >= MAX_SPACING {
271            top = MAX_SPACING;
272        }
273
274        let spacing_new = PaddingConstraint::new(top, bottom, left, right, spacing);
275
276        _layouts[0]
277            .layout
278            .borrow_mut()
279            .set_padding(spacing_new.clone());
280        _layouts[1]
281            .layout
282            .borrow_mut()
283            .set_padding(spacing_new.clone());
284
285        refresh_widgets(_widgets);
286
287        cast!(_widgets, text_widget4_id, TextWidget).set_text(format!("{}", top));
288    });
289
290    let mut text_widget5 = TextWidget::new(
291        String::from("assets/OpenSans-Regular.ttf"),
292        sdl2::ttf::FontStyle::NORMAL,
293        16,
294        TextJustify::Right,
295        String::from("Bottom:"),
296        make_points(20, 176),
297        make_size(70, 22),
298    );
299
300    text_widget5
301        .get_config()
302        .set_color(CONFIG_COLOR_TEXT, Color::RGB(0, 0, 0));
303
304    let mut text_widget6 = TextWidget::new(
305        String::from("assets/OpenSans-Regular.ttf"),
306        sdl2::ttf::FontStyle::NORMAL,
307        16,
308        TextJustify::Left,
309        String::from("0"),
310        make_points(100, 176),
311        make_size(40, 22),
312    );
313
314    text_widget6
315        .get_config()
316        .set_color(CONFIG_COLOR_TEXT, Color::RGB(0, 0, 255));
317
318    let mut button5 = PushButtonWidget::new(
319        make_points(130, 172),
320        make_size(50, 30),
321        String::from("<"),
322        20,
323    );
324
325    button5.set_color(CONFIG_COLOR_BORDER, Color::RGB(0, 0, 0));
326    button5.set_numeric(CONFIG_BORDER_WIDTH, 2);
327    button5.on_click(|_, _widgets, _layouts| {
328        let spacing = _layouts[0].layout.borrow_mut().get_padding().spacing;
329        let top = _layouts[0].layout.borrow_mut().get_padding().top;
330        let mut bottom = _layouts[0].layout.borrow_mut().get_padding().bottom - 1;
331        let left = _layouts[0].layout.borrow_mut().get_padding().left;
332        let right = _layouts[0].layout.borrow_mut().get_padding().right;
333        let text_widget6_id = widget_id_for_name(_widgets, String::from("text_widget6"));
334
335        if bottom <= 0 {
336            bottom = 0;
337        }
338
339        let spacing_new = PaddingConstraint::new(top, bottom, left, right, spacing);
340
341        _layouts[0]
342            .layout
343            .borrow_mut()
344            .set_padding(spacing_new.clone());
345        _layouts[1]
346            .layout
347            .borrow_mut()
348            .set_padding(spacing_new.clone());
349
350        refresh_widgets(_widgets);
351
352        cast!(_widgets, text_widget6_id, TextWidget).set_text(format!("{}", bottom));
353    });
354
355    let mut button6 = PushButtonWidget::new(
356        make_points(180, 172),
357        make_size(50, 30),
358        String::from(">"),
359        20,
360    );
361
362    button6.set_color(CONFIG_COLOR_BORDER, Color::RGB(0, 0, 0));
363    button6.set_numeric(CONFIG_BORDER_WIDTH, 2);
364    button6.on_click(|_, _widgets, _layouts| {
365        let spacing = _layouts[0].layout.borrow_mut().get_padding().spacing;
366        let top = _layouts[0].layout.borrow_mut().get_padding().top;
367        let mut bottom = _layouts[0].layout.borrow_mut().get_padding().bottom + 1;
368        let left = _layouts[0].layout.borrow_mut().get_padding().left;
369        let right = _layouts[0].layout.borrow_mut().get_padding().right;
370        let text_widget6_id = widget_id_for_name(_widgets, String::from("text_widget6"));
371
372        if bottom >= MAX_SPACING {
373            bottom = MAX_SPACING;
374        }
375
376        let spacing_new = PaddingConstraint::new(top, bottom, left, right, spacing);
377
378        _layouts[0]
379            .layout
380            .borrow_mut()
381            .set_padding(spacing_new.clone());
382        _layouts[1]
383            .layout
384            .borrow_mut()
385            .set_padding(spacing_new.clone());
386
387        refresh_widgets(_widgets);
388
389        cast!(_widgets, text_widget6_id, TextWidget).set_text(format!("{}", bottom));
390    });
391
392    let mut text_widget7 = TextWidget::new(
393        String::from("assets/OpenSans-Regular.ttf"),
394        sdl2::ttf::FontStyle::NORMAL,
395        16,
396        TextJustify::Right,
397        String::from("Left:"),
398        make_points(20, 206),
399        make_size(70, 22),
400    );
401
402    text_widget7
403        .get_config()
404        .set_color(CONFIG_COLOR_TEXT, Color::RGB(0, 0, 0));
405
406    let mut text_widget8 = TextWidget::new(
407        String::from("assets/OpenSans-Regular.ttf"),
408        sdl2::ttf::FontStyle::NORMAL,
409        16,
410        TextJustify::Left,
411        String::from("0"),
412        make_points(100, 206),
413        make_size(40, 22),
414    );
415
416    text_widget8
417        .get_config()
418        .set_color(CONFIG_COLOR_TEXT, Color::RGB(0, 0, 255));
419
420    let mut button7 = PushButtonWidget::new(
421        make_points(130, 202),
422        make_size(50, 30),
423        String::from("<"),
424        20,
425    );
426
427    button7.set_color(CONFIG_COLOR_BORDER, Color::RGB(0, 0, 0));
428    button7.set_numeric(CONFIG_BORDER_WIDTH, 2);
429    button7.on_click(|_, _widgets, _layouts| {
430        let spacing = _layouts[0].layout.borrow_mut().get_padding().spacing;
431        let top = _layouts[0].layout.borrow_mut().get_padding().top;
432        let bottom = _layouts[0].layout.borrow_mut().get_padding().bottom;
433        let mut left = _layouts[0].layout.borrow_mut().get_padding().left - 1;
434        let right = _layouts[0].layout.borrow_mut().get_padding().right;
435        let text_widget8_id = widget_id_for_name(_widgets, String::from("text_widget8"));
436
437        if left <= 0 {
438            left = 0;
439        }
440
441        let spacing_new = PaddingConstraint::new(top, bottom, left, right, spacing);
442
443        _layouts[0]
444            .layout
445            .borrow_mut()
446            .set_padding(spacing_new.clone());
447        _layouts[1]
448            .layout
449            .borrow_mut()
450            .set_padding(spacing_new.clone());
451
452        refresh_widgets(_widgets);
453
454        cast!(_widgets, text_widget8_id, TextWidget).set_text(format!("{}", left));
455    });
456
457    let mut button8 = PushButtonWidget::new(
458        make_points(180, 202),
459        make_size(50, 30),
460        String::from(">"),
461        20,
462    );
463
464    button8.set_color(CONFIG_COLOR_BORDER, Color::RGB(0, 0, 0));
465    button8.set_numeric(CONFIG_BORDER_WIDTH, 2);
466    button8.on_click(|_, _widgets, _layouts| {
467        let spacing = _layouts[0].layout.borrow_mut().get_padding().spacing;
468        let top = _layouts[0].layout.borrow_mut().get_padding().top;
469        let bottom = _layouts[0].layout.borrow_mut().get_padding().bottom;
470        let mut left = _layouts[0].layout.borrow_mut().get_padding().left + 1;
471        let right = _layouts[0].layout.borrow_mut().get_padding().right;
472        let text_widget8_id = widget_id_for_name(_widgets, String::from("text_widget8"));
473
474        if left >= MAX_SPACING {
475            left = MAX_SPACING;
476        }
477
478        let spacing_new = PaddingConstraint::new(top, bottom, left, right, spacing);
479
480        _layouts[0]
481            .layout
482            .borrow_mut()
483            .set_padding(spacing_new.clone());
484        _layouts[1]
485            .layout
486            .borrow_mut()
487            .set_padding(spacing_new.clone());
488
489        refresh_widgets(_widgets);
490
491        cast!(_widgets, text_widget8_id, TextWidget).set_text(format!("{}", left));
492    });
493
494    let mut text_widget9 = TextWidget::new(
495        String::from("assets/OpenSans-Regular.ttf"),
496        sdl2::ttf::FontStyle::NORMAL,
497        16,
498        TextJustify::Right,
499        String::from("Right:"),
500        make_points(20, 236),
501        make_size(70, 22),
502    );
503
504    text_widget9
505        .get_config()
506        .set_color(CONFIG_COLOR_TEXT, Color::RGB(0, 0, 0));
507
508    let mut text_widget10 = TextWidget::new(
509        String::from("assets/OpenSans-Regular.ttf"),
510        sdl2::ttf::FontStyle::NORMAL,
511        16,
512        TextJustify::Left,
513        String::from("0"),
514        make_points(100, 236),
515        make_size(40, 22),
516    );
517
518    text_widget10
519        .get_config()
520        .set_color(CONFIG_COLOR_TEXT, Color::RGB(0, 0, 255));
521
522    let mut button9 = PushButtonWidget::new(
523        make_points(130, 232),
524        make_size(50, 30),
525        String::from("<"),
526        20,
527    );
528
529    button9.set_color(CONFIG_COLOR_BORDER, Color::RGB(0, 0, 0));
530    button9.set_numeric(CONFIG_BORDER_WIDTH, 2);
531    button9.on_click(|_, _widgets, _layouts| {
532        let spacing = _layouts[0].layout.borrow_mut().get_padding().spacing;
533        let top = _layouts[0].layout.borrow_mut().get_padding().top;
534        let bottom = _layouts[0].layout.borrow_mut().get_padding().bottom;
535        let left = _layouts[0].layout.borrow_mut().get_padding().left;
536        let mut right = _layouts[0].layout.borrow_mut().get_padding().right - 1;
537        let text_widget10_id = widget_id_for_name(_widgets, String::from("text_widget10"));
538
539        if right <= 0 {
540            right = 0;
541        }
542
543        let spacing_new = PaddingConstraint::new(top, bottom, left, right, spacing);
544
545        _layouts[0]
546            .layout
547            .borrow_mut()
548            .set_padding(spacing_new.clone());
549        _layouts[1]
550            .layout
551            .borrow_mut()
552            .set_padding(spacing_new.clone());
553
554        refresh_widgets(_widgets);
555
556        cast!(_widgets, text_widget10_id, TextWidget).set_text(format!("{}", right));
557    });
558
559    let mut button10 = PushButtonWidget::new(
560        make_points(180, 232),
561        make_size(50, 30),
562        String::from(">"),
563        20,
564    );
565
566    button10.set_color(CONFIG_COLOR_BORDER, Color::RGB(0, 0, 0));
567    button10.set_numeric(CONFIG_BORDER_WIDTH, 2);
568    button10.on_click(|_, _widgets, _layouts| {
569        let spacing = _layouts[0].layout.borrow_mut().get_padding().spacing;
570        let top = _layouts[0].layout.borrow_mut().get_padding().top;
571        let bottom = _layouts[0].layout.borrow_mut().get_padding().bottom;
572        let left = _layouts[0].layout.borrow_mut().get_padding().left;
573        let mut right = _layouts[0].layout.borrow_mut().get_padding().right + 1;
574        let text_widget10_id = widget_id_for_name(_widgets, String::from("text_widget10"));
575
576        if right >= MAX_SPACING {
577            right = MAX_SPACING;
578        }
579
580        let spacing_new = PaddingConstraint::new(top, bottom, left, right, spacing);
581
582        _layouts[0]
583            .layout
584            .borrow_mut()
585            .set_padding(spacing_new.clone());
586        _layouts[1]
587            .layout
588            .borrow_mut()
589            .set_padding(spacing_new.clone());
590
591        refresh_widgets(_widgets);
592
593        cast!(_widgets, text_widget10_id, TextWidget).set_text(format!("{}", right));
594    });
595
596    engine.add_widget(Box::new(text_widget1), String::from("text_widget1"));
597    engine.add_widget(Box::new(text_widget2), String::from("text_widget2"));
598    engine.add_widget(Box::new(button1), String::from("button1"));
599    engine.add_widget(Box::new(button2), String::from("button2"));
600    engine.add_widget(Box::new(text_widget3), String::from("text_widget3"));
601    engine.add_widget(Box::new(text_widget4), String::from("text_widget4"));
602    engine.add_widget(Box::new(button3), String::from("button3"));
603    engine.add_widget(Box::new(button4), String::from("button4"));
604    engine.add_widget(Box::new(text_widget5), String::from("text_widget5"));
605    engine.add_widget(Box::new(text_widget6), String::from("text_widget6"));
606    engine.add_widget(Box::new(button5), String::from("button5"));
607    engine.add_widget(Box::new(button6), String::from("button6"));
608    engine.add_widget(Box::new(text_widget7), String::from("text_widget7"));
609    engine.add_widget(Box::new(text_widget8), String::from("text_widget8"));
610    engine.add_widget(Box::new(button7), String::from("button7"));
611    engine.add_widget(Box::new(button8), String::from("button8"));
612    engine.add_widget(Box::new(text_widget9), String::from("text_widget9"));
613    engine.add_widget(Box::new(text_widget10), String::from("text_widget10"));
614    engine.add_widget(Box::new(button9), String::from("button9"));
615    engine.add_widget(Box::new(button10), String::from("button10"));
616
617    engine.run(sdl_context, window);
618}

Trait Implementations§

Source§

impl Layout for HorizontalLayout

This is the Layout implementation for the HorizontalLayout manager. This Layout manager will not reposition any objects within the bounds of the Layout until at least 2 objects have been added to the bounds of the Layout.

Source§

fn insert_widget(&mut self, widget_id: i32, widget_position: LayoutPosition)

Adds a widget to the HorizontalLayout managed stack.

Source§

fn append_widget(&mut self, widget_id: i32)

Appends a widget to the HorizontalLayout managed stack.

Source§

fn do_layout(&mut self, _widgets: &[WidgetContainer])

Adjusts the layout of the Widgets managed by this Layout manager. Currently only obeys the spacing in the object. The rest of the padding is not (yet) honored.

Source§

fn set_padding(&mut self, padding: PaddingConstraint)

Changes the PaddingConstraint for this Layout.
Source§

fn get_padding(&self) -> PaddingConstraint

Retrieves the current PaddingConstraint.
Source§

fn needs_layout(&self) -> bool

Indicates whether or not the Layout needs to have do_layout re-run. This is generally needed when the LayoutPosition changes, or when PaddingConstraints change.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.