From b8e952150470747b7ef2ebb87a17c1f18f254bda Mon Sep 17 00:00:00 2001 From: Marcus Date: Tue, 5 Mar 2024 16:14:55 -0800 Subject: [PATCH 1/5] parameterize the position value. --- tokio/src/fs/file.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tokio/src/fs/file.rs b/tokio/src/fs/file.rs index 033b2982c7d..33af4c28a37 100644 --- a/tokio/src/fs/file.rs +++ b/tokio/src/fs/file.rs @@ -233,13 +233,14 @@ impl File { /// let std_file = std::fs::File::open("foo.txt").unwrap(); /// let file = tokio::fs::File::from_std(std_file); /// ``` - pub fn from_std(std: StdFile) -> File { + pub fn from_std(mut std: StdFile) -> File { + let pos = std.seek(SeekFrom::Current(0)).unwrap(); File { std: Arc::new(std), inner: Mutex::new(Inner { state: State::Idle(Some(Buf::with_capacity(0))), last_write_err: None, - pos: 0, + pos, }), } } From 964b481019843210a37d9cc1673c0b0be6e8fba7 Mon Sep 17 00:00:00 2001 From: Marcus Date: Tue, 5 Mar 2024 19:55:50 -0800 Subject: [PATCH 2/5] move to &mut self --- tokio/src/fs/file.rs | 2 +- tokio/src/fs/mocks.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tokio/src/fs/file.rs b/tokio/src/fs/file.rs index 33af4c28a37..e7a853de619 100644 --- a/tokio/src/fs/file.rs +++ b/tokio/src/fs/file.rs @@ -234,7 +234,7 @@ impl File { /// let file = tokio::fs::File::from_std(std_file); /// ``` pub fn from_std(mut std: StdFile) -> File { - let pos = std.seek(SeekFrom::Current(0)).unwrap(); + let pos = std.stream_position().unwrap(); File { std: Arc::new(std), inner: Mutex::new(Inner { diff --git a/tokio/src/fs/mocks.rs b/tokio/src/fs/mocks.rs index b718ed54f95..f0c86cbba4b 100644 --- a/tokio/src/fs/mocks.rs +++ b/tokio/src/fs/mocks.rs @@ -65,7 +65,7 @@ impl Read for &'_ MockFile { } } -impl Seek for &'_ MockFile { +impl Seek for MockFile { fn seek(&mut self, pos: SeekFrom) -> io::Result { self.inner_seek(pos) } From 26fa93fe905c624539aab86e324341d182ba1be5 Mon Sep 17 00:00:00 2001 From: Marcus Date: Wed, 6 Mar 2024 23:44:55 -0800 Subject: [PATCH 3/5] revert the change to mocks --- tokio/src/fs/mocks.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tokio/src/fs/mocks.rs b/tokio/src/fs/mocks.rs index f0c86cbba4b..b718ed54f95 100644 --- a/tokio/src/fs/mocks.rs +++ b/tokio/src/fs/mocks.rs @@ -65,7 +65,7 @@ impl Read for &'_ MockFile { } } -impl Seek for MockFile { +impl Seek for &'_ MockFile { fn seek(&mut self, pos: SeekFrom) -> io::Result { self.inner_seek(pos) } From 6f12186c5e5b6432eb8004fcdea0aa2e08189928 Mon Sep 17 00:00:00 2001 From: Marcus Eagan Date: Tue, 19 Mar 2024 07:05:16 -0700 Subject: [PATCH 4/5] Update tokio/src/fs/file.rs ohh, good thought. Thank you. Co-authored-by: Alice Ryhl --- tokio/src/fs/file.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tokio/src/fs/file.rs b/tokio/src/fs/file.rs index e7a853de619..fcc78bd1b73 100644 --- a/tokio/src/fs/file.rs +++ b/tokio/src/fs/file.rs @@ -234,7 +234,7 @@ impl File { /// let file = tokio::fs::File::from_std(std_file); /// ``` pub fn from_std(mut std: StdFile) -> File { - let pos = std.stream_position().unwrap(); + let pos = std.stream_position().unwrap_or(0); File { std: Arc::new(std), inner: Mutex::new(Inner { From 9f760c577f73e0ad3108dd0904e5cd8f7ef1fd79 Mon Sep 17 00:00:00 2001 From: Marcus Date: Tue, 19 Mar 2024 23:55:01 +0000 Subject: [PATCH 5/5] fix a compilation issue. --- tokio/src/fs/mocks.rs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tokio/src/fs/mocks.rs b/tokio/src/fs/mocks.rs index b718ed54f95..8fd4473a4f5 100644 --- a/tokio/src/fs/mocks.rs +++ b/tokio/src/fs/mocks.rs @@ -59,6 +59,12 @@ impl Read for MockFile { } } +impl Seek for MockFile { + fn seek(&mut self, pos: SeekFrom) -> io::Result { + self.inner_seek(pos) + } +} + impl Read for &'_ MockFile { fn read(&mut self, dst: &mut [u8]) -> io::Result { self.inner_read(dst)