为什么rust会说“不受约束的类型参数”,而似乎受约束呢?

时间:2019-07-24 08:47:03

标签: generics rust traits

现有两个结构List<DataGridViewRow> selectedRows = (from row in gridView1.Rows.cast<DataGridViewRow>() where Convert.ToBoolean(gridView1.GetRowCellValue[0].Value) == true select row).ToList(); if (MessageBox.Show(string.Format("Do you want to delete {0} rows?", selectedRows.Count), "Confirmation", MessageBoxButtons.YesNo) == DialogResult.Yes) { foreach (DataGridViewRow row in selectedRows) { ... } } S1,还有两个特征S2<T>T1。我想为T2<T>的所有T2<T>的{​​{1}}实现S1

我以为我可以写:

T

但是出现以下错误(playground):

  

错误[E0277]:在编译时无法得知类型AsRef<S2<T1>>的值的大小

当然,目前尚不清楚类型的大小!我想为实现T1的所有类型创建通用实现。所以我尝试了以下方法:

struct S1;
struct S2<T>{t:T}

trait T1 {}
trait T2<T> {}

impl <T: AsRef<S2<T1>>> T2<T> for S1 {}

但这也不编译,但出现以下错误:

  

error [E0207]:类型参数(dyn T1 + 'static)不受impl特性,自身类型或谓词的约束

上面的代码有什么问题,如何解决?

0 个答案:

没有答案