Mark trait objects explicitly with dyn.

This commit is contained in:
KAMADA Ken'ichi 2019-10-21 23:53:43 +09:00
parent 23c2c189da
commit 1533be5a2a
2 changed files with 59 additions and 58 deletions

View File

@ -237,7 +237,7 @@ macro_rules! generate_well_known_tag_constants {
pub name: &'static str,
pub desc: &'static str,
pub default: DefaultValue,
pub dispval: fn(&mut fmt::Write, &Value) -> fmt::Result,
pub dispval: fn(&mut dyn fmt::Write, &Value) -> fmt::Result,
pub unit: Option<&'static [UnitPiece]>,
}
@ -752,7 +752,7 @@ pub fn display_value_as<'a>(value: &'a Value, tag: Tag) -> value::Display<'a> {
}
// Compression (TIFF 0x103)
fn d_compression(w: &mut fmt::Write, value: &Value) -> fmt::Result {
fn d_compression(w: &mut dyn fmt::Write, value: &Value) -> fmt::Result {
let s = match value.get_uint(0) {
Some(1) => "uncompressed",
Some(2) => "Modified Huffman",
@ -764,7 +764,7 @@ fn d_compression(w: &mut fmt::Write, value: &Value) -> fmt::Result {
}
// PhotometricInterpretation (TIFF 0x106)
fn d_photointp(w: &mut fmt::Write, value: &Value) -> fmt::Result {
fn d_photointp(w: &mut dyn fmt::Write, value: &Value) -> fmt::Result {
let s = match value.get_uint(0) {
Some(0) => "white is zero",
Some(1) => "black is zero",
@ -778,7 +778,7 @@ fn d_photointp(w: &mut fmt::Write, value: &Value) -> fmt::Result {
}
// Orientation (TIFF 0x112)
fn d_orientation(w: &mut fmt::Write, value: &Value) -> fmt::Result {
fn d_orientation(w: &mut dyn fmt::Write, value: &Value) -> fmt::Result {
let s = match value.get_uint(0) {
Some(1) => "row 0 at top and column 0 at left",
Some(2) => "row 0 at top and column 0 at right",
@ -794,7 +794,7 @@ fn d_orientation(w: &mut fmt::Write, value: &Value) -> fmt::Result {
}
// PlanarConfiguration (TIFF 0x11c)
fn d_planarcfg(w: &mut fmt::Write, value: &Value) -> fmt::Result {
fn d_planarcfg(w: &mut dyn fmt::Write, value: &Value) -> fmt::Result {
let s = match value.get_uint(0) {
Some(1) => "chunky",
Some(2) => "planar",
@ -804,7 +804,7 @@ fn d_planarcfg(w: &mut fmt::Write, value: &Value) -> fmt::Result {
}
// ResolutionUnit (TIFF 0x128)
fn d_resunit(w: &mut fmt::Write, value: &Value) -> fmt::Result {
fn d_resunit(w: &mut dyn fmt::Write, value: &Value) -> fmt::Result {
let s = match value.get_uint(0) {
Some(1) => "no absolute unit",
Some(2) => "inch",
@ -816,7 +816,7 @@ fn d_resunit(w: &mut fmt::Write, value: &Value) -> fmt::Result {
// DateTime (TIFF 0x132), DateTimeOriginal (Exif 0x9003), and
// DateTimeDigitized (Exif 0x9004)
fn d_datetime(w: &mut fmt::Write, value: &Value) -> fmt::Result {
fn d_datetime(w: &mut dyn fmt::Write, value: &Value) -> fmt::Result {
if let Value::Ascii(ref v) = *value {
if let Some(dt) = v.first() {
if let Ok(dt) = crate::tiff::DateTime::from_ascii(dt) {
@ -828,7 +828,7 @@ fn d_datetime(w: &mut fmt::Write, value: &Value) -> fmt::Result {
}
// YCbCrSubSampling (TIFF 0x212)
fn d_ycbcrsubsamp(w: &mut fmt::Write, value: &Value) -> fmt::Result {
fn d_ycbcrsubsamp(w: &mut dyn fmt::Write, value: &Value) -> fmt::Result {
let horiz = value.get_uint(0).unwrap_or(0);
let vert = value.get_uint(1).unwrap_or(0);
let s = match (horiz, vert) {
@ -847,7 +847,7 @@ fn d_ycbcrsubsamp(w: &mut fmt::Write, value: &Value) -> fmt::Result {
}
// YCbCrPositioning (TIFF 0x213)
fn d_ycbcrpos(w: &mut fmt::Write, value: &Value) -> fmt::Result {
fn d_ycbcrpos(w: &mut dyn fmt::Write, value: &Value) -> fmt::Result {
let s = match value.get_uint(0) {
Some(1) => "centered",
Some(2) => "co-sited",
@ -857,7 +857,7 @@ fn d_ycbcrpos(w: &mut fmt::Write, value: &Value) -> fmt::Result {
}
// ExposureTime (Exif 0x829a)
fn d_exptime(w: &mut fmt::Write, value: &Value) -> fmt::Result {
fn d_exptime(w: &mut dyn fmt::Write, value: &Value) -> fmt::Result {
if let Value::Rational(ref v) = *value {
if let Some(et) = v.first() {
if et.num >= et.denom {
@ -871,7 +871,7 @@ fn d_exptime(w: &mut fmt::Write, value: &Value) -> fmt::Result {
}
// ExposureProgram (Exif 0x8822)
fn d_expprog(w: &mut fmt::Write, value: &Value) -> fmt::Result {
fn d_expprog(w: &mut dyn fmt::Write, value: &Value) -> fmt::Result {
let s = match value.get_uint(0) {
Some(1) => "manual",
Some(2) => "normal program",
@ -887,7 +887,7 @@ fn d_expprog(w: &mut fmt::Write, value: &Value) -> fmt::Result {
}
// SensitivityType (Exif 0x8830)
fn d_sensitivitytype(w: &mut fmt::Write, value: &Value) -> fmt::Result {
fn d_sensitivitytype(w: &mut dyn fmt::Write, value: &Value) -> fmt::Result {
let s = match value.get_uint(0) {
Some(1) => "SOS",
Some(2) => "REI",
@ -902,7 +902,7 @@ fn d_sensitivitytype(w: &mut fmt::Write, value: &Value) -> fmt::Result {
}
// ExifVersion (Exif 0x9000), FlashpixVersion (Exif 0xa000)
fn d_exifver(w: &mut fmt::Write, value: &Value) -> fmt::Result {
fn d_exifver(w: &mut dyn fmt::Write, value: &Value) -> fmt::Result {
if let Value::Undefined(u, _) = *value {
if u.len() == 4 {
if let Ok(major) = atou16(&u[0..2]) {
@ -920,7 +920,7 @@ fn d_exifver(w: &mut fmt::Write, value: &Value) -> fmt::Result {
}
// ComponentsConfiguration (Exif 0x9101)
fn d_cpntcfg(w: &mut fmt::Write, value: &Value) -> fmt::Result {
fn d_cpntcfg(w: &mut dyn fmt::Write, value: &Value) -> fmt::Result {
if let Value::Undefined(u, _) = *value {
for &x in u {
match x {
@ -940,7 +940,7 @@ fn d_cpntcfg(w: &mut fmt::Write, value: &Value) -> fmt::Result {
}
// SubjectDistance (Exif 0x9206)
fn d_subjdist(w: &mut fmt::Write, value: &Value) -> fmt::Result {
fn d_subjdist(w: &mut dyn fmt::Write, value: &Value) -> fmt::Result {
if let Value::Rational(ref v) = *value {
if let Some(dist) = v.first() {
if dist.num == 0 {
@ -954,7 +954,7 @@ fn d_subjdist(w: &mut fmt::Write, value: &Value) -> fmt::Result {
}
// MeteringMode (Exif 0x9207)
fn d_metering(w: &mut fmt::Write, value: &Value) -> fmt::Result {
fn d_metering(w: &mut dyn fmt::Write, value: &Value) -> fmt::Result {
let s = match value.get_uint(0) {
Some(1) => "average",
Some(2) => "center-weighted average",
@ -969,7 +969,7 @@ fn d_metering(w: &mut fmt::Write, value: &Value) -> fmt::Result {
}
// LightSource (Exif 0x9208)
fn d_lightsrc(w: &mut fmt::Write, value: &Value) -> fmt::Result {
fn d_lightsrc(w: &mut dyn fmt::Write, value: &Value) -> fmt::Result {
let s = match value.get_uint(0) {
Some(1) => "daylight",
Some(2) => "fluorescent",
@ -998,7 +998,7 @@ fn d_lightsrc(w: &mut fmt::Write, value: &Value) -> fmt::Result {
}
// Flash (Exif 0x9209)
fn d_flash(w: &mut fmt::Write, value: &Value) -> fmt::Result {
fn d_flash(w: &mut dyn fmt::Write, value: &Value) -> fmt::Result {
const FIRED: &[&str] = &["not fired", "fired"];
const RETURN: &[&str] = &[
", no return light detection function",
@ -1026,7 +1026,7 @@ fn d_flash(w: &mut fmt::Write, value: &Value) -> fmt::Result {
// SubjectArea (Exif 0x9214), SubjectLocation (Exif 0xa214)
// Only (x, y) case is valid for SubjectLocation.
fn d_subjarea(w: &mut fmt::Write, value: &Value) -> fmt::Result {
fn d_subjarea(w: &mut dyn fmt::Write, value: &Value) -> fmt::Result {
if let Some(x) = value.get_uint(0) {
if let Some(y) = value.get_uint(1) {
if let Some(d) = value.get_uint(2) {
@ -1046,7 +1046,7 @@ fn d_subjarea(w: &mut fmt::Write, value: &Value) -> fmt::Result {
// Temperature (Exif 0x9400), Humidity (Exif 0x9401),
// Pressure (Exif 0x9402), WaterDepth (Exif 0x9403),
// Acceleration (Exif 0x9404), CameraElevationAngle (Exif 0x9405)
fn d_optdecimal(w: &mut fmt::Write, value: &Value) -> fmt::Result {
fn d_optdecimal(w: &mut dyn fmt::Write, value: &Value) -> fmt::Result {
match *value {
Value::Rational(ref v) if v.len() > 0 =>
if v[0].denom != 0xffffffff {
@ -1065,7 +1065,7 @@ fn d_optdecimal(w: &mut fmt::Write, value: &Value) -> fmt::Result {
}
// ColorSpace (Exif 0xa001)
fn d_cspace(w: &mut fmt::Write, value: &Value) -> fmt::Result {
fn d_cspace(w: &mut dyn fmt::Write, value: &Value) -> fmt::Result {
let s = match value.get_uint(0) {
Some(1) => "sRGB",
Some(0xffff) => "uncalibrated",
@ -1075,7 +1075,7 @@ fn d_cspace(w: &mut fmt::Write, value: &Value) -> fmt::Result {
}
// SensingMethod (Exif 0xa217)
fn d_sensingmethod(w: &mut fmt::Write, value: &Value) -> fmt::Result {
fn d_sensingmethod(w: &mut dyn fmt::Write, value: &Value) -> fmt::Result {
let s = match value.get_uint(0) {
Some(1) => "not defined",
Some(2) => "one-chip color area sensor",
@ -1090,7 +1090,7 @@ fn d_sensingmethod(w: &mut fmt::Write, value: &Value) -> fmt::Result {
}
// FileSource (Exif 0xa300)
fn d_filesrc(w: &mut fmt::Write, value: &Value) -> fmt::Result {
fn d_filesrc(w: &mut dyn fmt::Write, value: &Value) -> fmt::Result {
let s = match match *value {
Value::Undefined(s, _) => s.first().map(|&x| x),
_ => None,
@ -1105,7 +1105,7 @@ fn d_filesrc(w: &mut fmt::Write, value: &Value) -> fmt::Result {
}
// SceneType (Exif 0xa301)
fn d_scenetype(w: &mut fmt::Write, value: &Value) -> fmt::Result {
fn d_scenetype(w: &mut dyn fmt::Write, value: &Value) -> fmt::Result {
let s = match match *value {
Value::Undefined(s, _) => s.first().map(|&x| x),
_ => None,
@ -1117,7 +1117,7 @@ fn d_scenetype(w: &mut fmt::Write, value: &Value) -> fmt::Result {
}
// CustomRendered (Exif 0xa401)
fn d_customrendered(w: &mut fmt::Write, value: &Value) -> fmt::Result {
fn d_customrendered(w: &mut dyn fmt::Write, value: &Value) -> fmt::Result {
let s = match value.get_uint(0) {
Some(0) => "normal process",
Some(1) => "custom process",
@ -1127,7 +1127,7 @@ fn d_customrendered(w: &mut fmt::Write, value: &Value) -> fmt::Result {
}
// ExposureMode (Exif 0xa402)
fn d_expmode(w: &mut fmt::Write, value: &Value) -> fmt::Result {
fn d_expmode(w: &mut dyn fmt::Write, value: &Value) -> fmt::Result {
let s = match value.get_uint(0) {
Some(0) => "auto exposure",
Some(1) => "manual exposure",
@ -1138,7 +1138,7 @@ fn d_expmode(w: &mut fmt::Write, value: &Value) -> fmt::Result {
}
// WhiteBalance (Exif 0xa403)
fn d_whitebalance(w: &mut fmt::Write, value: &Value) -> fmt::Result {
fn d_whitebalance(w: &mut dyn fmt::Write, value: &Value) -> fmt::Result {
let s = match value.get_uint(0) {
Some(0) => "auto white balance",
Some(1) => "manual white balance",
@ -1148,7 +1148,7 @@ fn d_whitebalance(w: &mut fmt::Write, value: &Value) -> fmt::Result {
}
// DigitalZoomRatio (Exif 0xa404)
fn d_dzoomratio(w: &mut fmt::Write, value: &Value) -> fmt::Result {
fn d_dzoomratio(w: &mut dyn fmt::Write, value: &Value) -> fmt::Result {
if let Value::Rational(ref v) = *value {
if v.len() > 0 && v[0].num == 0 {
return w.write_str("unused");
@ -1158,7 +1158,7 @@ fn d_dzoomratio(w: &mut fmt::Write, value: &Value) -> fmt::Result {
}
// FocalLengthIn35mmFilm (Exif 0xa405)
fn d_focallen35(w: &mut fmt::Write, value: &Value) -> fmt::Result {
fn d_focallen35(w: &mut dyn fmt::Write, value: &Value) -> fmt::Result {
match value.get_uint(0) {
Some(0) => w.write_str("unknown"),
_ => d_default(w, value),
@ -1166,7 +1166,7 @@ fn d_focallen35(w: &mut fmt::Write, value: &Value) -> fmt::Result {
}
// SceneCaptureType (Exif 0xa406)
fn d_scenecaptype(w: &mut fmt::Write, value: &Value) -> fmt::Result {
fn d_scenecaptype(w: &mut dyn fmt::Write, value: &Value) -> fmt::Result {
let s = match value.get_uint(0) {
Some(0) => "standard",
Some(1) => "landscape",
@ -1178,7 +1178,7 @@ fn d_scenecaptype(w: &mut fmt::Write, value: &Value) -> fmt::Result {
}
// GainControl (Exif 0xa407)
fn d_gainctrl(w: &mut fmt::Write, value: &Value) -> fmt::Result {
fn d_gainctrl(w: &mut dyn fmt::Write, value: &Value) -> fmt::Result {
let s = match value.get_uint(0) {
Some(0) => "none",
Some(1) => "low gain up",
@ -1191,7 +1191,7 @@ fn d_gainctrl(w: &mut fmt::Write, value: &Value) -> fmt::Result {
}
// Contrast (Exif 0xa408)
fn d_contrast(w: &mut fmt::Write, value: &Value) -> fmt::Result {
fn d_contrast(w: &mut dyn fmt::Write, value: &Value) -> fmt::Result {
let s = match value.get_uint(0) {
Some(0) => "normal",
Some(1) => "soft",
@ -1202,7 +1202,7 @@ fn d_contrast(w: &mut fmt::Write, value: &Value) -> fmt::Result {
}
// Saturation (Exif 0xa409)
fn d_saturation(w: &mut fmt::Write, value: &Value) -> fmt::Result {
fn d_saturation(w: &mut dyn fmt::Write, value: &Value) -> fmt::Result {
let s = match value.get_uint(0) {
Some(0) => "normal",
Some(1) => "low saturation",
@ -1213,7 +1213,7 @@ fn d_saturation(w: &mut fmt::Write, value: &Value) -> fmt::Result {
}
// Sharpness (Exif 0xa40a)
fn d_sharpness(w: &mut fmt::Write, value: &Value) -> fmt::Result {
fn d_sharpness(w: &mut dyn fmt::Write, value: &Value) -> fmt::Result {
let s = match value.get_uint(0) {
Some(0) => "normal",
Some(1) => "soft",
@ -1224,7 +1224,7 @@ fn d_sharpness(w: &mut fmt::Write, value: &Value) -> fmt::Result {
}
// SubjectDistanceRange (Exif 0xa40c)
fn d_subjdistrange(w: &mut fmt::Write, value: &Value) -> fmt::Result {
fn d_subjdistrange(w: &mut dyn fmt::Write, value: &Value) -> fmt::Result {
let s = match value.get_uint(0) {
Some(1) => "macro",
Some(2) => "close view",
@ -1235,7 +1235,7 @@ fn d_subjdistrange(w: &mut fmt::Write, value: &Value) -> fmt::Result {
}
// LensSpecification (Exif 0xa432)
fn d_lensspec(w: &mut fmt::Write, value: &Value) -> fmt::Result {
fn d_lensspec(w: &mut dyn fmt::Write, value: &Value) -> fmt::Result {
match *value {
Value::Rational(ref v) if v.len() >= 4 =>
// There are several notations: "F1.4" in Japan, "f/1.4"
@ -1248,7 +1248,7 @@ fn d_lensspec(w: &mut fmt::Write, value: &Value) -> fmt::Result {
}
// GPSVersionID (Exif/GPS 0x0)
fn d_gpsver(w: &mut fmt::Write, value: &Value) -> fmt::Result {
fn d_gpsver(w: &mut dyn fmt::Write, value: &Value) -> fmt::Result {
match *value {
Value::Byte(ref v) if v.len() >= 4 =>
write!(w, "{}.{}.{}.{}", v[0], v[1], v[2], v[3]),
@ -1258,7 +1258,7 @@ fn d_gpsver(w: &mut fmt::Write, value: &Value) -> fmt::Result {
// GPSLatitudeRef (Exif/GPS 0x1), GPSLongitudeRef (Exif/GPS 0x3)
// GPSDestLatitudeRef (Exif/GPS 0x13), GPSDestLongitudeRef (Exif/GPS 0x15)
fn d_gpslatlongref(w: &mut fmt::Write, value: &Value) -> fmt::Result {
fn d_gpslatlongref(w: &mut dyn fmt::Write, value: &Value) -> fmt::Result {
match *value {
Value::Ascii(ref v) if (v.len() == 1 && v[0].len() == 1 &&
v[0][0].is_ascii_uppercase()) =>
@ -1269,7 +1269,7 @@ fn d_gpslatlongref(w: &mut fmt::Write, value: &Value) -> fmt::Result {
// GPSLatitude (Exif/GPS 0x2), GPSLongitude (Exif/GPS 0x4),
// GPSDestLatitude (Exif/GPS 0x14), GPSDestLongitude (Exif/GPS 0x16)
fn d_gpsdms(w: &mut fmt::Write, value: &Value) -> fmt::Result {
fn d_gpsdms(w: &mut dyn fmt::Write, value: &Value) -> fmt::Result {
match *value {
Value::Rational(ref v) if v.len() >= 3 =>
write!(w, "{} deg {} min {} sec",
@ -1279,7 +1279,7 @@ fn d_gpsdms(w: &mut fmt::Write, value: &Value) -> fmt::Result {
}
// GPSAltitudeRef (Exif/GPS 0x5)
fn d_gpsaltref(w: &mut fmt::Write, value: &Value) -> fmt::Result {
fn d_gpsaltref(w: &mut dyn fmt::Write, value: &Value) -> fmt::Result {
let s = match value.get_uint(0) {
Some(0) => "above sea level",
Some(1) => "below sea level",
@ -1289,7 +1289,7 @@ fn d_gpsaltref(w: &mut fmt::Write, value: &Value) -> fmt::Result {
}
// GPSTimeStamp (Exif/GPS 0x7)
fn d_gpstimestamp(w: &mut fmt::Write, value: &Value) -> fmt::Result {
fn d_gpstimestamp(w: &mut dyn fmt::Write, value: &Value) -> fmt::Result {
match *value {
Value::Rational(ref v) if v.len() >= 3 => {
let (h, m, s) = (v[0].to_f64(), v[1].to_f64(), v[2].to_f64());
@ -1303,7 +1303,7 @@ fn d_gpstimestamp(w: &mut fmt::Write, value: &Value) -> fmt::Result {
}
// GPSStatus (Exif/GPS 0x9)
fn d_gpsstatus(w: &mut fmt::Write, value: &Value) -> fmt::Result {
fn d_gpsstatus(w: &mut dyn fmt::Write, value: &Value) -> fmt::Result {
let s = match match *value {
Value::Ascii(ref v) => v.first().map(|&x| x),
_ => None,
@ -1316,7 +1316,7 @@ fn d_gpsstatus(w: &mut fmt::Write, value: &Value) -> fmt::Result {
}
// GPSMeasure (Exif/GPS 0xa)
fn d_gpsmeasuremode(w: &mut fmt::Write, value: &Value) -> fmt::Result {
fn d_gpsmeasuremode(w: &mut dyn fmt::Write, value: &Value) -> fmt::Result {
let s = match match *value {
Value::Ascii(ref v) => v.first().map(|&x| x),
_ => None,
@ -1329,7 +1329,7 @@ fn d_gpsmeasuremode(w: &mut fmt::Write, value: &Value) -> fmt::Result {
}
// GPSSpeedRef (Exif/GPS 0xc)
fn d_gpsspeedref(w: &mut fmt::Write, value: &Value) -> fmt::Result {
fn d_gpsspeedref(w: &mut dyn fmt::Write, value: &Value) -> fmt::Result {
let s = match match *value {
Value::Ascii(ref v) => v.first().map(|&x| x),
_ => None,
@ -1344,7 +1344,7 @@ fn d_gpsspeedref(w: &mut fmt::Write, value: &Value) -> fmt::Result {
// GPSTrackRef (Exif/GPS 0xe), GPSImgDirectionRef (Exif/GPS 0x10),
// GPSDestBearingRef (Exif/GPS 0x17)
fn d_gpsdirref(w: &mut fmt::Write, value: &Value) -> fmt::Result {
fn d_gpsdirref(w: &mut dyn fmt::Write, value: &Value) -> fmt::Result {
let s = match match *value {
Value::Ascii(ref v) => v.first().map(|&x| x),
_ => None,
@ -1357,7 +1357,7 @@ fn d_gpsdirref(w: &mut fmt::Write, value: &Value) -> fmt::Result {
}
// GPSDestDistanceRef (Exif/GPS 0x19)
fn d_gpsdistref(w: &mut fmt::Write, value: &Value) -> fmt::Result {
fn d_gpsdistref(w: &mut dyn fmt::Write, value: &Value) -> fmt::Result {
let s = match match *value {
Value::Ascii(ref v) => v.first().map(|&x| x),
_ => None,
@ -1371,7 +1371,7 @@ fn d_gpsdistref(w: &mut fmt::Write, value: &Value) -> fmt::Result {
}
// GPSDateStamp (Exif/GPS 0x1d)
fn d_gpsdatestamp(w: &mut fmt::Write, value: &Value) -> fmt::Result {
fn d_gpsdatestamp(w: &mut dyn fmt::Write, value: &Value) -> fmt::Result {
if let Value::Ascii(ref v) = *value {
if let Some(data) = v.first() {
if data.len() >= 10 && data[4] == b':' && data[7] == b':' {
@ -1390,7 +1390,7 @@ fn d_gpsdatestamp(w: &mut fmt::Write, value: &Value) -> fmt::Result {
}
// GPSDifferential (Exif/GPS 0x1e)
fn d_gpsdifferential(w: &mut fmt::Write, value: &Value) -> fmt::Result {
fn d_gpsdifferential(w: &mut dyn fmt::Write, value: &Value) -> fmt::Result {
let s = match value.get_uint(0) {
Some(0) => "no differential correction",
Some(1) => "differential correction applied",
@ -1399,14 +1399,14 @@ fn d_gpsdifferential(w: &mut fmt::Write, value: &Value) -> fmt::Result {
w.write_str(s)
}
fn d_ascii_in_undef(w: &mut fmt::Write, value: &Value) -> fmt::Result {
fn d_ascii_in_undef(w: &mut dyn fmt::Write, value: &Value) -> fmt::Result {
match *value {
Value::Undefined(s, _) => d_sub_ascii(w, s),
_ => d_default(w, value),
}
}
fn d_decimal(w: &mut fmt::Write, value: &Value) -> fmt::Result {
fn d_decimal(w: &mut dyn fmt::Write, value: &Value) -> fmt::Result {
match *value {
Value::Rational(ref v) => d_sub_comma_f64(w, v),
Value::SRational(ref v) => d_sub_comma_f64(w, v),
@ -1415,12 +1415,13 @@ fn d_decimal(w: &mut fmt::Write, value: &Value) -> fmt::Result {
}
#[inline(never)]
fn d_unknown(w: &mut fmt::Write, value: &Value, prefix: &str) -> fmt::Result {
fn d_unknown(w: &mut dyn fmt::Write, value: &Value, prefix: &str)
-> fmt::Result {
w.write_str(prefix)?;
d_default(w, value)
}
fn d_default(w: &mut fmt::Write, value: &Value) -> fmt::Result {
fn d_default(w: &mut dyn fmt::Write, value: &Value) -> fmt::Result {
match *value {
Value::Byte(ref v) => d_sub_comma(w, v),
Value::Ascii(ref v) => {
@ -1450,7 +1451,7 @@ fn d_default(w: &mut fmt::Write, value: &Value) -> fmt::Result {
}
}
fn d_sub_comma<T>(w: &mut fmt::Write, slice: &[T])
fn d_sub_comma<T>(w: &mut dyn fmt::Write, slice: &[T])
-> fmt::Result where T: fmt::Display {
let mut first = true;
for x in slice {
@ -1463,7 +1464,7 @@ fn d_sub_comma<T>(w: &mut fmt::Write, slice: &[T])
Ok(())
}
fn d_sub_comma_f64<T>(w: &mut fmt::Write, slice: &[T])
fn d_sub_comma_f64<T>(w: &mut dyn fmt::Write, slice: &[T])
-> fmt::Result where T: Copy + Into<f64> {
let mut first = true;
for &x in slice {
@ -1477,7 +1478,7 @@ fn d_sub_comma_f64<T>(w: &mut fmt::Write, slice: &[T])
Ok(())
}
fn d_sub_hex(w: &mut fmt::Write, bytes: &[u8]) -> fmt::Result {
fn d_sub_hex(w: &mut dyn fmt::Write, bytes: &[u8]) -> fmt::Result {
w.write_str("0x")?;
for x in bytes {
write!(w, "{:02x}", x)?;
@ -1485,7 +1486,7 @@ fn d_sub_hex(w: &mut fmt::Write, bytes: &[u8]) -> fmt::Result {
Ok(())
}
fn d_sub_ascii(w: &mut fmt::Write, bytes: &[u8]) -> fmt::Result {
fn d_sub_ascii(w: &mut dyn fmt::Write, bytes: &[u8]) -> fmt::Result {
w.write_char('"')?;
for &c in bytes {
match c {

View File

@ -126,7 +126,7 @@ impl<'a> Value<'a> {
// A struct that wraps std::slice::Iter<'a, u8/u16/u32>.
pub struct UIntIter<'a> {
iter: Box<ExactSizeIterator<Item=u32> + 'a>
iter: Box<dyn ExactSizeIterator<Item=u32> + 'a>
}
impl<'a> Iterator for UIntIter<'a> {
@ -148,7 +148,7 @@ impl<'a> ExactSizeIterator for UIntIter<'a> {}
/// Helper struct for printing a value in a tag-specific format.
#[derive(Copy, Clone)]
pub struct Display<'a> {
pub fmt: fn(&mut fmt::Write, &Value) -> fmt::Result,
pub fmt: fn(&mut dyn fmt::Write, &Value) -> fmt::Result,
pub value: &'a Value<'a>,
}