Skip to main content

Format

Enum Format 

Source
pub enum Format {
    Json,
    Xml,
}

Variants§

§

Json

§

Xml

Implementations§

Source§

impl Format

Source

pub fn from_path<P: AsRef<Path>>(path: P) -> Option<Format>

Format implied by a file extension; None if unrecognised.

Examples found in repository?
examples/convert_format.rs (line 31)
15fn main() -> ExitCode {
16    let args: Vec<String> = std::env::args().collect();
17    if args.len() != 3 {
18        eprintln!("usage: convert_format <input.(json|xml)> <output.(json|xml)>");
19        return ExitCode::FAILURE;
20    }
21    let (input, output) = (&args[1], &args[2]);
22
23    let text = match std::fs::read_to_string(input) {
24        Ok(t) => t,
25        Err(e) => {
26            eprintln!("cannot read {input}: {e}");
27            return ExitCode::FAILURE;
28        }
29    };
30
31    let in_format = Format::from_path(input).unwrap_or_else(|| Format::detect(&text));
32    let out_format = match Format::from_path(output) {
33        Some(f) => f,
34        None => {
35            eprintln!("cannot infer output format from {output}: use a .json or .xml extension");
36            return ExitCode::FAILURE;
37        }
38    };
39
40    let value = match parse_value(&text, in_format) {
41        Ok(v) => v,
42        Err(e) => {
43            eprintln!("cannot parse {input} as {in_format:?}: {e}");
44            return ExitCode::FAILURE;
45        }
46    };
47
48    // "contracts" is the document element for contract files; it is only
49    // used when writing XML
50    let rendered = render_value(&value, out_format, "contracts");
51    if let Err(e) = std::fs::write(output, rendered) {
52        eprintln!("cannot write {output}: {e}");
53        return ExitCode::FAILURE;
54    }
55    println!("{input} ({in_format:?}) -> {output} ({out_format:?})");
56    ExitCode::SUCCESS
57}
Source

pub fn detect(content: &str) -> Format

Format sniffed from document content: a leading < means XML.

Examples found in repository?
examples/convert_format.rs (line 31)
15fn main() -> ExitCode {
16    let args: Vec<String> = std::env::args().collect();
17    if args.len() != 3 {
18        eprintln!("usage: convert_format <input.(json|xml)> <output.(json|xml)>");
19        return ExitCode::FAILURE;
20    }
21    let (input, output) = (&args[1], &args[2]);
22
23    let text = match std::fs::read_to_string(input) {
24        Ok(t) => t,
25        Err(e) => {
26            eprintln!("cannot read {input}: {e}");
27            return ExitCode::FAILURE;
28        }
29    };
30
31    let in_format = Format::from_path(input).unwrap_or_else(|| Format::detect(&text));
32    let out_format = match Format::from_path(output) {
33        Some(f) => f,
34        None => {
35            eprintln!("cannot infer output format from {output}: use a .json or .xml extension");
36            return ExitCode::FAILURE;
37        }
38    };
39
40    let value = match parse_value(&text, in_format) {
41        Ok(v) => v,
42        Err(e) => {
43            eprintln!("cannot parse {input} as {in_format:?}: {e}");
44            return ExitCode::FAILURE;
45        }
46    };
47
48    // "contracts" is the document element for contract files; it is only
49    // used when writing XML
50    let rendered = render_value(&value, out_format, "contracts");
51    if let Err(e) = std::fs::write(output, rendered) {
52        eprintln!("cannot write {output}: {e}");
53        return ExitCode::FAILURE;
54    }
55    println!("{input} ({in_format:?}) -> {output} ({out_format:?})");
56    ExitCode::SUCCESS
57}
Source

pub fn extension(&self) -> &'static str

Trait Implementations§

Source§

impl Clone for Format

Source§

fn clone(&self) -> Format

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Copy for Format

Source§

impl Debug for Format

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Eq for Format

Source§

impl PartialEq for Format

Source§

fn eq(&self, other: &Format) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for Format

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V