Basic objects for to-do list project and their rust counterparts accessed from iOS

Fully functioning login flow for todolist.
This commit is contained in:
Emily Toop 2017-10-12 14:55:38 +01:00
Родитель 53f90ea7b8
Коммит 14d08ee472
126 изменённых файлов: 1850 добавлений и 788 удалений

73
.vscode/c_cpp_properties.json поставляемый Normal file
Просмотреть файл

@ -0,0 +1,73 @@
{
"configurations": [
{
"name": "Mac",
"includePath": [
"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1",
"/usr/local/include",
"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/9.0.0/include",
"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include",
"/usr/include",
"${workspaceRoot}"
],
"defines": [],
"intelliSenseMode": "clang-x64",
"browse": {
"path": [
"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1",
"/usr/local/include",
"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/9.0.0/include",
"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include",
"/usr/include",
"${workspaceRoot}"
],
"limitSymbolsToIncludedHeaders": true,
"databaseFilename": ""
},
"macFrameworkPath": [
"/System/Library/Frameworks",
"/Library/Frameworks"
]
},
{
"name": "Linux",
"includePath": [
"/usr/include",
"/usr/local/include",
"${workspaceRoot}"
],
"defines": [],
"intelliSenseMode": "clang-x64",
"browse": {
"path": [
"/usr/include",
"/usr/local/include",
"${workspaceRoot}"
],
"limitSymbolsToIncludedHeaders": true,
"databaseFilename": ""
}
},
{
"name": "Win32",
"includePath": [
"C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/include",
"${workspaceRoot}"
],
"defines": [
"_DEBUG",
"UNICODE"
],
"intelliSenseMode": "msvc-x64",
"browse": {
"path": [
"C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/include/*",
"${workspaceRoot}"
],
"limitSymbolsToIncludedHeaders": true,
"databaseFilename": ""
}
}
],
"version": 3
}

8
.vscode/settings.json поставляемый Normal file
Просмотреть файл

@ -0,0 +1,8 @@
{
"files.associations": {
"array": "cpp",
"iterator": "cpp",
"string": "cpp",
"vector": "cpp"
}
}

Просмотреть файл

@ -37,7 +37,7 @@
<ConfirmationsSetting value="0" id="Add" />
<ConfirmationsSetting value="0" id="Remove" />
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" default="true" assert-keyword="true" jdk-15="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" assert-keyword="true" jdk-15="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
<component name="ProjectType">

Просмотреть файл

@ -16,6 +16,7 @@
7B668C701F46E040001A9945 /* libgreetings.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7B668C6F1F46E040001A9945 /* libgreetings.a */; };
7B668C721F46E04B001A9945 /* libresolv.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 7B668C711F46E04B001A9945 /* libresolv.tbd */; };
7B668C7B1F46E26F001A9945 /* RustGreetings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B668C7A1F46E26F001A9945 /* RustGreetings.swift */; };
7B9F01331F7D15E2000407E5 /* NSLayoutConstraint+Utils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B9F01321F7D15E2000407E5 /* NSLayoutConstraint+Utils.swift */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
@ -44,6 +45,7 @@
7B668C741F46E084001A9945 /* Greetings-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Greetings-Bridging-Header.h"; sourceTree = "<group>"; };
7B668C791F46E0F4001A9945 /* greetings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = greetings.h; path = ../../../cargo/src/greetings.h; sourceTree = "<group>"; };
7B668C7A1F46E26F001A9945 /* RustGreetings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RustGreetings.swift; sourceTree = "<group>"; };
7B9F01321F7D15E2000407E5 /* NSLayoutConstraint+Utils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSLayoutConstraint+Utils.swift"; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@ -95,6 +97,7 @@
7B668C551F46E022001A9945 /* Assets.xcassets */,
7B668C571F46E022001A9945 /* LaunchScreen.storyboard */,
7B668C5A1F46E022001A9945 /* Info.plist */,
7B9F01321F7D15E2000407E5 /* NSLayoutConstraint+Utils.swift */,
);
path = Greetings;
sourceTree = "<group>";
@ -172,17 +175,19 @@
isa = PBXProject;
attributes = {
LastSwiftUpdateCheck = 0830;
LastUpgradeCheck = 0830;
LastUpgradeCheck = 0900;
ORGANIZATIONNAME = Mozilla;
TargetAttributes = {
7B668C4A1F46E022001A9945 = {
CreatedOnToolsVersion = 8.3.3;
DevelopmentTeam = 8BHJ767F4Y;
LastSwiftMigration = 0900;
ProvisioningStyle = Automatic;
};
7B668C5E1F46E022001A9945 = {
CreatedOnToolsVersion = 8.3.3;
DevelopmentTeam = 8BHJ767F4Y;
LastSwiftMigration = 0900;
ProvisioningStyle = Automatic;
TestTargetID = 7B668C4A1F46E022001A9945;
};
@ -233,6 +238,7 @@
buildActionMask = 2147483647;
files = (
7B668C7B1F46E26F001A9945 /* RustGreetings.swift in Sources */,
7B9F01331F7D15E2000407E5 /* NSLayoutConstraint+Utils.swift in Sources */,
7B668C511F46E022001A9945 /* ViewController.swift in Sources */,
7B668C4F1F46E022001A9945 /* AppDelegate.swift in Sources */,
);
@ -286,7 +292,9 @@
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
@ -294,7 +302,11 @@
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
@ -337,7 +349,9 @@
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
@ -345,7 +359,11 @@
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
@ -382,7 +400,8 @@
PRODUCT_BUNDLE_IDENTIFIER = com.mozilla.Greetings;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "$(PROJECT_DIR)/Greetings/Greetings-Bridging-Header.h";
SWIFT_VERSION = 3.0;
SWIFT_SWIFT3_OBJC_INFERENCE = On;
SWIFT_VERSION = 4.0;
};
name = Debug;
};
@ -397,7 +416,8 @@
PRODUCT_BUNDLE_IDENTIFIER = com.mozilla.Greetings;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "$(PROJECT_DIR)/Greetings/Greetings-Bridging-Header.h";
SWIFT_VERSION = 3.0;
SWIFT_SWIFT3_OBJC_INFERENCE = On;
SWIFT_VERSION = 4.0;
};
name = Release;
};
@ -411,7 +431,8 @@
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.mozilla.GreetingsTests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 3.0;
SWIFT_SWIFT3_OBJC_INFERENCE = On;
SWIFT_VERSION = 4.0;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Greetings.app/Greetings";
};
name = Debug;
@ -426,7 +447,8 @@
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.mozilla.GreetingsTests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 3.0;
SWIFT_SWIFT3_OBJC_INFERENCE = On;
SWIFT_VERSION = 4.0;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Greetings.app/Greetings";
};
name = Release;
@ -450,6 +472,7 @@
7B668C6A1F46E022001A9945 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
7B668C6B1F46E022001A9945 /* Build configuration list for PBXNativeTarget "GreetingsTests" */ = {
isa = XCConfigurationList;
@ -458,6 +481,7 @@
7B668C6D1F46E022001A9945 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};

Просмотреть файл

@ -0,0 +1,20 @@
//
// NSLayoutConstraint+Utils.swift
// Greetings
//
// Created by Emily Toop on 28/09/2017.
// Copyright © 2017 Mozilla. All rights reserved.
//
import UIKit
extension NSLayoutConstraint {
open class func activate(_ constraints: [NSLayoutConstraint], translatesAutoresizingMaskIntoConstraints: Bool) {
for constraint in constraints {
if let view = constraint.firstItem as? UIView {
view.translatesAutoresizingMaskIntoConstraints = translatesAutoresizingMaskIntoConstraints
}
}
NSLayoutConstraint.activate(constraints)
}
}

Просмотреть файл

@ -110,14 +110,3 @@ class ViewController: UIViewController {
}
extension NSLayoutConstraint {
open class func activate(_ constraints: [NSLayoutConstraint], translatesAutoresizingMaskIntoConstraints: Bool) {
for constraint in constraints {
if let view = constraint.firstItem as? UIView {
view.translatesAutoresizingMaskIntoConstraints = translatesAutoresizingMaskIntoConstraints
}
}
NSLayoutConstraint.activate(constraints)
}
}

155
complex objects/cargo/Cargo.lock сгенерированный
Просмотреть файл

@ -3,6 +3,10 @@ name = "greetings"
version = "0.1.1"
dependencies = [
"jni 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
"libsqlite3-sys 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
"rusqlite 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)",
"time 0.1.38 (registry+https://github.com/rust-lang/crates.io-index)",
"uuid 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@ -10,6 +14,16 @@ name = "ascii"
version = "0.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "bitflags"
version = "0.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "bitflags"
version = "0.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "byteorder"
version = "1.1.0"
@ -34,6 +48,27 @@ name = "error-chain"
version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "fuchsia-zircon"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"fuchsia-zircon-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "fuchsia-zircon-sys"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"bitflags 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "gcc"
version = "0.3.54"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "jni"
version = "0.5.2"
@ -51,17 +86,137 @@ name = "jni-sys"
version = "0.2.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "kernel32-sys"
version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
"winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "libc"
version = "0.2.32"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "libsqlite3-sys"
version = "0.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"gcc 0.3.54 (registry+https://github.com/rust-lang/crates.io-index)",
"pkg-config 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
"vcpkg 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "linked-hash-map"
version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "log"
version = "0.3.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "lru-cache"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"linked-hash-map 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "pkg-config"
version = "0.3.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "rand"
version = "0.3.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"fuchsia-zircon 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.2.32 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "redox_syscall"
version = "0.1.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "rusqlite"
version = "0.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"bitflags 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
"libsqlite3-sys 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
"lru-cache 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
"time 0.1.38 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "time"
version = "0.1.38"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.2.32 (registry+https://github.com/rust-lang/crates.io-index)",
"redox_syscall 0.1.31 (registry+https://github.com/rust-lang/crates.io-index)",
"winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "uuid"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"rand 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "vcpkg"
version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "winapi"
version = "0.2.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "winapi-build"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
[metadata]
"checksum ascii 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3ae7d751998c189c1d4468cf0a39bb2eae052a9c58d50ebb3b9591ee3813ad50"
"checksum bitflags 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ab1c7dc97f39523ffa63f3096291612e630cf3ed75aa6b9fad436bac4c700274"
"checksum bitflags 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4efd02e230a02e18f92fc2735f44597385ed02ad8f831e7c1c1156ee5e1ab3a5"
"checksum byteorder 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ff81738b726f5d099632ceaffe7fb65b90212e8dce59d518729e7e8634032d3d"
"checksum cesu8 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c"
"checksum combine 2.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f5c279781ad7b9b480fe265770ea5cb87fcbdc8ea1b2b6930d60a206e781dc6c"
"checksum error-chain 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d9435d864e017c3c6afeac1654189b06cdb491cf2ff73dbf0d73b0f292f42ff8"
"checksum fuchsia-zircon 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f6c0581a4e363262e52b87f59ee2afe3415361c6ec35e665924eb08afe8ff159"
"checksum fuchsia-zircon-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "43f3795b4bae048dc6123a6b972cadde2e676f9ded08aef6bb77f5f157684a82"
"checksum gcc 0.3.54 (registry+https://github.com/rust-lang/crates.io-index)" = "5e33ec290da0d127825013597dbdfc28bee4964690c7ce1166cbc2a7bd08b1bb"
"checksum jni 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "914c602e3a81f89761661fca05eb0e1f1834985aeae4074394e030c4181cfa07"
"checksum jni-sys 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "de0aaaba8809ab8d83a53fe2b313b996b79e8632b855eae9f70ad4323dca91b8"
"checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d"
"checksum libc 0.2.32 (registry+https://github.com/rust-lang/crates.io-index)" = "56cce3130fd040c28df6f495c8492e5ec5808fb4c9093c310df02b0c8f030148"
"checksum libsqlite3-sys 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "370090ad578ba845a3ad4f383ceb3deba7abd51ab1915ad1f2c982cc6035e31c"
"checksum linked-hash-map 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7860ec297f7008ff7a1e3382d7f7e1dcd69efc94751a2284bafc3d013c2aa939"
"checksum log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "880f77541efa6e5cc74e76910c9884d9859683118839d6a1dc3b11e63512565b"
"checksum lru-cache 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4d06ff7ff06f729ce5f4e227876cb88d10bc59cd4ae1e09fbb2bde15c850dc21"
"checksum pkg-config 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "3a8b4c6b8165cd1a1cd4b9b120978131389f64bdaf456435caa41e630edba903"
"checksum rand 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)" = "61efcbcd9fa8d8fbb07c84e34a8af18a1ff177b449689ad38a6e9457ecc7b2ae"
"checksum redox_syscall 0.1.31 (registry+https://github.com/rust-lang/crates.io-index)" = "8dde11f18c108289bef24469638a04dce49da56084f2d50618b226e47eb04509"
"checksum rusqlite 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ffaf393ccdac5580092a4d8eb2edffbffe9a8c4484c62d8a0fcac99bc3718566"
"checksum time 0.1.38 (registry+https://github.com/rust-lang/crates.io-index)" = "d5d788d3aa77bc0ef3e9621256885555368b47bd495c13dd2e7413c89f845520"
"checksum uuid 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7cfec50b0842181ba6e713151b72f4ec84a6a7e2c9c8a8a3ffc37bb1cd16b231"
"checksum vcpkg 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9e0a7d8bed3178a8fb112199d466eeca9ed09a14ba8ad67718179b4fd5487d0b"
"checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a"
"checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc"

Просмотреть файл

@ -11,3 +11,13 @@ jni = { version = "0.5", default-features = false }
[lib]
name = "greetings"
crate-type = ["staticlib", "cdylib"]
[dependencies]
time = "0.1.38"
libsqlite3-sys = "0.8.1"
uuid = { version = "0.4", features = ["v4"] }
[dependencies.rusqlite]
version = "0.12"
# System sqlite might be very old.
features = ["bundled", "limits"]

Просмотреть файл

@ -0,0 +1,20 @@
#ifndef categories_h
#define categories_h
#import "items.h"
struct category;
struct item;
struct category** get_all_categories();
const size_t category_list_count(const struct category** list);
const void category_list_destroy(const struct category** list);
struct category* category_new(char* name);
const void category_destroy(const struct category* category);
const size_t category_get_id(const struct category* category);
const char* category_get_name(const struct category* category);
struct item** category_get_items(const struct category* category);
const size_t category_items_count(const struct category* category);
#endif /* categories_h */

Просмотреть файл

@ -0,0 +1,82 @@
use std::os::raw::{c_char, c_int};
use items::Item;
use utils::{c_char_to_string, string_to_c_char};
#[derive(Debug)]
pub struct Category {
pub id: isize,
pub name: String,
pub items: Vec<Item>
}
impl Drop for Category {
fn drop(&mut self) {
println!("{:?} is being deallocated", self);
}
}
#[no_mangle]
pub extern "C" fn category_new() -> *mut Category {
let category = Category{
id: 0,
name: "Open items".to_string(),
items: Vec::new(),
};
let boxed_category = Box::new(category);
Box::into_raw(boxed_category)
}
#[no_mangle]
pub unsafe extern "C" fn category_destroy(category: *mut Category) {
let _ = Box::from_raw(category);
}
#[no_mangle]
pub unsafe extern "C" fn category_get_id(category: *const Category) -> c_int {
let category = &*category;
category.id as c_int
}
#[no_mangle]
pub unsafe extern "C" fn category_get_name(category: *const Category) -> *mut c_char {
let category = &*category;
string_to_c_char(category.name.clone())
}
#[no_mangle]
pub unsafe extern "C" fn category_get_items(category: *const Category) -> *mut Vec<Item> {
let category = &*category;
let boxed_items = Box::new(category.items.clone());
Box::into_raw(boxed_items)
}
#[no_mangle]
pub unsafe extern "C" fn category_items_count(category: *const Category) -> c_int {
let category = &*category;
category.items.len() as c_int
}
#[no_mangle]
pub extern "C" fn get_all_categories() -> *mut Vec<Category> {
let mut category_list = Vec::new();
let category = Category{
id: 0,
name: "Open items".to_string(),
items: Vec::new(),
};
category_list.push(category);
let boxed_list = Box::new(category_list);
Box::into_raw(boxed_list)
}
#[no_mangle]
pub unsafe extern "C" fn category_list_destroy(category_list: *mut Vec<Category>) {
let _ = Box::from_raw(category_list);
}
#[no_mangle]
pub unsafe extern "C" fn category_list_count(category_list: *const Vec<Category>) -> c_int {
let category_list = &*category_list;
category_list.len() as c_int
}

Просмотреть файл

@ -0,0 +1,10 @@
#include <stdint.h>
#include "logins.h"
struct store;
struct store* new_store(const char* uri);
void store_destroy(struct store* data);
struct login* create_login(const struct store* data, const char* username, const char* password);
const size_t validate_login(const struct store* store, const char* username, const char* password);

Просмотреть файл

@ -0,0 +1,135 @@
use std::os::raw::{c_char, c_int};
use std::sync::{Arc};
use rusqlite::Connection;
use rusqlite::Error;
use time::now_utc;
use uuid::Uuid;
use logins::Login;
use utils::{c_char_to_string};
#[derive(Debug)]
pub struct Store {
pub conn: Arc<Connection>
}
impl Drop for Store {
fn drop(&mut self) {
println!("{:?} is being deallocated", self);
}
}
impl Store {
pub fn new(uri: String) -> Self {
Store { conn: Arc::new(Connection::open(uri).unwrap()) }
}
pub fn create_logins_table(&self) {
let sql = r#"CREATE TABLE IF NOT EXISTS logins (
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
username TEXT NOT NULL UNIQUE,
password TEXT NOT NULL,
guid TEXT NOT NULL,
time_created DATETIME DEFAULT CURRENT_TIMESTAMP,
time_last_used DATETIME,
time_password_changed DATETIME DEFAULT CURRENT_TIMESTAMP,
times_used INTEGER DEFAULT 0
)"#;
self.conn.execute(sql, &[]).unwrap();
}
pub fn fetch_login(&self, username: String, password: String) -> Option<Login> {
let sql = r#"SELECT id, username, password, guid, time_created, time_last_used, time_password_changed, times_used
FROM logins
WHERE username=?
LIMIT 1"#;
let mut stmt = self.conn.prepare(sql).unwrap();
let mut login_iter = stmt.query_map(&[&username], |row| {
Login {
id: row.get(0),
username: row.get(1),
password: row.get(2),
guid: row.get(3),
time_created: row.get(4),
time_last_used: row.get(5),
time_password_changed: row.get(6),
times_used: row.get(7),
is_valid: 0
}
}).unwrap();
match login_iter.next() {
Some(result) => {
match result {
Ok(login) => {
let mut l = login;
if l.password != password {
l.is_valid = 2;
}
Some(l)
},
Err(err) => {
None
}
}
},
None => None
}
}
pub fn create_login(&self, username: String, password: String) -> Option<Login> {
let sql = r#"INSERT INTO logins (username, password, guid, time_last_used, times_used) VALUES (?1, ?2, ?3, ?4, ?5)"#;
let time_last_used:Option<isize> = None;
let result = self.conn.execute(sql, &[&username, &password, &Uuid::new_v4().simple().to_string(), &time_last_used, &0]).unwrap();
self.fetch_login(username, password)
}
}
#[no_mangle]
pub extern "C" fn new_store(uri: *const c_char) -> *mut Store {
let uri = c_char_to_string(uri);
let store = Store::new(uri);
// create logins table
store.create_logins_table();
Box::into_raw(Box::new(store))
}
#[no_mangle]
pub unsafe extern "C" fn store_destroy(data: *mut Store) {
let _ = Box::from_raw(data);
}
#[no_mangle]
pub unsafe extern "C" fn create_login(store: *const Store, username: *const c_char, password: *const c_char) -> *mut Login {
let uname = c_char_to_string(username);
let pword = c_char_to_string(password);
let store = &*store;
// let now = now_utc().to_timespec().sec as isize;
// let login = Box::new(Login{
// id: 0,
// username: uname,
// password: pword,
// guid: Uuid::new_v4().simple().to_string(),
// time_created: now.clone(),
// time_last_used: None,
// time_password_changed: now,
// times_used: 0,
// is_valid: 1
// });
let login = store.create_login(uname, pword).unwrap();
Box::into_raw(Box::new(login))
}
#[no_mangle]
pub unsafe extern "C" fn validate_login(store: *const Store, username: *const c_char, password: *const c_char) -> c_int {
let uname = c_char_to_string(username);
let pword = c_char_to_string(password);
let store = &*store;
match store.fetch_login(uname, pword) {
Some(login) => login.is_valid as c_int,
None => 2 as c_int
}
}

Просмотреть файл

@ -1,8 +0,0 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#include <stdint.h>
const char* rust_greeting(const char* to);
void rust_greeting_free(char *);

Просмотреть файл

@ -0,0 +1,9 @@
#ifndef items_h
#define items_h
struct item;
struct item* item_new();
const void item_destroy(const struct item* item);
#endif /* items_h */

Просмотреть файл

@ -0,0 +1,30 @@
#[derive(Debug, Clone)]
pub struct Item {
pub id: isize,
pub description: String,
pub created_at: isize,
pub due_date: Option<isize>
}
impl Drop for Item {
fn drop(&mut self) {
println!("{:?} is being deallocated", self);
}
}
#[no_mangle]
pub extern "C" fn item_new() -> *mut Item {
let item = Item{
id: 1,
description: "description".to_string(),
created_at: 0,
due_date: None,
};
let boxed_item = Box::new(item);
Box::into_raw(boxed_item)
}
#[no_mangle]
pub unsafe extern "C" fn item_destroy(item: *mut Item) {
let _ = Box::from_raw(item);
}

Просмотреть файл

@ -1,46 +1,13 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
extern crate rusqlite;
extern crate time;
extern crate uuid;
use std::os::raw::{c_char};
use std::ffi::{CString, CStr};
pub mod logins;
pub mod categories;
pub mod items;
pub mod utils;
pub mod db;
#[no_mangle]
pub extern fn rust_greeting(to: *const c_char) -> *mut c_char {
let c_str = unsafe { CStr::from_ptr(to) };
let recipient = match c_str.to_str() {
Err(_) => "there",
Ok(string) => string,
};
CString::new("Hello ".to_owned() + recipient).unwrap().into_raw()
}
#[no_mangle]
pub extern fn rust_greeting_free(s: *mut c_char) {
unsafe {
if s.is_null() { return }
CString::from_raw(s)
};
}
/// Expose the JNI interface for android below
#[cfg(target_os="android")]
#[allow(non_snake_case)]
pub mod android {
extern crate jni;
use super::*;
use self::jni::JNIEnv;
use self::jni::objects::{JClass, JString};
use self::jni::sys::{jstring};
#[no_mangle]
pub unsafe extern fn Java_com_mozilla_greetings_RustGreetings_greeting(env: JNIEnv, _: JClass, java_pattern: JString) -> jstring {
let world = rust_greeting(env.get_string(java_pattern).expect("invalid pattern string").as_ptr());
let output = env.new_string(CStr::from_ptr(world).to_str().unwrap()).expect("Couldn't create java string!");
rust_greeting_free(world);
output.into_inner()
}
}

Просмотреть файл

@ -0,0 +1,21 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#include <stdint.h>
struct login;
void login_destroy(struct login* data);
// Accessors for Login properties
const size_t login_get_id(const struct login* data);
const char* login_get_username(const struct login* data);
const char* login_get_password(const struct login* data);
const char* login_get_guid(const struct login* data);
const void login_set_guid(struct login* data, char* guid);
const size_t login_get_time_created(const struct login* data);
const size_t login_get_time_last_used(const struct login* data);
const size_t login_get_time_password_changed(const struct login* data);
const size_t login_get_times_used(const struct login* data);
const size_t login_is_valid(const struct login* data);

Просмотреть файл

@ -0,0 +1,105 @@
use std::os::raw::{c_char, c_int};
use time::Timespec;
use utils::{c_char_to_string, string_to_c_char};
#[derive(Debug)]
pub struct Login {
pub id: isize,
pub username: String,
pub password: String,
pub guid: String,
pub time_created: Timespec,
pub time_last_used: Option<Timespec>,
pub time_password_changed: Timespec,
pub times_used: isize,
pub is_valid: isize
}
impl Drop for Login {
fn drop(&mut self) {
println!("{:?} is being deallocated", self);
}
}
impl Login {
}
#[no_mangle]
pub unsafe extern "C" fn login_destroy(data: *mut Login) {
// Convert a *mut Login back into a Box<Login>.
// This function is unsafe because the Rust compiler can't know
// whether data is actually pointing to a boxed Login.
//
// Note that we don't actually have to do anything else or even
// give the new Box a name - when we convert it back to a Box
// and then don't use it, the Rust compiler will insert the
// necessary code to drop it (deallocating the memory).
let _ = Box::from_raw(data);
}
#[no_mangle]
pub unsafe extern "C" fn login_get_id(login: *const Login) -> c_int {
let login = &*login;
login.id as c_int
}
#[no_mangle]
pub unsafe extern "C" fn login_get_username(login: *const Login) -> *mut c_char {
let login = &*login;
string_to_c_char(login.username.clone())
}
#[no_mangle]
pub unsafe extern "C" fn login_get_password(login: *const Login) -> *mut c_char {
let login = &*login;
string_to_c_char(login.password.clone())
}
#[no_mangle]
pub unsafe extern "C" fn login_get_guid(login: *const Login) -> *mut c_char {
let login = &*login;
string_to_c_char(login.guid.clone())
}
#[no_mangle]
pub unsafe extern "C" fn login_set_guid(login: *mut Login, guid: *const c_char) {
let mut login = &mut *login;
login.guid = c_char_to_string(guid);
}
#[no_mangle]
pub unsafe extern "C" fn login_get_time_created(login: *const Login) -> c_int {
let login = &*login;
login.time_created.sec as c_int
}
#[no_mangle]
pub unsafe extern "C" fn login_get_time_last_used(login: *const Login) -> c_int {
let login = &*login;
match login.time_last_used {
Some(tm) => tm.sec as c_int,
None => 0 as c_int
}
}
#[no_mangle]
pub unsafe extern "C" fn login_get_time_password_changed(login: *const Login) -> c_int {
let login = &*login;
login.time_password_changed.sec as c_int
}
#[no_mangle]
pub unsafe extern "C" fn login_get_times_used(login: *const Login) -> c_int {
let login = &*login;
login.times_used as c_int
}
#[no_mangle]
pub unsafe extern "C" fn login_is_valid(login: *const Login) -> c_int {
1 as c_int
}

Просмотреть файл

@ -0,0 +1,15 @@
use std::os::raw::{c_char};
use std::ffi::{CString, CStr};
pub fn c_char_to_string(cchar: *const c_char) -> String {
let c_str = unsafe { CStr::from_ptr(cchar) };
let r_str = match c_str.to_str() {
Err(_) => "",
Ok(string) => string,
};
r_str.to_string()
}
pub fn string_to_c_char(r_string: String) -> *mut c_char {
CString::new(r_string).unwrap().into_raw()
}

Двоичный файл не отображается.

Просмотреть файл

@ -1 +1 @@
/Users/emilytoop/Development/greetings/cargo/target/aarch64-apple-ios/release/libgreetings.a: /Users/emilytoop/Development/greetings/cargo/src/lib.rs
/Users/emilytoop/Development/greetings/complex\ objects/cargo/target/aarch64-apple-ios/release/libgreetings.a: /Users/emilytoop/Development/greetings/complex\ objects/cargo/src/db.rs /Users/emilytoop/Development/greetings/complex\ objects/cargo/src/categories.rs /Users/emilytoop/Development/greetings/complex\ objects/cargo/src/lib.rs /Users/emilytoop/Development/greetings/complex\ objects/cargo/src/utils.rs /Users/emilytoop/Development/greetings/complex\ objects/cargo/src/items.rs /Users/emilytoop/Development/greetings/complex\ objects/cargo/src/logins.rs

Двоичный файл не отображается.

Просмотреть файл

@ -1 +1 @@
/Users/emilytoop/Development/greetings/cargo/target/armv7-apple-ios/release/libgreetings.a: /Users/emilytoop/Development/greetings/cargo/src/lib.rs
/Users/emilytoop/Development/greetings/complex\ objects/cargo/target/armv7-apple-ios/release/libgreetings.a: /Users/emilytoop/Development/greetings/complex\ objects/cargo/src/logins.rs /Users/emilytoop/Development/greetings/complex\ objects/cargo/src/db.rs /Users/emilytoop/Development/greetings/complex\ objects/cargo/src/items.rs /Users/emilytoop/Development/greetings/complex\ objects/cargo/src/categories.rs /Users/emilytoop/Development/greetings/complex\ objects/cargo/src/utils.rs /Users/emilytoop/Development/greetings/complex\ objects/cargo/src/lib.rs

Двоичный файл не отображается.

Просмотреть файл

@ -1 +1 @@
/Users/emilytoop/Development/greetings/cargo/target/armv7s-apple-ios/release/libgreetings.a: /Users/emilytoop/Development/greetings/cargo/src/lib.rs
/Users/emilytoop/Development/greetings/complex\ objects/cargo/target/armv7s-apple-ios/release/libgreetings.a: /Users/emilytoop/Development/greetings/complex\ objects/cargo/src/logins.rs /Users/emilytoop/Development/greetings/complex\ objects/cargo/src/lib.rs /Users/emilytoop/Development/greetings/complex\ objects/cargo/src/db.rs /Users/emilytoop/Development/greetings/complex\ objects/cargo/src/utils.rs /Users/emilytoop/Development/greetings/complex\ objects/cargo/src/items.rs /Users/emilytoop/Development/greetings/complex\ objects/cargo/src/categories.rs

Просмотреть файл

Двоичный файл не отображается.

Просмотреть файл

@ -0,0 +1 @@
c853c38154d23539

Просмотреть файл

@ -0,0 +1 @@
{"rustc":12695997420456152265,"features":"[\"default\", \"example_generated\"]","target":16148831286061768677,"profile":731176819336294830,"deps":[],"local":{"Precalculated":"0.9.1"},"rustflags":[]}

Двоичный файл не отображается.

Просмотреть файл

@ -0,0 +1 @@
f61d980ff9e541e2

Просмотреть файл

@ -0,0 +1 @@
{"rustc":12695997420456152265,"features":"[]","target":5868172129772039471,"profile":731176819336294830,"deps":[],"local":{"Precalculated":"0.3.54"},"rustflags":[]}

Двоичный файл не отображается.

Просмотреть файл

@ -0,0 +1 @@
1d5908856df33352

Просмотреть файл

@ -0,0 +1 @@
{"rustc":12695997420456152265,"features":"[]","target":14925319972750055637,"profile":731176819336294830,"deps":[["libsqlite3-sys v0.8.1",2765925838896401487],["rusqlite v0.12.0",14583853518495018373],["time v0.1.38",259793848387565759],["uuid v0.4.0",8998852786929795973]],"local":{"MtimeBased":[[1508242361,0],"/Users/emilytoop/Development/greetings/complex objects/cargo/target/debug/.fingerprint/greetings-96641de78f9ebf32/dep-lib-greetings-96641de78f9ebf32"]},"rustflags":[]}

Двоичный файл не отображается.

Просмотреть файл

@ -0,0 +1 @@
cca344d20a4f40aa

Просмотреть файл

@ -0,0 +1 @@
{"rustc":12695997420456152265,"features":"[\"default\", \"use_std\"]","target":14473354847536643916,"profile":731176819336294830,"deps":[],"local":{"Precalculated":"0.2.32"},"rustflags":[]}

Просмотреть файл

@ -0,0 +1 @@
9f7bf7145586cc87

Просмотреть файл

@ -0,0 +1 @@
{"rustc":0,"features":"","target":0,"profile":0,"deps":[],"local":{"Precalculated":"0.8.1"},"rustflags":[]}

Двоичный файл не отображается.

Просмотреть файл

@ -0,0 +1 @@
4f8c7e5ee58a6226

Просмотреть файл

@ -0,0 +1 @@
{"rustc":12695997420456152265,"features":"[\"bundled\", \"default\", \"gcc\", \"min_sqlite_version_3_6_8\", \"pkg-config\", \"vcpkg\"]","target":8552008163936694488,"profile":731176819336294830,"deps":[],"local":{"Precalculated":"0.8.1"},"rustflags":[]}

Просмотреть файл

@ -0,0 +1 @@
904ae3c512bda1ca

Просмотреть файл

@ -0,0 +1 @@
{"rustc":12695997420456152265,"features":"[\"bundled\", \"default\", \"gcc\", \"min_sqlite_version_3_6_8\", \"pkg-config\", \"vcpkg\"]","target":16909721513117963967,"profile":731176819336294830,"deps":[["gcc v0.3.54",16303564983929150966],["pkg-config v0.3.9",5680356231721676471]],"local":{"Precalculated":"0.8.1"},"rustflags":[]}

Двоичный файл не отображается.

Просмотреть файл

@ -0,0 +1 @@
27de74133ca4c9b9

Просмотреть файл

@ -0,0 +1 @@
{"rustc":12695997420456152265,"features":"[]","target":11676493871770579407,"profile":731176819336294830,"deps":[],"local":{"Precalculated":"0.4.2"},"rustflags":[]}

Двоичный файл не отображается.

Просмотреть файл

@ -0,0 +1 @@
e4c470abfd745a27

Просмотреть файл

@ -0,0 +1 @@
{"rustc":12695997420456152265,"features":"[]","target":3007581672135113081,"profile":731176819336294830,"deps":[["linked-hash-map v0.4.2",13387411945266929191]],"local":{"Precalculated":"0.1.1"},"rustflags":[]}

Двоичный файл не отображается.

Просмотреть файл

@ -0,0 +1 @@
b76e729de5add44e

Просмотреть файл

@ -0,0 +1 @@
{"rustc":12695997420456152265,"features":"[]","target":2822912055033890227,"profile":731176819336294830,"deps":[],"local":{"Precalculated":"0.3.9"},"rustflags":[]}

Двоичный файл не отображается.

Просмотреть файл

@ -0,0 +1 @@
8cc7e09cb3fb2f00

Просмотреть файл

@ -0,0 +1 @@
{"rustc":12695997420456152265,"features":"[]","target":11934438946327451299,"profile":731176819336294830,"deps":[["libc v0.2.32",12267892292853212108]],"local":{"Precalculated":"0.3.17"},"rustflags":[]}

Двоичный файл не отображается.

Просмотреть файл

@ -0,0 +1 @@
85ed39aa814164ca

Просмотреть файл

@ -0,0 +1 @@
{"rustc":12695997420456152265,"features":"[\"bundled\", \"libsqlite3-sys\", \"limits\"]","target":13377436585948723872,"profile":731176819336294830,"deps":[["bitflags v0.9.1",4122432294323704776],["libsqlite3-sys v0.8.1",2765925838896401487],["lru-cache v0.1.1",2835707548234990820],["time v0.1.38",259793848387565759]],"local":{"Precalculated":"0.12.0"},"rustflags":[]}

Двоичный файл не отображается.

Просмотреть файл

@ -0,0 +1 @@
bff8f8ef20f99a03

Просмотреть файл

@ -0,0 +1 @@
{"rustc":12695997420456152265,"features":"[]","target":13877924226513062219,"profile":731176819336294830,"deps":[["libc v0.2.32",12267892292853212108]],"local":{"Precalculated":"0.1.38"},"rustflags":[]}

Двоичный файл не отображается.

Просмотреть файл

@ -0,0 +1 @@
8503fc86ee58e27c

Просмотреть файл

@ -0,0 +1 @@
{"rustc":12695997420456152265,"features":"[\"rand\", \"v4\"]","target":4584561183651667727,"profile":731176819336294830,"deps":[["rand v0.3.17",13506072755095436]],"local":{"Precalculated":"0.4.0"},"rustflags":[]}

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Просмотреть файл

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleIdentifier</key>
<string>com.apple.xcode.dsym.libgreetings-96641de78f9ebf32.dylib</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundlePackageType</key>
<string>dSYM</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>1</string>
</dict>
</plist>

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичные данные
complex objects/cargo/target/debug/libgreetings.a Normal file

Двоичный файл не отображается.

Просмотреть файл

@ -0,0 +1 @@
/Users/emilytoop/Development/greetings/complex\ objects/cargo/target/debug/libgreetings.dylib: /Users/emilytoop/Development/greetings/complex\ objects/cargo/src/categories.rs /Users/emilytoop/Development/greetings/complex\ objects/cargo/src/db.rs /Users/emilytoop/Development/greetings/complex\ objects/cargo/src/utils.rs /Users/emilytoop/Development/greetings/complex\ objects/cargo/src/logins.rs /Users/emilytoop/Development/greetings/complex\ objects/cargo/src/items.rs /Users/emilytoop/Development/greetings/complex\ objects/cargo/src/lib.rs

Двоичные данные
complex objects/cargo/target/debug/libgreetings.dylib Executable file

Двоичный файл не отображается.

Двоичный файл не отображается.

Просмотреть файл

@ -1 +1 @@
/Users/emilytoop/Development/greetings/cargo/target/i386-apple-ios/release/libgreetings.a: /Users/emilytoop/Development/greetings/cargo/src/lib.rs
/Users/emilytoop/Development/greetings/complex\ objects/cargo/target/i386-apple-ios/release/libgreetings.a: /Users/emilytoop/Development/greetings/complex\ objects/cargo/src/logins.rs /Users/emilytoop/Development/greetings/complex\ objects/cargo/src/lib.rs /Users/emilytoop/Development/greetings/complex\ objects/cargo/src/utils.rs /Users/emilytoop/Development/greetings/complex\ objects/cargo/src/db.rs /Users/emilytoop/Development/greetings/complex\ objects/cargo/src/items.rs /Users/emilytoop/Development/greetings/complex\ objects/cargo/src/categories.rs

Двоичный файл не отображается.

Просмотреть файл

@ -0,0 +1 @@
f22997dc4e583bd3

Просмотреть файл

@ -0,0 +1 @@
{"rustc":12695997420456152265,"features":"[]","target":5868172129772039471,"profile":8410117760005530537,"deps":[],"local":{"Precalculated":"0.3.54"},"rustflags":[]}

Просмотреть файл

@ -0,0 +1 @@
453d4066c8f5b3fc

Просмотреть файл

@ -0,0 +1 @@
{"rustc":12695997420456152265,"features":"[\"bundled\", \"default\", \"gcc\", \"min_sqlite_version_3_6_8\", \"pkg-config\", \"vcpkg\"]","target":16909721513117963967,"profile":8410117760005530537,"deps":[["gcc v0.3.54",15220856461360310770],["pkg-config v0.3.9",14652137752737649604]],"local":{"Precalculated":"0.8.1"},"rustflags":[]}

Двоичный файл не отображается.

Просмотреть файл

@ -0,0 +1 @@
c49304e0a7d956cb

Просмотреть файл

@ -0,0 +1 @@
{"rustc":12695997420456152265,"features":"[]","target":2822912055033890227,"profile":8410117760005530537,"deps":[],"local":{"Precalculated":"0.3.9"},"rustflags":[]}

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше