【Rust每周一庫】generic-array-長度為範型的靜態數組

2021-01-11 騰訊網

今天是2021年的第一天,大家新的一年也要好好學習Rust呀~

在很多其他語言中,靜態數組雖然是靜態的,但是我們卻可以「給它在運行時中指定一個動態的長度」。但在Rust中由於數組中的N並不是範型,所以我們無法寫出如下的代碼:

structFoo {

data: [i32; N]

}

今天我們介紹的generic-array庫定義了trait 和結構體,這樣我們就可以寫出剛才我們想要的等價結構體了:

structFoo {

data: GenericArray

}

其中對於庫(一個範型的數值系統)中的無符號數,有默認的實現,因此如果我們可以這樣定義一個長度為5的數組

usegeneric_array::typenum::U5;

structFoo {

data: GenericArray

}

fnmain() {

letfoo = Foo::;

}

而基本上就和差不多

usegeneric_array::typenum::U5;

structFoo {

data: GenericArray

}

fnmain() {

letfoo = Foo::;

}

如此一來我們就可以繞開Rust本身的限制,對靜態數組的長度使用範型,讓它動起來~不過其實Rust 2021發行版本據說就要原生支持這一功能了,大家也可以多多關注。結合本次介紹的的原始碼跟一下這個事情~祝大家元旦快樂~

—— 分享新聞,還能獲得積分兌換好禮哦 ——

相關焦點

  • boost.assign庫提供功能類似的generic_list,下面是它的類摘要
    C++11標準引入了初始化列表std::initializer_list,而boost.assign庫則提供功能類似的generic_list,它的類摘要如下:template<classT>class generic_list public:{iterator begin()const;//類似容器的接口
  • Python語言中使用array模塊實現動態數組的操作
    背景對於動態數組諸如創建、插入、刪除、查詢大小等操作,在C/C++語言中,可以使用標準庫中的vector類實現,而在python語言中,也同樣提供了內置的array模塊實現類似的功能。Python中的array類似於列表list,如都可以動態增刪元素,但又有所區別,list中存儲的元素類型可以不一樣,但array中元素類型必須完全一樣。另外,由於list中每個元素同時存儲了其地址即指針(用以標記每個元素的數據類型)和實際的數據,所以,在存儲及操作效率上,array又遠遠高於列表。下面通過例子講解array模塊的常用操作。
  • Sort an Array 數組排序
    Given an array of integers nums, sort the array in ascending
  • PHP函數in_array()如何檢查數組中的值
    PHP函數in_array()如何檢查數組中的值 PHP函數in_array()可以幫助我們輕鬆的完成對數組中某個值的檢查。我們下面就舉一個例子來幫助大家理解PHP函數in_array()的具體應用。
  • 單片機的C語言中數組的用法
    >array[i]=i; //用下標調用數組中的元素}while(1);}數組名是用來表示數組的標識,其實它是數組的首地址,即一個指針。如前幾章所述的相關內容,array[2]與*(array+2)是等效的,不過不能用array++,因為array是常量。上面的程序中的數組是靜態建立的,以下例程來用說明數組的動態建立。
  • Java基礎篇——數組詳解
    Java語言提供了數組(array)的數據結構,可以解決這個問題。數組的概念一個數組是相同數據類型的元素按一定順序排列的集合。使用數組可以將同一類型的數據存儲在連續的內存位置。數組中各元素的類型相同,通過下標的方式來訪問數組中的元素,下標從0開始。
  • 以別墅圖片為例 結合numpy和OpenCV庫 探尋Python中數組組合方式
    前幾篇博文我們介紹了numpy的基礎知識numpy庫學習總結(基礎知識)和numpy中array數組的維度變化Python數據分析必備基本功 numpy數組維度變換的常用方法匯總。今天,我們來梳理一下numpy中數組array的組合操作。
  • Maximum Sum Circular Subarray 環形子數組的最大和
    Here, a circular array means the end of the array connects to the beginning of the array.  (Formally, C[i]=A[i] when 0<=i<A.length, and C[i+A.length]=C[i] when i>=0.)
  • 如何獲取numpy數組的真實地址?如何與ctypes數組共享內存?
    在Python編程中,numpy是一個很好用的擴展程序庫,將其與SciPy庫和 Matplotlib繪圖庫一起使用,可構成一個強大的類似於Matlab的科學計算環境,有助於我們通過 Python 學習數據科學或者機器學習。在Python中,當你定義了一個numpy類型的數組後,它內部元素的真實地址如何獲得呢?
  • Python數據分析之numpy數組全解析
    5.2 bool索引6 numpy中賦值、視圖、深複製什麼是numpy numpy是一個在Python中做科學計算的基礎庫,重在數值計算,也是大部分Python科學計算庫的基礎庫,多用於大型、多維數據上執行數值計算。
  • Numpy的ndarray:一種多維數組對象
    #查看元組各維度大小In[9]:data.shapeOut[9]: (2, 3)#查看數組數據類型的對象In[10]:data.dtypeOut[10]: dtype('float64')創建ndarray創建數組最簡單的辦法就是使用array函數。
  • NumPy的數組對象
    一、創建數組可以有多種方式創建NumPy數組:(1)使用NumPy的array函數從Python列表中創建數組,數組類型由列表中的數據類型確定;(2)使用NumPy的zeros函數創建數組元素全部為0的數組,默認情況下數組元素的類型為float64;(3)使用NumPy的ones函數創建數組元素全部為1的數組,默認情況下數組元素的類型為float64;(4)使用NumPy
  • NumPy基礎教程,帶你玩轉多維數組
    這個軸上有 3 個點,所以我們說它的長度(length)為 3。而如下數組(array)有 2 個軸線,長度同樣為 3。[[ 1., 0., 0.],[ 0., 1., 2.]]NumPy 的數組類(array class)叫做 ndarray,同時我們也常稱其為數組(array)。
  • 一文搞定前端數組方法
    本文總結的前端常見數組的使用方法一、toString()作用:將數組轉成字符串語法:示例代碼如下:二、join()作用:將數組轉成字符串)作用:將數組第一個元素刪除,改變了原數組語法:示例代碼如下六、unshift()作用:將數組開頭添加一個元素,改變了原數組語法:示例代碼如下七、splice()作用:1.能刪除數組中某一段元素2.能增加數組元素3.改變原數組
  • PHP判斷數組為空的具體方式
    PHP判斷數組為空的具體方式 我們可以通過for循環、implode()、count()、in_array('', $arr))、用strlen()等方式來進行PHP判斷數組為空的實現。
  • 如何使用Numpy數組?
    【連續「Python利用Numpy數組進行數據處理(一)」】2.【聚合函數】數學和統計方法[軸和0]可以通過數組上的一組數學函數對整個數組或某個軸向的數組進行統計計算。零長度的數組的sum為0mean算術平均數。
  • Python NumPy面向數組的編程(附詳細代碼)
    NumPy是用於高性能數組實現的最受歡迎的Python庫:數組操作比列表操作快得多,列表操作在大數據世界中可能會擴大運行時的差異。根據librarys.io(截至2020年4月),超過4千的圖書館依賴NumPy,包括最受歡迎的數據科學軟體包Pandas和SciPy。NumPy的不同之處在於它提供的面向數組的編程風格。
  • java之數組作為方法參數的使用
    代碼如下:public class Demo01ArryParam {public static void main(String[] args){int[] array={1,2,34,78};//定義一個方法System.out.println(array);//地址值printArray(array);//(方法的調用)}/** 方法定義的三要素:*
  • NumPy中的廣播:對不同形狀的數組進行操作
    NumPy是用於Python的科學計算庫。 它是數據科學領域中許多其他庫(例如Pandas)的基礎。  在機器學習領域,無論原始數據採用哪種格式,都必須將其轉換為數字數組以進行計算和分析。 因此,需要對陣列進行快速,魯棒和準確的計算,以對數據執行有效的操作。
  • 你真的了解JS中的數組嗎?——數組API的總結
    數組的增刪改查增arr.push(a,b):在數組arr的最後面增加元素a,b,返回變化後的數組長度根據定義,可以自己寫一個push方法arr.unshift(a,b) 在數組arr的首位依次增加a,b