Skip to content

Commit 939e11f

Browse files
Improve serde feature
Signed-off-by: Patrick José Pereira <patrickelectric@gmail.com>
1 parent 83c644c commit 939e11f

File tree

3 files changed

+34
-37
lines changed

3 files changed

+34
-37
lines changed

Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ readme = "README.md"
1212
[dependencies]
1313
derivative = "1.0.3"
1414
libc = "0.2"
15-
serde_derive = { version = "1.0.104", optional = true }
15+
serde = { version = "1.0.104", features = ["derive"], optional = true }
1616

1717
[features]
1818
no_wrapper = []
1919
static = []
20-
default = ["serde_derive"]
20+
default = ["serde"]

src/lib.rs

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ pub use v4l2::pubconsts as consts;
5050
pub type Result<T> = result::Result<T, Error>;
5151

5252
#[cfg(feature = "serde")]
53-
use serde::Serialize;
53+
extern crate serde;
5454

5555
#[macro_use]
5656
extern crate derivative;
@@ -94,7 +94,7 @@ impl error::Error for Error {
9494
}
9595
}
9696

97-
fn cause(&self) -> Option<&error::Error> {
97+
fn cause(&self) -> Option<&dyn error::Error> {
9898
if let Error::Io(ref err) = *self {
9999
Some(err)
100100
} else {
@@ -109,8 +109,8 @@ impl From<io::Error> for Error {
109109
}
110110
}
111111

112-
#[derive(Debug)]
113-
#[cfg_attr(feature = "serde", derive(Serialize))]
112+
#[derive(Debug, Copy, Clone)]
113+
#[cfg_attr(feature = "serde", derive(serde::Serialize))]
114114
pub struct Config<'a> {
115115
/// The mix of numerator and denominator. v4l2 uses frame intervals instead of frame rates.
116116
/// Default is `(1, 10)`.
@@ -142,7 +142,7 @@ impl<'a> Default for Config<'a> {
142142
}
143143
}
144144

145-
#[cfg_attr(feature = "serde", derive(Serialize))]
145+
#[cfg_attr(feature = "serde", derive(serde::Serialize))]
146146
pub struct FormatInfo {
147147
/// FourCC of format (e.g. `b"H264"`).
148148
pub format: [u8; 4],
@@ -255,7 +255,6 @@ impl fmt::Debug for IntervalInfo {
255255
}
256256

257257
#[derive(Debug)]
258-
#[cfg_attr(feature = "serde", derive(Serialize))]
259258
pub struct Frame {
260259
/// Width and height of the frame.
261260
pub resolution: (u32, u32),
@@ -292,19 +291,21 @@ impl Drop for Frame {
292291
}
293292

294293
#[derive(Debug, PartialEq)]
294+
#[cfg_attr(feature = "serde", derive(serde::Serialize))]
295295
enum State {
296296
Idle,
297297
Streaming,
298298
Aborted,
299299
}
300300

301301
#[derive(Debug)]
302-
#[cfg_attr(feature = "serde", derive(Serialize))]
302+
#[cfg_attr(feature = "serde", derive(serde::Serialize))]
303303
pub struct Camera {
304304
fd: RawFd,
305305
state: State,
306306
resolution: (u32, u32),
307307
format: [u8; 4],
308+
#[cfg_attr(feature = "serde", serde(skip_serializing))]
308309
buffers: Vec<Arc<MappedRegion>>,
309310
}
310311

@@ -712,7 +713,7 @@ impl Drop for Camera {
712713
}
713714

714715
#[derive(Debug)]
715-
#[cfg_attr(feature = "serde", derive(Serialize))]
716+
#[cfg_attr(feature = "serde", derive(serde::Serialize))]
716717
pub struct FormatIter<'a> {
717718
camera: &'a Camera,
718719
index: u32,
@@ -741,7 +742,6 @@ impl<'a> Iterator for FormatIter<'a> {
741742
}
742743

743744
#[derive(Debug)]
744-
#[cfg_attr(feature = "serde", derive(Serialize))]
745745
pub struct ControlIter<'a> {
746746
camera: &'a Camera,
747747
id: u32,
@@ -805,7 +805,7 @@ impl Settable for String {
805805
}
806806

807807
#[derive(Debug, Clone)]
808-
#[cfg_attr(feature = "serde", derive(Serialize))]
808+
#[cfg_attr(feature = "serde", derive(serde::Serialize))]
809809
pub struct Control {
810810
pub id: u32,
811811
pub name: String,
@@ -815,7 +815,7 @@ pub struct Control {
815815
}
816816

817817
#[derive(Debug, Clone)]
818-
#[cfg_attr(feature = "serde", derive(Serialize))]
818+
#[cfg_attr(feature = "serde", derive(serde::Serialize))]
819819
pub enum CtrlData {
820820
Integer {
821821
value: i32,
@@ -862,14 +862,14 @@ pub enum CtrlData {
862862
}
863863

864864
#[derive(Debug, Clone)]
865-
#[cfg_attr(feature = "serde", derive(Serialize))]
865+
#[cfg_attr(feature = "serde", derive(serde::Serialize))]
866866
pub struct CtrlMenuItem {
867867
pub index: u32,
868868
pub name: String,
869869
}
870870

871871
#[derive(Debug, Clone)]
872-
#[cfg_attr(feature = "serde", derive(Serialize))]
872+
#[cfg_attr(feature = "serde", derive(serde::Serialize))]
873873
pub struct CtrlIntMenuItem {
874874
pub index: u32,
875875
pub value: i64,

src/v4l2.rs

Lines changed: 19 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,6 @@ pub fn mmap(length: usize, fd: RawFd, offset: usize) -> io::Result<MappedRegion>
135135

136136
#[derive(Derivative)]
137137
#[derivative(Debug)]
138-
#[cfg_attr(feature = "serde", derive(Serialize))]
139138
#[repr(C)]
140139
pub struct Format {
141140
pub ftype: u32,
@@ -168,7 +167,7 @@ impl Format {
168167
}
169168

170169
#[derive(Debug)]
171-
#[cfg_attr(feature = "serde", derive(Serialize))]
170+
#[cfg_attr(feature = "serde", derive(serde::Serialize))]
172171
#[repr(C)]
173172
pub struct PixFormat {
174173
pub width: u32,
@@ -196,7 +195,7 @@ impl PixFormat {
196195
}
197196

198197
#[derive(Debug)]
199-
#[cfg_attr(feature = "serde", derive(Serialize))]
198+
#[cfg_attr(feature = "serde", derive(serde::Serialize))]
200199
#[repr(C)]
201200
pub struct RequestBuffers {
202201
pub count: u32,
@@ -218,7 +217,6 @@ impl RequestBuffers {
218217

219218
#[derive(Derivative)]
220219
#[derivative(Debug)]
221-
#[cfg_attr(feature = "serde", derive(Serialize))]
222220
#[repr(C)]
223221
pub struct Buffer {
224222
pub index: u32,
@@ -247,7 +245,7 @@ impl Buffer {
247245
}
248246

249247
#[derive(Debug)]
250-
#[cfg_attr(feature = "serde", derive(Serialize))]
248+
#[cfg_attr(feature = "serde", derive(serde::Serialize))]
251249
#[repr(C)]
252250
pub struct TimeCode {
253251
pub ttype: u32,
@@ -260,7 +258,7 @@ pub struct TimeCode {
260258
}
261259

262260
#[derive(Debug)]
263-
#[cfg_attr(feature = "serde", derive(Serialize))]
261+
#[cfg_attr(feature = "serde", derive(serde::Serialize))]
264262
#[repr(C)]
265263
pub struct FmtDesc {
266264
pub index: u32,
@@ -281,7 +279,6 @@ impl FmtDesc {
281279

282280
#[derive(Derivative)]
283281
#[derivative(Debug)]
284-
#[cfg_attr(feature = "serde", derive(Serialize))]
285282
#[repr(C)]
286283
pub struct StreamParm {
287284
pub ptype: u32,
@@ -301,7 +298,7 @@ impl StreamParm {
301298
}
302299

303300
#[derive(Debug)]
304-
#[cfg_attr(feature = "serde", derive(Serialize))]
301+
#[cfg_attr(feature = "serde", derive(serde::Serialize))]
305302
#[repr(C)]
306303
pub struct CaptureParm {
307304
pub capability: u32,
@@ -313,15 +310,15 @@ pub struct CaptureParm {
313310
}
314311

315312
#[derive(Debug)]
316-
#[cfg_attr(feature = "serde", derive(Serialize))]
313+
#[cfg_attr(feature = "serde", derive(serde::Serialize))]
317314
#[repr(C)]
318315
pub struct Fract {
319316
pub numerator: u32,
320317
pub denominator: u32,
321318
}
322319

323320
#[derive(Debug)]
324-
#[cfg_attr(feature = "serde", derive(Serialize))]
321+
#[cfg_attr(feature = "serde", derive(serde::Serialize))]
325322
#[repr(C)]
326323
pub struct Frmsizeenum {
327324
pub index: u32,
@@ -348,15 +345,15 @@ impl Frmsizeenum {
348345
}
349346

350347
#[derive(Debug)]
351-
#[cfg_attr(feature = "serde", derive(Serialize))]
348+
#[cfg_attr(feature = "serde", derive(serde::Serialize))]
352349
#[repr(C)]
353350
pub struct FrmsizeDiscrete {
354351
pub width: u32,
355352
pub height: u32,
356353
}
357354

358355
#[derive(Debug)]
359-
#[cfg_attr(feature = "serde", derive(Serialize))]
356+
#[cfg_attr(feature = "serde", derive(serde::Serialize))]
360357
#[repr(C)]
361358
pub struct FrmsizeStepwise {
362359
pub min_width: u32,
@@ -368,7 +365,7 @@ pub struct FrmsizeStepwise {
368365
}
369366

370367
#[derive(Debug)]
371-
#[cfg_attr(feature = "serde", derive(Serialize))]
368+
#[cfg_attr(feature = "serde", derive(serde::Serialize))]
372369
#[repr(C)]
373370
pub struct Frmivalenum {
374371
pub index: u32,
@@ -399,7 +396,7 @@ impl Frmivalenum {
399396
}
400397

401398
#[derive(Debug)]
402-
#[cfg_attr(feature = "serde", derive(Serialize))]
399+
#[cfg_attr(feature = "serde", derive(serde::Serialize))]
403400
#[repr(C)]
404401
pub struct FrmivalStepwise {
405402
pub min: Fract,
@@ -408,7 +405,7 @@ pub struct FrmivalStepwise {
408405
}
409406

410407
#[derive(Debug)]
411-
#[cfg_attr(feature = "serde", derive(Serialize))]
408+
#[cfg_attr(feature = "serde", derive(serde::Serialize))]
412409
#[repr(C)]
413410
pub struct QueryCtrl {
414411
pub id: u32,
@@ -431,7 +428,7 @@ impl QueryCtrl {
431428
}
432429

433430
#[derive(Debug)]
434-
#[cfg_attr(feature = "serde", derive(Serialize))]
431+
#[cfg_attr(feature = "serde", derive(serde::Serialize))]
435432
#[repr(C)]
436433
pub struct QueryExtCtrl {
437434
pub id: u32,
@@ -459,8 +456,7 @@ impl QueryExtCtrl {
459456
}
460457
}
461458

462-
#[derive(Debug)]
463-
#[cfg_attr(feature = "serde", derive(Serialize))]
459+
#[derive(Debug, Copy, Clone)]
464460
#[repr(C, packed)]
465461
pub struct QueryMenu {
466462
pub id: u32,
@@ -469,6 +465,7 @@ pub struct QueryMenu {
469465
reserved: u32,
470466
}
471467

468+
#[derive(Copy, Clone)]
472469
#[repr(C, packed)]
473470
pub union QueryMenuData {
474471
name: [u8; 32],
@@ -500,7 +497,7 @@ impl QueryMenuData {
500497
}
501498

502499
#[derive(Debug)]
503-
#[cfg_attr(feature = "serde", derive(Serialize))]
500+
#[cfg_attr(feature = "serde", derive(serde::Serialize))]
504501
#[repr(C)]
505502
pub struct Control {
506503
pub id: u32,
@@ -513,8 +510,8 @@ impl Control {
513510
}
514511
}
515512

516-
#[derive(Debug)]
517-
#[cfg_attr(feature = "serde", derive(Serialize))]
513+
#[derive(Debug, Copy, Clone)]
514+
#[cfg_attr(feature = "serde", derive(serde::Serialize))]
518515
#[repr(C, packed)]
519516
pub struct ExtControl {
520517
pub id: u32,
@@ -535,7 +532,7 @@ impl ExtControl {
535532
}
536533

537534
#[derive(Debug)]
538-
#[cfg_attr(feature = "serde", derive(Serialize))]
535+
#[cfg_attr(feature = "serde", derive(serde::Serialize))]
539536
#[repr(C)]
540537
pub struct ExtControls<'a> {
541538
pub ctrl_class: u32,

0 commit comments

Comments
 (0)