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
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299

pub trait Jump {
    type Previous;
    type Next;
}



/// # semantic-rs
/// 
/// ## 🚀 Automatic crate publishing done right
/// 
pub struct Slide1;
impl Jump for Slide1 {
    type Previous = ();
    type Next = Slide2;
}


/// # Caution: I built a slide system for this
/// 
/// <blockquote class="twitter-tweet" data-lang="en"><p lang="en" dir="ltr">I might have built a very useless slideshow tool on top of rustdoc, generated from code documentation, linked by trait implementations.<br><br>Please don’t use it¹.<a href="https://t.co/96KGthRg3E">https://t.co/96KGthRg3E</a><br><br>¹: however, I will use it once.</p>&mdash; /checkpoints/jer_00001b (@badboy_) <a href="https://twitter.com/badboy_/status/1046378708527976449?ref_src=twsrc%5Etfw">September 30, 2018</a></blockquote>
/// <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
/// 
/// 
pub struct Slide2;
impl Jump for Slide2 {
    type Previous = Slide1;
    type Next = Slide3;
}


/// # Who am I?
/// 
/// ## Firefox Engineer, Rust Community Team, RustFest organizer
/// 
pub struct Slide3;
impl Jump for Slide3 {
    type Previous = Slide2;
    type Next = Slide4;
}


/// # 19,017 crates
/// 
pub struct Slide4;
impl Jump for Slide4 {
    type Previous = Slide3;
    type Next = Slide5;
}


/// # 0.0.1, 0.1.0, 0.1.10+20150618, 0.20130412.3, 0.2.3-alpha0, 1.0.0, 2.7.4
/// 
pub struct Slide5;
impl Jump for Slide5 {
    type Previous = Slide4;
    type Next = Slide6;
}


/// # ?.?.?
/// 
pub struct Slide6;
impl Jump for Slide6 {
    type Previous = Slide5;
    type Next = Slide7;
}


/// # [semver.org](https://semver.org)
/// 
pub struct Slide7;
impl Jump for Slide7 {
    type Previous = Slide6;
    type Next = Slide8;
}


/// # X.Y.Z
/// 
pub struct Slide8;
impl Jump for Slide8 {
    type Previous = Slide7;
    type Next = Slide9;
}


/// # MAJOR.MINOR.PATCH
/// 
pub struct Slide9;
impl Jump for Slide9 {
    type Previous = Slide8;
    type Next = Slide10;
}


/// # PATCH
/// 
/// ## Bug fixes
/// 
pub struct Slide10;
impl Jump for Slide10 {
    type Previous = Slide9;
    type Next = Slide11;
}


/// # MINOR
/// 
/// ## Added functionality in a backwards-compatible way
/// 
pub struct Slide11;
impl Jump for Slide11 {
    type Previous = Slide10;
    type Next = Slide12;
}


/// # MAJOR
/// 
/// ## An incompatible API change
/// 
pub struct Slide12;
impl Jump for Slide12 {
    type Previous = Slide11;
    type Next = Slide13;
}


/// # [RFC 1105 - API Evolution](https://github.com/rust-lang/rfcs/blob/master/text/1105-api-evolution.md)
/// 
pub struct Slide13;
impl Jump for Slide13 {
    type Previous = Slide12;
    type Next = Slide14;
}


/// # Release Day
/// 
pub struct Slide14;
impl Jump for Slide14 {
    type Previous = Slide13;
    type Next = Slide15;
}


/// # Release Day
/// 
/// 1. Commit all code
/// 1. Test it!
/// 1. Document everything properly
/// 1. Write a changelog
/// 1. Bump the version
/// 1. Tag & Publish
/// 
pub struct Slide15;
impl Jump for Slide15 {
    type Previous = Slide14;
    type Next = Slide16;
}


/// # Tests are automated
/// 
/// # Why not the rest?
/// 
pub struct Slide16;
impl Jump for Slide16 {
    type Previous = Slide15;
    type Next = Slide17;
}


/// # [semantic-rs](https://github.com/semantic-rs/semantic-rs)
/// 
/// ## by @schultyy and me
/// 
/// 
/// ### based on `semantic-release`, an npm package by @boennemann
/// 
pub struct Slide17;
impl Jump for Slide17 {
    type Previous = Slide16;
    type Next = Slide18;
}


/// #
/// 
/// ```
/// $ semantic-rs -p ~/code/my-project
/// semantic.rs 🚀
/// Analyzing your repository
/// Current version: 0.1.0
/// Analyzing commits
/// Commits analyzed. Bump would be Minor
/// New version would be: 0.2.0
/// Would write the following Changelog:
/// ====================================
/// ## v0.2.0 (2016-01-27)
/// #### Features
/// - A feature
/// ====================================
/// Would create annotated git tag
/// ```
/// 
pub struct Slide18;
impl Jump for Slide18 {
    type Previous = Slide17;
    type Next = Slide19;
}


/// # Commit message format
/// 
/// ```
/// <type>(<scope>): <subject>
/// 
/// <body>
/// ```
/// 
pub struct Slide19;
impl Jump for Slide19 {
    type Previous = Slide18;
    type Next = Slide20;
}


/// # Commit message format
/// 
/// ```
/// fix: Don't divide by 0
/// ```
/// 
pub struct Slide20;
impl Jump for Slide20 {
    type Previous = Slide19;
    type Next = Slide21;
}


/// # Commit message format
/// 
/// ```
/// feat: Calculate square-root
/// ```
/// 
pub struct Slide21;
impl Jump for Slide21 {
    type Previous = Slide20;
    type Next = Slide22;
}


/// # Commit message format
/// 
/// ```
/// feat: Handle floating-point
/// 
/// BREAKING CHANGE:
///     This removes the handling
///     of 64-bit integers.
///     This old code:
///       mylib::sqrt(4);
///     must be replaced with:
///       mylib::sqrt(4.0);
/// ```
/// 
pub struct Slide22;
impl Jump for Slide22 {
    type Previous = Slide21;
    type Next = Slide23;
}


/// # [semverver](https://github.com/rust-lang-nursery/rust-semverver)
/// 
/// ## Automatic checking for semantic versioning in library crates
/// 
/// 
pub struct Slide23;
impl Jump for Slide23 {
    type Previous = Slide22;
    type Next = Slide24;
}


/// # semantic-rs
/// 
/// ## Code: <https://github.com/semantic-rs/semantic-rs>
/// ## Slides: <https://github.com/badboy/lysbilder/>
pub struct Slide24;
impl Jump for Slide24 {
    type Previous = Slide23;
    type Next = ();
}