File: README.md

package info (click to toggle)
rust-deb822-derive 0.3.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 108 kB
  • sloc: makefile: 4
file content (61 lines) | stat: -rw-r--r-- 1,263 bytes parent folder | download
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
This crate provides a basic proc-macro for converting a Deb822Paragraph
into a Rust struct and vice versa.

You probably want to use the ``deb822_lossless`` crate instead,
with the ``derive`` feature enabled.

# Example

```rust
use deb822_lossless::Deb822;

#[derive(Deb822)]
struct Foo {
    field1: String,
    field2: Option<String>,
}

let paragraph: deb822::Deb822Paragraph = "field1: value1\nfield2: value2".parse().unwrap();
let foo: Foo = paragraph.into();
```

# Field Formatting Attributes

The derive macros support field formatting attributes to control how fields are serialized:

## `single_line`

Forces the field value to be on a single line.

```rust
#[derive(ToDeb822)]
struct Package {
    #[deb822(field = "Package", single_line)]
    name: String,
}
```

## `multi_line`

Ensures continuation lines start with a space character, following deb822 format conventions.

```rust
#[derive(ToDeb822)]
struct Package {
    #[deb822(field = "Description", multi_line)]
    description: String,
}
```

## `folded`

Strips leading and trailing whitespace from each line and joins them with spaces,
implementing RFC 822 folding behavior.

```rust
#[derive(ToDeb822)]
struct Package {
    #[deb822(field = "Depends", folded)]
    depends: String,
}
```