Skip to content

Commit cc46661

Browse files
authored
Merge pull request #7 from awelkie/master
Accept IntoIterators for transfer_multiple
2 parents f9e2beb + 5766619 commit cc46661

File tree

2 files changed

+7
-3
lines changed

2 files changed

+7
-3
lines changed

src/lib.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,9 @@ impl Spidev {
247247
/// Chaining together multiple requests like this can reduce latency
248248
/// and be used for conveniently and efficient implementing some
249249
/// protocols without extra round trips back to userspace.
250-
pub fn transfer_multiple(&self, transfers: &Vec<SpidevTransfer>) -> io::Result<()> {
250+
pub fn transfer_multiple<'a, I>(&self, transfers: I) -> io::Result<()>
251+
where I: IntoIterator<Item = &'a SpidevTransfer>
252+
{
251253
spidevioctl::transfer_multiple(self.devfile.as_raw_fd(), transfers)
252254
}
253255
}

src/spidevioctl.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -240,9 +240,11 @@ pub fn transfer(fd: RawFd, transfer: &mut SpidevTransfer) -> io::Result<()> {
240240
Ok(())
241241
}
242242

243-
pub fn transfer_multiple(fd: RawFd, transfers: &Vec<SpidevTransfer>) -> io::Result<()> {
243+
pub fn transfer_multiple<'a, I>(fd: RawFd, transfers: I) -> io::Result<()>
244+
where I: IntoIterator<Item = &'a SpidevTransfer>
245+
{
244246
// create a boxed slice containing several spi_ioc_transfers
245-
let mut raw_transfers = transfers.iter()
247+
let mut raw_transfers = transfers.into_iter()
246248
.map(|transfer| transfer.as_spi_ioc_transfer())
247249
.collect::<Vec<_>>()
248250
.into_boxed_slice();

0 commit comments

Comments
 (0)