From 35c75c2e34f6c72e8181e6d28abfbe37d3b261f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Lecrenier?= Date: Mon, 4 Jul 2022 08:21:20 +0200 Subject: [PATCH] Avoid wrapping readers in a BufReader if not necessary --- meilisearch-lib/src/document_formats.rs | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/meilisearch-lib/src/document_formats.rs b/meilisearch-lib/src/document_formats.rs index 2046ea482..a7100cc67 100644 --- a/meilisearch-lib/src/document_formats.rs +++ b/meilisearch-lib/src/document_formats.rs @@ -1,6 +1,6 @@ use std::borrow::Borrow; use std::fmt::{self, Debug, Display}; -use std::io::{self, BufRead, BufReader, Read, Seek, Write}; +use std::io::{self, BufRead, Seek, Write}; use meilisearch_types::error::{Code, ErrorCode}; use meilisearch_types::internal_error; @@ -80,7 +80,7 @@ impl ErrorCode for DocumentFormatError { internal_error!(DocumentFormatError: io::Error); /// Reads CSV from input and write an obkv batch to writer. -pub fn read_csv(input: impl Read, writer: impl Write + Seek) -> Result { +pub fn read_csv(input: impl BufRead, writer: impl Write + Seek) -> Result { let mut builder = DocumentsBatchBuilder::new(writer); let csv = csv::Reader::from_reader(input); @@ -96,11 +96,10 @@ pub fn read_csv(input: impl Read, writer: impl Write + Seek) -> Result { } /// Reads JSON Lines from input and write an obkv batch to writer. -pub fn read_ndjson(input: impl Read, writer: impl Write + Seek) -> Result { +pub fn read_ndjson(mut input: impl BufRead, writer: impl Write + Seek) -> Result { let mut builder = DocumentsBatchBuilder::new(writer); - let mut reader = BufReader::new(input); let mut buf = String::with_capacity(1024); - while reader.read_line(&mut buf)? > 0 { + while input.read_line(&mut buf)? > 0 { builder .append_unparsed_json_object(&buf) .map_err(Into::into) @@ -118,12 +117,11 @@ pub fn read_ndjson(input: impl Read, writer: impl Write + Seek) -> Result } /// Reads JSON from input and write an obkv batch to writer. -pub fn read_json(input: impl Read, writer: impl Write + Seek) -> Result { +pub fn read_json(input: impl BufRead, writer: impl Write + Seek) -> Result { let mut builder = DocumentsBatchBuilder::new(writer); - let reader = BufReader::new(input); builder - .append_json(reader) + .append_json(input) .map_err(|e| (PayloadType::Json, e))?; let count = builder.documents_count();