当前位置: 首页 > news >正文

可信网站认证多少钱网站推广营销怎么做

可信网站认证多少钱,网站推广营销怎么做,新生活cms下载,dw网页制作使用方法File: rust/compiler/rustc_middle/src/ty/print/mod.rs 在Rust源代码中#xff0c;文件rust/compiler/rustc_middle/src/ty/print/mod.rs的作用是定义了打印类型和其他相关信息的功能。 具体来说#xff0c;该文件中定义了三个trait#xff0c;分别为Printtcx、Pri… File: rust/compiler/rustc_middle/src/ty/print/mod.rs 在Rust源代码中文件rust/compiler/rustc_middle/src/ty/print/mod.rs的作用是定义了打印类型和其他相关信息的功能。 具体来说该文件中定义了三个trait分别为Printtcx、PrintWithColontcx和Printertcx。 Printtcx trait用于定义可以打印类型信息的功能。它有一个方法fn print(self, tcx: TyCtxttcx, printer: mut Printertcx)该方法接受一个类型上下文TyCtxttcx和一个打印器Printertcx并根据打印器的配置将类型信息打印出来。 PrintWithColontcx trait是Printtcx trait的扩展用于定义在类型信息后添加冒号的打印功能。它有一个方法fn print_with_colon(self, tcx: TyCtxttcx, printer: mut Printertcx)与Printtcx trait的方法类似只是在打印类型信息之后添加了一个冒号。 Printertcx trait用于定义打印器的功能。它有一组方法包括打印字符串、打印换行符、打印缩进、设置打印配置等。该trait的实现可以通过这些方法来实现对类型信息的格式化打印。 这些trait的作用是为Rust编译器提供了一种统一的打印机制使得在不同的上下文中可以方便地打印类型和其他相关信息。这对于调试和代码分析非常有用可以帮助开发者更好地理解和分析代码中的类型系统。 File: rust/compiler/rustc_middle/src/ty/normalize_erasing_regions.rs 在Rust编译器的源代码中rust/compiler/rustc_middle/src/ty/normalize_erasing_regions.rs文件的作用是完成类型归一化normalization操作并在擦除区域erasing regions后进行。 具体而言该文件提供了一组trait和相关的类型和函数用于将Rust类型系统中的泛型类型规范化为具体类型。归一化是一种处理泛型类型的过程它将所有泛型参数替换为具体的类型以便进行类型检查和代码生成。擦除区域是一种用于处理生命周期、借用和所有权等特性的方法它将这些特性抽象为区域使得类型系统能够处理它们。 在这个文件中NormalizeAfterErasingRegionsFoldertcx和TryNormalizeAfterErasingRegionsFoldertcx是两个具体的结构体它们都实现了Compiler的Folder trait。Folder是一个用于在遍历抽象语法树AST期间对类型进行转换的trait。这两个结构体分别用于完成归一化操作。 NormalizeAfterErasingRegionsFolder是一个简单的结构体它实现了Folder trait的核心功能。它使用Rust编译器的内部API来执行归一化操作它的主要作用是将类型中的泛型参数替换为具体类型并确保这些类型满足Rust的类型约束。 TryNormalizeAfterErasingRegionsFolder是一个稍微复杂一些的结构体它同样实现了Folder trait。它的主要区别在于它通过使用Result类型来处理可能出现的错误。如果在归一化过程中发生错误它会返回一个包含错误信息的Result值。 NormalizationError是一个枚举类型它定义了可能发生的归一化错误的不同情况。不同的枚举成员代表了不同的错误类型例如无法找到泛型参数的具体类型、类型约束不满足等等。它们用于在归一化过程中发现错误时进行错误处理。 总之normalize_erasing_regions.rs文件中的NormalizeAfterErasingRegionsFolder和TryNormalizeAfterErasingRegionsFolder结构体以及NormalizationError枚举被用于在Rust编译器中完成类型归一化操作。它们是编译器的重要组成部分用于确保泛型类型可以正确地转换为具体类型并满足类型约束。 File: rust/compiler/rustc_middle/src/ty/abstract_const.rs 在Rust源代码中rust/compiler/rustc_middle/src/ty/abstract_const.rs这个文件的作用是定义了抽象常量abstract constant的相关实现用于支持Rust中的常量求值。 首先让我们来讨论Expandertcx这几个结构体的作用。在这个文件中Expandertcx结构体是一个包装了常量求值过程中所需的上下文信息的工具。它提供了一种对常量表达式求值的方式可以用于扩展、计算抽象常量。Expander主要负责管理常量求值的上下文包括处理常量表达式的展开和递归求值。 接下来我们来介绍一下CastKind和NotConstEvaluatable这几个枚举类型的作用。 CastKind枚举类型定义了常量表达式的类型转换操作的不同种类。它包含了诸如整数类型之间的强制转换、浮点数类型之间的转换、整数类型到浮点数类型的转换等等。这个枚举用于标识常量表达式类型转换的具体操作以便在常量求值过程中进行适当的类型转换。 NotConstEvaluatable枚举类型定义了一些常量表达式的求值约束。它包含了一些无法在常量表达式求值过程中进行求值的情况例如存在类型参数、未实现常量评估的特性、无法确定大小等。这个枚举用于标识这些不可求值的情况以便在常量求值过程中进行检查和处理。 总结来说rust/compiler/rustc_middle/src/ty/abstract_const.rs这个文件的作用是实现了Rust中抽象常量的相关功能包括常量求值的上下文管理、常量表达式的展开和递归求值以及常量类型转换和求值约束的处理。 File: rust/compiler/rustc_middle/src/ty/error.rs 在Rust编译器源代码中rust/compiler/rustc_middle/src/ty/error.rs文件的作用是定义各种类型检查错误的结构体和枚举。 该文件中的ExpectedFound 结构体用于表示预期的类型和实际类型之间的差异。它具有两个字段expected和found。expected字段表示预期的类型而found字段表示实际的类型。这个结构体可以用于类型检查阶段当预期的类型和实际的类型不匹配时记录下来以供后续处理。 而TypeErrortcx枚举是一个更复杂的结构它表示类型检查中可能发生的各种错误情况。它包括了多个不同的枚举变体每个变体代表了一种具体的类型错误。这些错误包括但不限于类型不匹配、无法推导类型、函数参数数量不匹配等。每个错误变体都可以携带其他信息例如具体的错误类型、错误位置和错误消息等以便给出更详细的错误信息。 通过定义ExpectedFound 结构体和TypeErrortcx枚举rust/compiler/rustc_middle/src/ty/error.rs文件提供了对类型检查错误的抽象和表示。这样在编译器的类型检查阶段相关的错误可以通过这些结构和枚举进行记录、处理和传递。这对于编译器的错误报告和调试非常重要。 File: rust/compiler/rustc_middle/src/ty/consts.rs 在Rust编译器源代码中rust/compiler/rustc_middle/src/ty/consts.rs文件的作用是定义和实现与常量相关的功能和结构体。 该文件定义了与常量及其类型信息相关的结构体和方法以及常量数据的表示和操作。它被用于编译器的类型系统和常量计算机制为Rust程序中的常量提供类型检查和计算功能。 在该文件中Consttcx结构体是一个用于表示常量的类型并包含了对ConstDatatcx结构体的引用。ConstDatatcx结构体是一个具体的包含了常量数据的结构体其中tcx是一个表示生命周期的泛型参数。 Consttcx结构体的作用是提供常量的类型信息和访问常量数据的能力。它可以表示常量的类型和值并提供对常量数据进行查询和操作的方法。通过与ConstDatatcx结构体的关联Consttcx可以访问常量所包含的具体数据。这样编译器可以使用Consttcx结构体进行类型检查和常量计算。 总结来说consts.rs文件定义了与常量相关的结构体和方法提供了常量类型检查和计算的功能。通过Consttcx和ConstDatatcx结构体编译器可以表示和处理常量信息。 File: rust/compiler/rustc_middle/src/ty/closure.rs 文件 closure.rs 包含了与闭包有关的类型和函数定义主要负责闭包的类型和捕获信息的表示和处理。 以下是几个主要类型的作用 UpvarPath表示闭包中捕获变量的路径。当闭包捕获外部变量时它会记录该变量在闭包环境中的路径以便在闭包使用变量时能够正确访问。 UpvarId表示闭包捕获的变量的标识符。每个捕获的变量都有一个唯一的UpvarId用于在闭包的环境中标识该变量。 CapturedPlacetcx表示闭包中捕获变量的位置。它用于记录闭包捕获变量的内存位置以便在闭包调用时对捕获变量进行正确的访问。 ClosureTypeInfotcx表示闭包的类型信息。它包含了闭包所捕获的变量的类型、签名和调用约定等信息用于在编译时生成闭包的实现代码。 CaptureInfo表示闭包捕获变量的信息。它记录了闭包中每个捕获变量的类型、位置、是否可变等信息用于闭包的类型检查和实现代码生成。 以下是几个主要枚举类型的作用 UpvarCapture表示闭包捕获变量的方式。它可以是按值或按引用捕获变量在编译时确定捕获方式以便生成正确的闭包实现代码。 ClosureKind表示闭包的类型。它可以是函数闭包、函数指针闭包或即时闭包等。 BorrowKind表示闭包捕获变量的借用类型。它可以是共享借用、可变借用或所有权等。 这些类型和枚举在闭包的类型检查、捕获变量的表示和内存操作等方面发挥着重要的作用。它们是 Rust 编译器中用于处理闭包的关键组成部分。 File: rust/compiler/rustc_middle/src/ty/binding.rs 在Rust源代码中rust/compiler/rustc_middle/src/ty/binding.rs文件的作用是定义了与类型绑定相关的结构体和枚举。 该文件中定义了一个名为BindingSite的结构体用于表示类型绑定的位置。它包含一个绑定的标识符和绑定的类型。 同时该文件还定义了一个枚举类型BindingMode用于表示类型绑定的模式。BindingMode枚举有三个成员 ByValue - 表示以值的方式进行类型绑定。对于具体类型Concrete来说这意味着直接使用该类型进行绑定。对于通用类型来说这意味着它被当作通用参数GenericParam进行绑定。 ByRef - 表示以引用的方式进行类型绑定。这意味着绑定的类型必须是一个共享引用Shared或可变引用Mut。 Infer - 表示由编译器推断类型绑定。这在某些上下文中非常有用例如在使用类型推断时。 上述的BindingMode枚举提供了不同的方式来进行类型绑定用户可以根据需求选择不同的模式。 总结起来rust/compiler/rustc_middle/src/ty/binding.rs文件的作用是定义了与类型绑定相关的结构体和枚举同时提供了不同的绑定模式供用户选择。 File: rust/compiler/rustc_middle/src/ty/opaque_types.rs rust/compiler/rustc_middle/src/ty/opaque_types.rs 这个文件的作用是为 Rust 编译器提供了支持类型模糊的功能。在 Rust 中不允许在函数签名或结构体定义中使用未知类型。然而有时候需要声明一个函数或结构体它的具体类型在编译时期是未知的这就需要使用到了 opaque types模糊类型。 这个文件中的核心结构体是 ReverseMapper它负责将在编译时期推导出的具体类型映射回其对应的模糊类型。这个结构体是一个泛型使用了类型参数 tcx 来表示编译时期的上下文。 ReverseMapper 结构体中有下面几个重要的成员 opaque_types: 这是一个存储模糊类型信息的哈希表用于将模糊类型ID映射回模糊类型的具体信息。 reverse_opaque_map: 这是一个存储模糊类型和其对应类型ID的哈希表用于根据模糊类型获取类型ID。 tcx: 这是一个与 tcx 相关联的生命周期参数用于表示编译时期的上下文。 这些成员一起工作来实现逆向映射的功能即根据类型ID查找模糊类型并将具体类型映射回模糊类型。 ReverseMapper 还有一些方法用于处理类型映射和类型索引的更新、获取特定模糊类型的具体信息等。 总而言之rust/compiler/rustc_middle/src/ty/opaque_types.rs 这个文件在 Rust 编译器中实现了对模糊类型的支持。ReverseMapper 结构体用于在编译时期推导出的具体类型和模糊类型之间建立映射以实现类型模糊的功能和逆向映射。 File: rust/compiler/rustc_middle/src/ty/erase_regions.rs 在Rust中这个文件的作用是实现了一个用于擦除所有ty类型中的regions区域的访问器。擦除regions的过程是为了移除和处理所有和lifetime生命周期相关的信息从而得到一个更简化的类型。 这个文件中定义了一个叫做RegionEraserVisitortcx的结构体它实现了Visitor trait用于遍历和访问类型系统中的所有类型并对其中的region信息进行处理。下面是RegionEraserVisitortcx结构体中几个重要字段及其作用 cx: TyCtxttcx指向当前的TyCtxt类型上下文的引用用于访问和操作类型系统中的各种信息。 infcx: a InferCtxta, tcx指向一个InferCtxt推理上下文的引用用于访问和操作类型推理中的各种信息。 live_regions: a LivenessValues指向一个LivenessValues的引用用于访问和操作生命周期信息。 tables: a TypeckTablestcx指向一个TypeckTables的引用用于访问和操作类型检查的各种表格信息。 RegionEraserVisitortcx结构体中定义了多个辅助方法用于处理不同类型的节点。例如visit_ty方法用于处理类型节点在该方法中会调用cx.type_of方法获取类型的实际类型并调用cx.tcx.erase_regions方法擦除类型中的所有region。同时还有visit_region方法用于处理region节点在该方法中会调用live_regions.region_value方法获取region的值。 总而言之RegionEraserVisitortcx结构体通过遍历和访问类型系统中的各种节点调用相关的方法来实现对类型中region的擦除。这一过程是为了在某些场景下简化类型去除生命周期相关的信息以便进行后续的处理和分析。 File: rust/compiler/rustc_middle/src/ty/assoc.rs 在Rust编译器源代码中rust/compiler/rustc_middle/src/ty/assoc.rs文件起着定义关联项associated item和关联项容器associated item container的作用。关联项是与特定类型关联的函数、常量、类型等实体而关联项容器则是拥有这些关联项的类型。 AssocItem和AssocItems是定义关联项的结构体。AssocItem结构体表示一个具体的关联项包含关于该项的名称、类型、泛型参数等信息。AssocItems结构体则是关联项的集合它存储了所有的关联项。 AssocItemContainer和AssocKind是定义关联项容器的枚举类型。AssocItemContainer枚举类型表示关联项容器的不同种类例如结构体、枚举等。AssocKind枚举类型表示关联项的不同种类例如函数、常量、类型等。 通过这些结构体和枚举类型的定义编译器可以通过访问关联项容器了解和操作类型的关联项。这些关联项可以通过特定的语法在类型中进行访问类似于面向对象编程中的成员访问。 总结起来rust/compiler/rustc_middle/src/ty/assoc.rs文件定义了关联项和关联项容器的相关结构体和枚举类型使得Rust编译器能够了解和操作与特定类型相关联的函数、常量、类型等实体。 File: rust/compiler/rustc_middle/src/ty/cast.rs 在Rust源代码中rustc_middle/src/ty/cast.rs文件的作用是实现类型转换相关的逻辑。该文件定义了一些枚举类型和函数用于解决Rust程序中的类型转换问题。 首先让我们来介绍一下IntTy枚举。该枚举定义了不同整数类型的变体包括Signed和Unsigned两种标记。Rust中的整数类型有不同的位数和有无符号的区分IntTy的变体实际上对应了Rust的不同整数类型用于在类型转换时指定目标类型。 接下来我们来看一下CastTytcx枚举。该枚举定义了不同的转换类型包括原始指针、引用、整数、浮点数、字符、函数指针等。这些转换类型用于表示Rust程序中不同的类型转换场景。 最后我们来介绍一下CastKind枚举。该枚举定义了类型转换的几种操作包括整数扩展、整数截断、浮点转整数、指针类型转换等。CastKind的变体用于标识不同的类型转换操作以便在类型转换时选择正确的转换逻辑。 cast.rs文件中还定义了一些辅助函数用于实现类型转换的逻辑。例如有一个函数叫做is_suitable_int_ty用于判断一个整数类型是否适合用于类型转换。还有一个函数叫做from_integer用于将一个整数类型转换为另一种整数类型。 总的来说cast.rs文件是Rust编译器中的一个重要模块用于处理类型转换的逻辑。它定义了一些枚举类型和函数用于表示不同的类型转换场景并提供了相应的转换逻辑。这些逻辑在编译器的类型推导和类型检查阶段起到了重要的作用。 File: rust/compiler/rustc_middle/src/ty/adjustment.rs 在Rust中rustc_middle/src/ty/adjustment.rs文件的作用是定义了与类型调整Type Adjustment有关的结构体和枚举。 Adjustmenttcx这个结构体用于表示类型调整的信息。它包含了三种可能的类型调整Deref解引用调整、Borrow借用调整和CustomCoerceUnsized自定义不可调整。每种类型调整都有相应的数据。 OverloadedDereftcx这个结构体用于表示重载的解引用操作符的信息。它包含了重载解引用函数的引用以及解引用后的类型。 CoerceUnsizedInfo这个结构体用于表示自定义不可调整的信息。它包含了源类型和目标类型的信息。 接下来是一些枚举类型 PointerCoercion这个枚举用于表示指针类型的调整方式。它有三个可能的值NoAdjustment无调整、MutToConstPointer可变指针到常量指针的调整和 Unsize(Function)表示通过特定函数进行的指针调整。 Adjusttcx这个枚举用于表示类型调整的具体方式。它有以下几个可能的值NeverToAny从Never类型到任意类型的调整、Pointer(PointerCast)指针类型的调整方式、Deref解引用调整和Borrow借用调整。 AllowTwoPhase这个枚举用于表示是否允许两阶段借用调整Two-Phase Borrows Adjustment即借用检查中的特殊类型调整。 AutoBorrowMutability这个枚举用于表示自动借用的可变性信息。它有以下几个可能的值MutMutable可变借用、MutImmutable不可变借用和 NotApplicable不适用。 AutoBorrowtcx这个枚举用于表示自动借用的具体方式。它有以下几个可能的值Ref借用引用、RawPtr原始指针借用和 Fn函数借用。 CustomCoerceUnsized这个枚举用于表示自定义的不可调整方式。它有一个关联类型用于存储自定义不可调整的信息。 这些结构体和枚举的目的是为了在静态类型系统中处理类型调整的问题包括解引用、借用和自定义的不可调整等情况。它们提供了一种灵活的方式来处理不同类型之间的转换和调整。 File: rust/compiler/rustc_middle/src/ty/fold.rs 文件rust/compiler/rustc_middle/src/ty/fold.rs的作用是实现Rust中的fold操作即对泛型类型进行遍历和转换的过程。在Rust中一个类型可能包含泛型参数而泛型参数可以是各种不同的类型包括基本类型、结构体、枚举等。fold操作就是对这些泛型参数进行遍历和转换的过程。 文件中定义了一系列struct和trait包括BottomUpFolder、RegionFolder、FnMutDelegate、BoundVarReplacer、Anonymize和Shifter等。这些struct和trait的作用如下 BottomUpFolder泛型类型的底部向上的遍历和转换。它实现了Folder trait并提供了对泛型参数的遍历和转换的方法。 RegionFolder针对泛型类型中的Region泛型参数的遍历和转换。它实现了RegionVisitor trait并提供了对Region泛型参数的遍历和转换的方法。 FnMutDelegate提供了一个可变闭包的代理用于处理fold操作中的具体处理逻辑。 BoundVarReplacer用于替换泛型类型中的Bound泛型参数的具体值。它实现了TypeFolder和RegionFolder trait并提供了对Bound泛型参数的遍历和转换的方法。 Anonymize用于将泛型类型中的命名类型参数替换为匿名类型参数。它实现了TypeFolder和RegionFolder trait并提供了对命名类型参数的遍历和转换的方法。 Shifter用于将泛型类型中的定位类型参数进行偏移操作。它实现了TypeFolder和RegionFolder trait并提供了对定位类型参数的遍历和转换的方法。 至于BoundVarReplacerDelegate trait它定义了在BoundVarReplacer中用到的一些具体实现方法。BoundVarReplacerDelegate提供了泛型参数替换的具体逻辑用于在fold操作中具体地处理Bound泛型参数的替换。这个trait可以根据实际需要进行定制和实现以满足具体的替换要求。 总的来说文件rust/compiler/rustc_middle/src/ty/fold.rs提供了一系列用于对泛型类型进行遍历和转换的struct和trait。开发者可以使用这些struct和trait来实现对Rust代码中的泛型类型的遍历、转换和修改从而满足具体的业务需求。 File: rust/compiler/rustc_middle/src/ty/flags.rs 在Rust源代码中rust/compiler/rustc_middle/src/ty/flags.rs文件主要用于定义和管理类型相关的标志位。该文件包含了一些结构体和枚举用于表示类型的不同属性和特征。 FlagComputation结构体在flags.rs文件中定义了几个不同的结构体每个结构体都负责计算和管理特定类型的标志位。这些结构体的作用如下 TyCtxtAt此结构体用于计算类型上下文的标志位。 ParamEnvParamEnv结构体用于计算参数环境的标志位。它提供了一个评估类型参数的环境并计算相关的标志位。 TypeFlags此结构体用于存储类型的标志位。它包含了丰富的属性和标志以表示类型的不同特征如是否可复制、是否作为引用类型等。 PlaceFlagsPlaceFlags结构体用于管理变量和表达式的标志位。它提供了一种确定变量或表达式是什么类型的方法并计算相关的标志位。 TraitFlagsTraitFlags结构体用于表示特性的标志位。它包含了一些用于评估特性特征的方法并计算相关的标志位。 这些结构体的作用是计算和管理类型的标志位以及确定类型的不同特征和属性。它们在Rust编译器中起到了重要的作用为类型检查和语法分析提供了必要的信息和功能。 File: rust/compiler/rustc_middle/src/ty/structural_impls.rs rust/compiler/rustc_middle/src/ty/structural_impls.rs这个文件的作用是实现了Rust编译器的类型系统中的结构类型的相关逻辑。 在Rust中结构类型是指在逻辑上可以由其他类型表示的类型而不需要依赖于具体的实现。Rust编译器需要能够判断两个类型是否相等包括结构类型的判断。structural_impls.rs文件定义了处理结构类型的逻辑代码包括判断两个结构类型是否相等、处理结构类型的成员等。 在structural_impls.rs文件中主要有以下几个主要功能 判断结构类型的相等性该文件中定义了函数structural_same_types来判断两个结构类型是否相等。这个函数会根据结构类型的各个成员来进行比较检查它们是否有相同的字段、方法等。对于复杂的结构类型编译器会递归地比较其所有成员。 实现结构类型的哈希为了能够在Rust编译器中使用结构类型作为哈希键该文件中定义了structural_hash函数用于为结构类型生成哈希值。这个函数同样会根据结构类型的成员来计算哈希值确保结构类型的唯一性。 处理结构类型的成员structural_fields函数用于获取结构类型的字段structural_methods函数用于获取结构类型的方法。这些函数包括对结构类型的成员的遍历和处理逻辑用于进行后续的操作如代码生成、类型检查等。 总之rust/compiler/rustc_middle/src/ty/structural_impls.rs文件扮演了一个关键角色它实现了Rust编译器对结构类型的处理逻辑包括判断结构类型的相等性、哈希、获取成员等。这些功能对于类型系统的正确性判断、代码生成、类型检查等环节至关重要。 File: rust/compiler/rustc_middle/src/ty/parameterized.rs 在Rust编译器源代码中rust/compiler/rustc_middle/src/ty/parameterized.rs这个文件的作用是定义了与参数化类型相关的类型和trait的实现。 具体来说这个文件定义了名为ParameterizedDefId的结构体它代表了一个参数化的定义即一个具有参数化类型的类型、函数或方法。ParameterizedDefId包含一个DefId用于表示具体的定义以及一组泛型参数。 接下来这个文件定义了名为ParameterEnvironment的结构体它代表了一个参数化定义在编译期间的环境。ParameterEnvironment包含了一个指向参数化定义的DefId以及一个TyCtxt的引用用于访问编译器的类型上下文TyCtxt是Rust编译器的类型检查的核心。 在这个文件中还定义了一系列trait即ParameterizedOverTcx、ParameterizedData, ParameterLike, 和 WithConstness。这些trait提供了对参数化定义和参数化环境的操作和访问的接口。下面对这些trait进行详细介绍 ParameterizedOverTcx定义了一个参数化类型在给定TyCtxt的上下文中的行为。它包含了一系列关联类型和方法用于访问和操作参数化类型的定义和环境。 ParameterizedData表示一个参数化定义的数据。它是ParameterizedOverTcx的一个子trait并且定义了用于获取参数化定义的数据的方法。 ParameterLike表示一个参数化定义的参数。它是ParameterizedOverTcx的一个子trait并且定义了用于访问参数化定义的参数的方法。 WithConstness表示一个参数化定义的常量属性。它是ParameterizedOverTcx的一个子trait并且定义了用于获取和设置参数化定义的常量属性的方法。 这些trait提供了一套统一的接口以便在Rust编译器中处理和操作参数化类型的定义和环境。通过实现这些trait可以在编译过程中对参数化类型进行必要的操作并进行类型检查和类型推导等工作。 File: rust/compiler/rustc_middle/src/ty/consts/int.rs 在Rust编译器(rustc)中rust/compiler/rustc_middle/src/ty/consts/int.rs这个文件的作用是定义和处理整型常量。 该文件中包含了三个重要的结构体ConstIntScalarIntCharTryFromScalarInt。下面分别介绍它们的作用 ConstInt 结构体定义了一个用于表示整型常量的结构体。它包含了常量的值以及类型可以通过不同的方法来创建和操作整型常量。 ScalarInt 结构体是 ConstInt 的一个实现用于处理具有标量表示用位模式表示的整型常量。ScalarInt 结构体包含了常见的整数运算操作如加法、减法、乘法、除法、位操作等。它还包含了用于比较和判断相等性的方法以及一些转换方法。 CharTryFromScalarInt 结构体是 ScalarInt 的一个实现专门用于处理字符常量。它提供了一些特殊的方法用于将标量整型转换为字符以及将字符转换为标量整型。 总结来说rust/compiler/rustc_middle/src/ty/consts/int.rs文件定义了用于处理整型常量的结构体和相关的方法。ConstInt和ScalarInt结构体提供了对整型常量进行基本的数学计算和比较操作的方法而CharTryFromScalarInt结构体则专门用于处理字符常量的转换。 File: rust/compiler/rustc_middle/src/ty/consts/kind.rs 在Rust源代码中rust/compiler/rustc_middle/src/ty/consts/kind.rs文件的作用是定义常量的类型和表达式的结构。 这个文件中定义了几个重要的结构体和枚举类型。其中UnevaluatedConsttcx结构体表示未求值的常量Exprtcx表示常量表达式InferConsttcx表示推断的常量。 UnevaluatedConsttcx结构体用于表示尚未求值的常量。这个结构体包含了一个类型为tcx ty::Consttcx的字段用于存储待求值的常量。UnevaluatedConst结构体的作用是在类型检查过程中暂时存储待求值的常量然后在后续的求值过程中对其进行求值。 Exprtcx枚举类型用于表示常量表达式。该枚举类型有多种变体包括常量整数、浮点数、字面量字符串等。每个变体都包含了相应的值以存储具体的常量表达式。 InferConsttcx枚举类型用于表示推断的常量。该枚举类型有多种变体包括未解决的类型参数、上下文中无法求值的常量等。每个变体都包含了相应的值以存储具体的推断常量。 通过使用这些结构体和枚举类型rust/compiler/rustc_middle/src/ty/consts/kind.rs文件提供了对常量的建模和处理功能以支持Rust编译器中的类型推断和常量求值等操作。 File: rust/compiler/rustc_middle/src/ty/consts/valtree.rs 在Rust中rust/compiler/rustc_middle/src/ty/consts/valtree.rs 文件是编译器类型系统Type System的一部分。它包含了 ValTreetcx 这个枚举类型以及与之相关的结构体和方法。 ValTreetcx 这个枚举类型定义了三种可能的值类型Value, Derived和Constant。它们分别有不同的作用 Value 表示一个具体的值它可以是一个整数、一个浮点数、一个指针或者其他基本数据类型。这些值是不可变的并且可以直接从源代码解析中获取。 Derived 表示一个派生值它是通过对其他值进行运算或应用某种转换规则得到的。这些派生值在编译过程中动态计算生成。它可能包含一个引用指向计算过程中所参与的其他值。 Constant 表示一个编译时常量通常是由编译器或开发者在编译期间明确指定的值。常量在程序执行时是不会发生改变的。 ValTreetcx 适用于类型系统中需要使用具体值和常量的场景例如类型检查、类型推断、表达式计算等。它通过枚举的方式将不同类型的值包装起来方便进行统一的处理和访问。 ValTreetcx 和 Value、Derived、Constant 的定义以及相关的方法和结构体一起构成了 Rust 编译器在类型系统处理过程中对不同值的表示、操作和处理的基础。这个文件的作用是提供了对值类型进行建模和处理的工具使得编译器可以有效地进行类型推断、常量传播以及其他类型相关的工作。 File: rust/compiler/rustc_middle/src/ty/mod.rs 在Rust源代码中rust/compiler/rustc_middle/src/ty/mod.rs文件的作用是定义了Rust编译器的类型系统Type System的核心功能。 该文件中包含了许多重要的结构体、枚举和特征在编译器中起到了不同的作用。下面对其中提到的一些关键结构进行详细介绍 ResolverOutputs一个包含解析器输出的结构体用于存储解析器的最终结果。 ResolverGlobalCtxt全局上下文结构体包含解析器运行时的所有信息和状态。 ResolverAstLowering用于将ASTAbstract Syntax Tree降级为HIRHigh-level Intermediate Representation的结构。 MainDefinition表示函数或方法的主要定义包括相关的参数、返回类型等信息。 ImplHeadertcx表示实现impl声明的头部信息包含了实现的类型和相关约束条件。 ClosureSizeProfileDatatcx记录闭包的大小信息的结构体。 CrateVariancesMaptcx存储了模块的Variance变化信息用于泛型能力检查。 CReaderCacheKey缓存RustC的读取器。 Tytcx表示Rust编译器中的类型具体化为Internedtcx, TyKindtcx。 Predicatetcx用于表示Rust编译器中的谓词Predicate类型具体化为Clausetcx。 Clausetcx表示一个子句Clause由谓词Predicate组成。 CratePredicatesMaptcx表示crate中定义的谓词的映射。 TraitPredicatetcx表示一个特征谓词的结构体。 OutlivesPredicateA, B表示类型A的生命周期至少与类型B的生命周期相同。 SubtypePredicatetcx表示一个子类型谓词的结构。 CoercePredicatetcx表示一个强制转换的谓词。 Termtcx表示一个Rust类型的术语Term。 ProjectionPredicatetcx表示一个投影的谓词。 InstantiatedPredicatestcx表示实例化的谓词的结构体。 OpaqueTypeKeytcx表示一个不透明类型的键。 OpaqueHiddenTypetcx表示不透明类型的隐藏部分。 PlaceholderT表示一个占位符的结构体。 BoundConsttcx表示常量的界限Bound。 ParamEnvtcx表示参数环境Parameter Environment。 ParamTag表示参数的标签。 ParamEnvAndtcx, T表示参数环境和其他类型的元组结构。 Destructor表示一个析构器Destructor。 VariantFlags、VariantDef、FieldDef与变体Variant和字段Field相关的结构体。 CrateInherentImpls表示crate中内部实现的结构体。 SymbolNametcx用于表示符号名称的结构。 InferVarInfo表示一个推断变量的信息结构。 DestructuredConsttcx表示解构常量的结构体。 此外还有一些特征 ToPolyTraitReftcx用于将具体化的特性引用转换为多态的特性引用。 ToPredicatetcx将类型转换为谓词Predicate。 最后还有一些枚举类型 ImplSubjecttcx表示实现的主体。 ImplPolarity表示实现的极性正极性或负极性。 VisibilityId表示可见性的结构。 BoundConstness表示常量的界限Bound。 ClauseKindtcx表示一个子句Clause的种类。 PredicateKindtcx表示一个谓词Predicate的种类。 AliasRelationDirection表示别名关系的方向。 TermKindtcx表示一个术语Term的种类。 ParamTerm表示一个参数术语。 TermVidtcx表示一个术语Term的VIDVariable ID。 VariantDiscr表示一个变体Variant的区分标签。 ImplOverlapKind表示实现的重叠Overlap种类。 ImplTraitInTraitData表示trait内部的trait信息。 以上是rust/compiler/rustc_middle/src/ty/mod.rs文件中的一些重要结构、特征和枚举的作用和功能介绍。该文件定义的这些类型和特征是Rust编译器类型系统中的核心组成部分用于支持类型检查、类型推断、泛型等功能。它们提供了类型相关的数据结构和算法为编译器提供了必要的类型信息处理能力。 File: rust/compiler/rustc_middle/src/ty/codec.rs rust/compiler/rustc_middle/src/ty/codec.rs 是 Rust 编译器源代码中的一个文件它的作用是为类型系统定义了 Rust 中的类型编码和解码器。 该文件中定义了一个 trait EncodableWithShorthand该 trait 需要一个实现了 Encoder trait 和一个实现了 Decodable trait 的对象作为参数。EncodableWithShorthand trait 为这些对象提供了编码和解码方法。Encoder trait 和 Decodable trait 是 rustc 的库中提供的用于序列化和反序列化类型的标准 traits。 Encoder trait 描述了一个可以将数据转化为特定格式的编码器对象。它定义了用于编码各种数据类型的方法。编码器对象可以实现各种编码格式例如二进制、JSON、XML 等等。 Decodable trait 描述了一个可以从特定格式的数据中解码出数据的对象。它定义了用于解码各种数据类型的方法。解码器对象可以实现各种解码格式例如二进制、JSON、XML 等等。 RefDecodable trait 是 Decodable trait 的一个子 trait它定义了对引用类型进行解码的方法。这是因为在 Rust 的类型系统中某些类型可以被引用和借用因此提供了针对引用类型的解码方法。 综上所述EncodableWithShorthand trait、Encoder trait 和 Decodable trait 都是 Rust 编译器中用于序列化和反序列化类型的重要组成部分。它们提供了一套统一的、可扩展的编码和解码框架使得 Rust 编译器能够在不同的环境中对类型进行序列化和反序列化操作。 File: rust/compiler/rustc_middle/src/ty/_match.rs 在Rust中rust/compiler/rustc_middle/src/ty/_match.rs文件是编译器中实现模式匹配的相关代码的位置。 _match.rs文件中定义了一个名为Matchtcx的结构体其中包含了实现模式匹配相关功能的方法和辅助函数。该结构体的作用是在编译器的类型系统中执行模式匹配操作。下面对Matchtcx中的几个结构体进行简要介绍 Matchtcx这是主要的结构体用于实现模式匹配操作。它包含了许多方法和辅助函数用于处理模式匹配的不同情况如常量模式、切片模式、数组模式、引用模式等。它还实现了诸如检查模式覆盖性、模式前置条件的验证等功能。 Innermosttcx这是一个辅助结构体用于迭代访问模式的内部。它包含了当前模式的类型、子模式以及其他相关信息。它的主要作用是遍历模式的各个部分并进行相应的处理。 Matrixtcx这是一个辅助结构体用于表示一个模式矩阵。模式矩阵是模式匹配中多个模式同时出现的情况通常是通过|操作符连接的多个模式。该结构体提供了一些方法用于构建和操作模式矩阵。 Constructor这是一个辅助枚举类型用于表示模式中的构造器。它包含了模式可能的不同构造器类型例如结构体构造器、元组构造器、变量构造器等。它的作用是根据模式表达式中的构造器类型进行相应的处理。 这些结构体在模式匹配中起到不同的角色协调并实现了模式匹配的相关逻辑。通过这些结构体Rust编译器能够对模式进行有效的匹配并执行相应的操作以便生成可执行代码。 File: rust/compiler/rustc_middle/src/error.rs rust/compiler/rustc_middle/src/error.rs文件是Rust编译器中的一个模块定义了与错误相关的结构体和枚举类型。下面逐个介绍所列出的结构体和枚举类型的作用 DropCheckOverflowtcx: 表示在检查Drop实现时溢出。 OpaqueHiddenTypeMismatchtcx: 表示在处理不透明类型时隐藏类型不匹配。 LimitInvalida: 表示给定的限制无效。 RecursionLimitReachedtcx: 表示达到了递归限制。 ConstEvalNonIntError: 表示在常量求值过程中遇到了非整数类型错误。 StrictCoherenceNeedsNegativeCoherence: 表示严格相干性需要负相干性。 RequiresLangItem: 表示需要某个语言项。 ConstNotUsedTraitAlias: 表示常量未使用的特质别名。 CustomSubdiagnostica: 表示自定义的子诊断。 UnsupportedFnAbi: 表示不支持的函数ABI。 ErroneousConstant: 表示错误的常量。 这些结构体是对不同类型的错误情况进行建模和抽象用于在编译器的错误处理和报告中使用。 TypeMismatchReason: 表示类型不匹配的原因通常与类型推导、函数签名等相关。 LayoutErrortcx: 表示布局错误用于描述类型布局方面的问题如成员偏移量计算错误、大小计算出错等。 这些枚举类型提供了有关类型匹配、布局等错误的详细信息并用于在编译器中进行错误处理和报告。 File: rust/compiler/rustc_middle/src/thir/visit.rs rust/compiler/rustc_middle/src/thir/visit.rs文件是Rust编译器中ThirTyped Higher-ranked Intermediate Representation的访问者模式实现。Thir是在类型检查后生成的中间表示用于类型推断和类型检查。 在这个文件中有多个trait定义和实现包括Visitora, tcx、MutVisitora, tcx、And、AndThen、AssertionTracer和DefUseAnalysisCollector等。这些trait定义了Thir的访问接口用于遍历和修改Thir表示树。 Visitora, tcx trait是Thir的访问者的基本接口用于访问Thir表示树的每个节点。该trait主要定义了访问和处理每个不同类型的Thir节点的方法如visit_expr、visit_local和visit_place等。实现该trait的结构体可以遍历和分析Thir表示树进行静态分析、优化等操作。 MutVisitora, tcx trait是Visitora, tcx trait的扩展接口用于支持修改Thir表示树的操作。该trait定义了更多的方法如change_variant、inject_field and inject_variant等用于对Thir节点进行修改。 And trait定义了And操作符的行为用于移除针对Thir的访问者方法调用的重复性工作。通过实现And trait访问者可以将多个Visitor组合在一起进行操作遍历Thir表示树。 AndThen trait定义了AndThen操作符的行为类似于And trait但是可以在遍历Thir表示树时返回结果。 AssertionTracer trait定义了对Thir表达式进行断言跟踪的方法。实现该trait的结构体用于跟踪和记录在Thir表示树中出现的断言。 DefUseAnalysisCollector trait定义了对Thir表达式进行Def-use分析的方法。实现该trait的结构体用于收集和分析Thir表示树中定义和使用的变量。 这些trait的具体实现可以根据需要进行扩展和自定义以实现不同的Thir遍历、修改和分析操作。通过使用这些trait可以方便地进行Thir的静态分析、优化和转换等工作。 File: rust/compiler/rustc_middle/src/infer/canonical.rs 在Rust源代码中rust/compiler/rustc_middle/src/infer/canonical.rs这个文件的作用是定义了用于类型推断的规范化canonicalization过程和相关数据结构。 规范化是指将复杂的类型和约束转换为一种统一的表示形式以便进行比较和处理。规范化后的类型和约束具有统一的结构方便进行类型等价判断和约束求解。以下是几个关键的类型和枚举的作用 Canonicaltcx表示规范化后的查询的结果包含了待求解的类型和约束等信息。 CanonicalVarValuestcx表示规范化后的类型变量的取值。每个类型变量都可以通过索引来访问其对应的取值。 OriginalQueryValuestcx表示待规范化的原始查询的取值。与类型变量的取值类似但是原始查询可能包含其他类型和约束。 CanonicalVarInfotcx表示规范化后的类型变量的额外信息如名称、边界等。通过索引与类型变量相关联。 QueryResponsetcx表示规范化后的查询的响应结果。包含了规范化后的类型和约束以及用于表示是否有解的标志。 CanonicalVarKindtcx表示规范化后的类型变量的种类。包括通用类型变量TyVar和区域类型变量RegionVar等。 CanonicalTyVarKind表示规范化后的通用类型变量的种类。包括类型TyKind、生命周期Region和常量Const等。 Certainty表示规范化时约束的确定性。有三种取值即确定Definitely、不确定Maybe和不可满足Unsatisfiable。 总的来说canonical.rs文件定义了用于规范化的数据结构和相关枚举对类型推断过程起到了关键的作用。通过规范化将复杂的类型和约束转换为统一的表示形式便于进行类型推断和约束求解。 File: rust/compiler/rustc_middle/src/infer/unify_key.rs 在Rust源代码中rust/compiler/rustc_middle/src/infer/unify_key.rs文件的作用是定义了一些用于类型推断和解决约束的关键数据结构和接口。 首先让我们介绍一下每个结构体和枚举的作用 UnifiedRegiontcx这是一个表示统一化区域的结构体。在类型推断期间Rust编译器的类型系统会进行区域统一化以便确定和检查引用的生命周期。该结构体记录了一个区域的标识和相关的信息。 RegionVidKeytcx这是一个表示区域变量的结构体。Rust的区域推断系统通过区域变量来表示尚未确定的具体区域。该结构体记录了区域变量的标识和相关的信息。 ConstVariableOrigin这是一个表示常量变量来源的结构体。在编译期间Rust编译器会进行常量推断以便确定常量的类型和值。该结构体记录了一个常量变量的来源信息。 ConstVarValuetcx这是一个表示常量变量值的结构体。编辑器推断常量变量的类型时会创建该结构体来表示常量变量的类型和值。 接下来让我们介绍一下每个trait的作用 ToType该trait定义了将某个值转换为类型的操作。在类型推断期间可能需要将某些值转换为相应的类型。 下面是每个枚举的作用 ConstVariableOriginKind这是一个表示常量变量来源种类的枚举。Rust编译器会记录常量变量的来源以便在需要时进行查找和区分。 ConstVariableValuetcx这是一个表示常量变量值的枚举。 编辑器推断常量变量的类型时可能会使用该枚举来表示常量变量的各种可能的值类型。 EffectVarValuetcx这是一个表示效果变量值的枚举。在类型检查过程中Rust编译器可能会使用该枚举来表示特定的效果变量的值类型。 这些数据结构和接口的定义为Rust编译器提供了类型推断和解决约束的基础以支持Rust语言的类型系统。 File: rust/compiler/rustc_middle/src/infer/mod.rs 在Rust源代码中rust/compiler/rustc_middle/src/infer/mod.rs文件的作用是实现了类型推断的主要逻辑。该文件包含了用于进行类型推断的各种结构体、枚举和方法。 具体来说rust/compiler/rustc_middle/src/infer/mod.rs定义了类型推断器InferCtxt和其相关的类型和方法。类型推断器是Rust编译器中用于确定变量、表达式和函数等的类型的核心组件。 在这个文件中MemberConstrainttcx是一个结构体用于表示成员约束。它的作用是在类型推断过程中当遇到关联类型associated type时记录类型成员type member和约束条件constraint的关系。约束条件包括了关联类型的上下文边界bounds以及其他约束条件以便在推断过程中进行类型匹配。 MemberConstrainttcx结构体的成员和方法用于存储和操作关联类型约束的相关信息例如源类型(source_mir), 目标类型(target), 约束边界(bounds)等等。这些信息在类型推断过程中被使用以确定变量或表达式的类型。 总的来说MemberConstrainttcx结构体用于记录关联类型的约束条件帮助类型推断器在编译过程中确定变量和表达式的类型。 File: rust/compiler/rustc_middle/src/lib.rs 在Rust编译器源代码中rust/compiler/rustc_middle/src/lib.rs文件起着非常重要的作用。它是Rust编译器中间层模块的入口文件。 Rust编译器可以分为三个主要的层次前端、中间层和后端。中间层是Rust编译器的核心它负责处理各种通用的编译器任务例如语义分析、类型检查、数据流分析、优化等。lib.rs文件是中间层模块的入口定义了中间层的公共接口和主要的功能。 具体来说lib.rs文件主要包含以下内容 引用和导出lib.rs文件首先导入各种必要的Rust语言特性、标准库和中间层模块。然后通过pub use语句将中间层模块的重要类型和函数导出给其他模块使用。 中间层类型和接口的定义lib.rs文件定义了许多与编译器相关的结构体、枚举、类型别名和特质(trait)。这些类型和接口用于存储和处理源代码的抽象表示如AST抽象语法树、HIR高层IR和MIR中层IR等。 语义分析和类型检查lib.rs文件还包含了语义分析和类型检查的相关方法和函数。这些方法和函数负责验证Rust源代码的语法正确性并对变量、函数、模块等进行类型检查以保证程序的健壮性和安全性。 数据流分析和优化lib.rs文件还定义了数据流分析和优化的相关方法和函数。这些方法和函数用于静态分析变量的生命周期、控制流、依赖关系等并进行各种优化例如内联展开、循环优化、常量折叠等以提高代码的执行效率。 总之rust/compiler/rustc_middle/src/lib.rs文件是Rust编译器中间层模块的入口定义了许多与编译器相关的类型、接口、方法和函数。它是Rust编译器实现的核心部分负责各种编译器任务的处理和优化以生成最终的机器码。 File: rust/compiler/rustc_middle/src/metadata.rs 在Rust源代码中rustc_middle/src/metadata.rs这个文件的作用是定义了与元数据相关的数据结构和函数。元数据是在编译时收集的关于程序的信息比如类型、函数签名和模块结构等。 该文件中有几个重要的数据结构其中之一是ModChild结构体。ModChild结构体表示模块的一个子项它存储了子项的名称和类型等信息。它有三个字段name表示子项的名称def_id表示子项对应的定义IDvis表示子项的可见性。 另一个重要的数据结构是Reexport枚举。Reexport枚举表示重新导出它用于表示一个模块将其子项重新导出到另一个模块的情况。该枚举有两个变体ExportDefId表示重新导出一个定义IDExportName表示重新导出一个名称。这些变体允许跟踪和处理模块之间的导出关系。 总的来说metadata.rs文件是Rust编译器的中间表示层middle的一部分它定义了处理元数据的数据结构和函数。这些结构体和枚举用于表示和处理模块的子项以及模块之间的导出关系从而实现对程序元数据的分析和处理。 File: rust/compiler/rustc_middle/src/lint.rs 文件 rust/compiler/rustc_middle/src/lint.rs 是 Rust 编译器rustc中用于处理 lint静态代码检查的模块。该文件定义了用于设置和管理 lint 规则的数据结构和相关函数。 首先让我们来介绍 ShallowLintLevelMap 和 LintExpectation 这两个结构体。 ShallowLintLevelMap 结构体用于存储和管理 lint 的级别level。每个级别表示了对应的 lint 规则执行的程度。具体来说ShallowLintLevelMap 是一个包含了 HashMap 的结构体其中键是 lint 规则的名称represented by LintId值是对应的级别represented by LintLevel。这个结构体还提供了一些用于查询和设置 lint 级别的方法。 LintExpectation 结构体用于表示 lint 规则的期望状态。每个 lint 规则可以分为以下几种状态之一 Allowed表示允许 lint 规则被触发即规则的结果可以被接受。 Denied表示禁止 lint 规则被触发即规则的结果被认为不符合代码风格或规范。 Forbid表示该 lint 规则被强制性禁止即规则的结果被认为是严重问题必须被修复。 该结构体包含了 lint 规则的名称represented by LintId和期望状态represented by Expectation。它也提供了一些用于查询和设置 lint 规则状态的方法。 接下来我们来介绍 LintLevelSource 这个枚举类型。 LintLevelSource 枚举类型用于表示 lint 级别的来源。它包含以下几个成员 Default表示级别是默认的即没有显式设置使用编译器的默认级别。 CommandLine表示级别是通过命令行参数指定的。 Node表示级别是通过 AST抽象语法树节点的属性指定的。 Parent表示级别是通过 AST 节点的父节点指定的。 这些成员提供了一种机制用于确定 lint 级别是由哪个实体指定的以便编译器能够根据级别的来源进行不同的处理。 总之文件 lint.rs 的作用是定义和实现 lint 规则管理的相关数据结构和函数以用于 Rust 编译器中对代码进行静态检查。其中ShallowLintLevelMap 结构体用于存储和管理 lint 的级别LintExpectation 结构体用于表示 lint 规则的期望状态LintLevelSource 枚举类型用于表示 lint 级别的来源。这些结构体和枚举类型为编译器提供了灵活的配置和处理 lint 规则的能力。 本文由 mdnice 多平台发布
http://www.dnsts.com.cn/news/68646.html

相关文章:

  • 网站做多久流量杭州网站建设外包
  • joomla 网站 html 空建筑设计就业方向及前景
  • 网站集约化建设要求wordpress is post
  • 沈阳网站优化排名游戏传奇
  • 家族网站模版开发板用什么语言编程
  • 江西城乡住房建设网站wordpress运行目录
  • 论坛网站备案流程图外贸网站一般用什么框架
  • 网站要什么备案调用wordpress栏目列表
  • 手机免费制作网站模板免费下载如何链接自己做的网站
  • 火速网站建设广州微网站建设哪家好
  • 网站后台演示娱乐建网站
  • 有没有做产品团购的网站ps网站首页效果图实例
  • 英国网站建设哪个网站做任务给东西
  • 水产食品企业网站模板莱芜金点子广告电子版2022最新
  • 江山建设工程信息网站优化网站关键词排名软件
  • 合肥企业网站推广网站设计三把火
  • 建设快三网站南山做网站哪家专业
  • 企业建立网站账户如何做手机网站源代码
  • 宣城网站开发企业网站建设的价格
  • 网站建设云解析dns有什么用广州市专注网站建设品牌
  • 织梦仿asp网站做网站公司属于什么行业
  • 电子商务网站建设与维护的主要内容wordpress输出标签下文章
  • 网站策划与维护电子商务网站建设与运营
  • 济南网站制作公司排名邯郸住房和城乡建设局网站
  • 网站搭建 保定免费的html
  • 做综合类网站好不好合肥市住房和城乡建设厅网站
  • dw怎样做网站切换最新推广注册app拿佣金
  • 网站赚钱厦门网站建设手机
  • 建行网站会员有什么用论坛推广的步骤
  • 温州网站建站模板wordpress 安装 godaddy在哪里 上传的根目录