summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRadosław Kot <rdkt13@gmail.com>2021-07-31 16:59:05 +0200
committerRadosław Kot <rdkt13@gmail.com>2021-10-23 16:58:41 +0200
commit4775107810cbc7e045f075586e5061ed8aa51398 (patch)
tree3939a4c5e97fed68efbfc4485218b944b99f4502
parentabe7f7624a02261cde994d5128d44c63fe65dd60 (diff)
Satisfy clippy's type_complexity lint
-rw-r--r--src/file/mod.rs2
-rw-r--r--src/file/source/file.rs14
-rw-r--r--src/file/source/mod.rs22
-rw-r--r--src/file/source/string.rs19
4 files changed, 42 insertions, 15 deletions
diff --git a/src/file/mod.rs b/src/file/mod.rs
index 8d5b538..6c1e4c5 100644
--- a/src/file/mod.rs
+++ b/src/file/mod.rs
@@ -123,7 +123,7 @@ where
.resolve(self.format.clone())
.map_err(|err| ConfigError::Foreign(err))
{
- Ok((uri, contents, format)) => (uri, contents, format),
+ Ok(result) => (result.uri, result.content, result.format),
Err(error) => {
if !self.required {
diff --git a/src/file/source/file.rs b/src/file/source/file.rs
index 0feb447..e50b200 100644
--- a/src/file/source/file.rs
+++ b/src/file/source/file.rs
@@ -5,9 +5,9 @@ use std::io::{self, Read};
use std::iter::Iterator;
use std::path::{Path, PathBuf};
-use crate::file::format::ALL_EXTENSIONS;
-use crate::file::{FileExtensions, FileSource};
-use crate::Format;
+use crate::file::{
+ format::ALL_EXTENSIONS, source::FileSourceResult, FileExtensions, FileSource, Format,
+};
/// Describes a file sourced from a file
#[derive(Clone, Debug)]
@@ -98,7 +98,7 @@ where
fn resolve(
&self,
format_hint: Option<F>,
- ) -> Result<(Option<String>, String, Box<dyn Format>), Box<dyn Error + Send + Sync>> {
+ ) -> Result<FileSourceResult, Box<dyn Error + Send + Sync>> {
// Find file
let (filename, format) = self.find_file(format_hint)?;
@@ -114,7 +114,11 @@ where
let mut text = String::new();
file.read_to_string(&mut text)?;
- Ok((Some(uri.to_string_lossy().into_owned()), text, format))
+ Ok(FileSourceResult {
+ uri: Some(uri.to_string_lossy().into_owned()),
+ content: text,
+ format,
+ })
}
}
diff --git a/src/file/source/mod.rs b/src/file/source/mod.rs
index 4a8877b..cd37317 100644
--- a/src/file/source/mod.rs
+++ b/src/file/source/mod.rs
@@ -14,5 +14,25 @@ where
fn resolve(
&self,
format_hint: Option<T>,
- ) -> Result<(Option<String>, String, Box<dyn Format>), Box<dyn Error + Send + Sync>>;
+ ) -> Result<FileSourceResult, Box<dyn Error + Send + Sync>>;
+}
+
+pub struct FileSourceResult {
+ pub(crate) uri: Option<String>,
+ pub(crate) content: String,
+ pub(crate) format: Box<dyn Format>,
+}
+
+impl FileSourceResult {
+ pub fn uri(&self) -> &Option<String> {
+ &self.uri
+ }
+
+ pub fn content(&self) -> &str {
+ self.content.as_str()
+ }
+
+ pub fn format(&self) -> &dyn Format {
+ self.format.as_ref()
+ }
}
diff --git a/src/file/source/string.rs b/src/file/source/string.rs
index 9bec751..700d574 100644
--- a/src/file/source/string.rs
+++ b/src/file/source/string.rs
@@ -1,7 +1,10 @@
use std::error::Error;
-use crate::file::{FileExtensions, FileSource};
-use crate::Format;
+use crate::{
+ file::source::FileSourceResult,
+ file::{FileExtensions, FileSource},
+ Format,
+};
/// Describes a file sourced from a string
#[derive(Clone, Debug)]
@@ -20,11 +23,11 @@ where
fn resolve(
&self,
format_hint: Option<F>,
- ) -> Result<(Option<String>, String, Box<dyn Format>), Box<dyn Error + Send + Sync>> {
- Ok((
- None,
- self.0.clone(),
- Box::new(format_hint.expect("from_str requires a set file format")),
- ))
+ ) -> Result<FileSourceResult, Box<dyn Error + Send + Sync>> {
+ Ok(FileSourceResult {
+ uri: None,
+ content: self.0.clone(),
+ format: Box::new(format_hint.expect("from_str requires a set file format")),
+ })
}
}