第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何編寫(xiě)一個(gè)特征綁定以添加兩個(gè)泛型類(lèi)型的引用?

如何編寫(xiě)一個(gè)特征綁定以添加兩個(gè)泛型類(lèi)型的引用?

Git
aluckdog 2019-11-20 14:55:42
我有一個(gè)Fibonacci可以被用作迭代的任何實(shí)現(xiàn)結(jié)構(gòu)One,Zero,Add和Clone。這適用于所有整數(shù)類(lèi)型。我想將此結(jié)構(gòu)用于BigInteger使用a實(shí)現(xiàn)的類(lèi)型,Vec并且調(diào)用clone()起來(lái)很昂貴。我想Add在兩個(gè)引用上使用T它們,然后返回一個(gè)新的T(不進(jìn)行克?。?。為了我的一生,我無(wú)法做出可以編譯的...工作方式:extern crate num;use std::ops::Add;use std::mem;use num::traits::{One, Zero};pub struct Fibonacci<T> {    curr: T,    next: T,}pub fn new<T: One + Zero>() -> Fibonacci<T> {    Fibonacci {        curr: T::zero(),        next: T::one(),    }}impl<'a, T: Clone + Add<T, Output = T>> Iterator for Fibonacci<T> {    type Item = T;    fn next(&mut self) -> Option<T> {        mem::swap(&mut self.next, &mut self.curr);        self.next = self.next.clone() + self.curr.clone();        Some(self.curr.clone())    }}#[test]fn test_fibonacci() {    let first_12 = new::<i64>().take(12).collect::<Vec<_>>();    assert_eq!(vec![1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144], first_12);}期望的:extern crate num;use std::ops::Add;use std::mem;use num::traits::{One, Zero};pub struct Fibonacci<T> {    curr: T,    next: T,}pub fn new<T: One + Zero>() -> Fibonacci<T> {    Fibonacci {        curr: T::zero(),        next: T::one(),    }}impl<'a, T: Clone + 'a> Iterator for Fibonacci<T>where    &'a T: Add<&'a T, Output = T>,{    type Item = T;    fn next(&mut self) -> Option<T> {        mem::swap(&mut self.next, &mut self.curr);        self.next = &self.next + &self.curr;        Some(self.curr.clone())    }}#[test]fn test_fibonacci() {    let first_12 = new::<i64>().take(12).collect::<Vec<_>>();    assert_eq!(vec![1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144], first_12);}
查看完整描述

2 回答

?
一只萌萌小番薯

TA貢獻(xiàn)1795條經(jīng)驗(yàn) 獲得超7個(gè)贊

我的想法是創(chuàng)建一個(gè)狀態(tài)struct來(lái)保存該狀態(tài),然后創(chuàng)建另一個(gè)Iterator struct引用第一個(gè)(&mut)并在其“高級(jí)”時(shí)對(duì)其進(jìn)行變異,以便Iterator可以將引用返回給該State;但我無(wú)法調(diào)整借位。

查看完整回答
反對(duì) 回復(fù) 2019-11-20
  • 2 回答
  • 0 關(guān)注
  • 591 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)