File: structs.rs

package info (click to toggle)
rust-shrinkwraprs 0.3.0-3
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 164 kB
  • sloc: makefile: 4
file content (42 lines) | stat: -rw-r--r-- 843 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
//! Showing how to use shrinkwrap for different types of structs.

#![cfg(feature = "std")]
#![allow(dead_code)]

#[macro_use] extern crate shrinkwraprs;

#[derive(Shrinkwrap)]
struct Foo(i32);

#[derive(Shrinkwrap)]
struct Bar(i32, #[shrinkwrap(main_field)] String);

#[derive(Shrinkwrap)]
#[shrinkwrap(mutable)]
struct Baz {
  field1: String
}

#[derive(Shrinkwrap)]
struct Quux {
  field1: u32,
  #[shrinkwrap(main_field)] field2: String
}

#[derive(Shrinkwrap)]
#[shrinkwrap(mutable, unsafe_ignore_visibility)]
pub struct MyStruct {
  field1: u32
}

fn is_commercial(b: &Baz) -> bool {
  (**b).contains(".co")
}

fn main() {
  let mut email = Baz { field1: "chiya+snacks@natsumeya.jp".into() };

  println!("is_commercial: {}", is_commercial(&email));
  (*email).push_str(".com");
  println!("is_commercial: {}", is_commercial(&email));
}