pub enum NetrcError {
Io(Error),
FileNotFound(String),
Parse {
message: String,
input: String,
},
DuplicateEntry(String),
NotFound(String),
InsecurePermissions,
Serialize(String),
}Expand description
Error types for the netrc_parser library.
Represents all possible errors that can occur when parsing, reading, or
manipulating .netrc files. Each variant provides specific details about
the failure, such as I/O issues, parsing errors, or invalid file
permissions. Use this enum to handle errors from methods like
crate::Netrc::parse_from_path or crate::Netrc::parse_from_str.
§Examples
Handling a file not found error:
use netrc_parser::{Netrc, NetrcError};
match Netrc::parse_from_path("/nonexistent/.netrc") {
Ok(netrc) => println!("Parsed netrc: {:?}", netrc),
Err(NetrcError::FileNotFound(path)) => println!("File not found: {}", path),
Err(e) => println!("Other error: {}", e),
}Handling a parse error:
use netrc_parser::{Netrc, NetrcError};
match Netrc::parse_from_str("machine login user") {
Ok(netrc) => println!("Parsed netrc: {:?}", netrc),
Err(NetrcError::Parse { message, input }) => {
println!("Parse error: {} in input: {}", message, input);
},
Err(e) => println!("Other error: {}", e),
}Variants§
Io(Error)
An I/O error occurred while reading or writing a .netrc file.
This variant wraps standard I/O errors, such as permission denied or
disk full, but excludes file not found errors (see
NetrcError::FileNotFound). It originates from operations like
std::fs::metadata or std::fs::read_to_string.
§Fields
0: The underlyingstd::io::Error.
§Example
use netrc_parser::{Netrc, NetrcError};
if let Err(NetrcError::Io(e)) = Netrc::parse_from_path("/protected/.netrc") {
println!("I/O error: {}", e);
}FileNotFound(String)
The specified .netrc file was not found.
This error occurs when the file path provided to
crate::Netrc::parse_from_path does not exist. It is distinct
from other I/O errors to allow specific handling of missing files.
§Fields
0: The path to the non-existent file as aString.
§Example
use netrc_parser::{Netrc, NetrcError};
match Netrc::parse_from_path("/nonexistent/.netrc") {
Ok(_) => println!("File parsed"),
Err(NetrcError::FileNotFound(path)) => println!("File not found: {}", path),
Err(e) => println!("Other error: {}", e),
}Parse
A parsing error occurred while processing .netrc content.
This error is returned by crate::Netrc::parse_from_str or
crate::Netrc::parse_from_path when the input cannot be parsed, such
as invalid syntax or missing required fields (e.g., a machine
keyword without a name).
§Fields
message: A description of the parsing error.input: The input string that caused the error.
§Example
use netrc_parser::{Netrc, NetrcError};
if let Err(NetrcError::Parse { message, input }) = Netrc::parse_from_str("machine ") {
println!("Parse error: {} in input: {}", message, input);
}DuplicateEntry(String)
A duplicate machine entry was found in the .netrc content.
This error occurs when the same machine name (or default) appears
multiple times in the input, which is invalid for .netrc files.
§Fields
0: The name of the duplicated machine.
§Example
use netrc_parser::{Netrc, NetrcError};
let input = "machine example.com login user password pass\nmachine example.com login other password pass";
if let Err(NetrcError::DuplicateEntry(name)) = Netrc::parse_from_str(input) {
println!("Duplicate machine: {}", name);
}NotFound(String)
The requested machine was not found in the .netrc data.
This error is returned by crate::Netrc::get or
crate::Netrc::update_machine when the specified machine name
does not exist.
§Fields
0: The name of the missing machine.
§Example
use netrc_parser::{Netrc, NetrcError};
let mut netrc = Netrc::default();
if let Err(NetrcError::NotFound(name)) = netrc.update_machine("example.com", |m| {}) {
println!("Machine not found: {}", name);
}InsecurePermissions
The .netrc file has insecure permissions.
On Unix systems, .netrc files must have permissions set to 0600
(owner read/write only). This error is returned by
crate::Netrc::parse_from_path if the file is readable or writable by
group or others.
§Example
use netrc_parser::{Netrc, NetrcError};
use std::fs;
let path = "/tmp/test_netrc";
fs::write(path, "machine example.com login user password pass").unwrap();
#[cfg(unix)]
std::os::unix::fs::PermissionsExt::set_mode(
&mut fs::metadata(path).unwrap().permissions(),
0o666,
);
if let Err(NetrcError::InsecurePermissions) = Netrc::parse_from_path(path) {
println!("Insecure permissions detected");
}Serialize(String)
A serialization error occurred while converting to JSON or TOML.
This error is returned by crate::Netrc::to_json or
crate::Netrc::to_toml if serialization fails, typically due to
invalid data or internal serializer issues.
§Fields
0: A description of the serialization error.
§Example
use netrc_parser::{Netrc, NetrcError};
let netrc = Netrc::default();
if let Err(NetrcError::Serialize(msg)) = netrc.to_json() {
println!("Serialization error: {}", msg);
}